From 46dbf76321d21fb1717de298712100e6661af2e7 Mon Sep 17 00:00:00 2001 From: Nichollette Date: Tue, 11 Jun 2024 11:14:04 -0400 Subject: [PATCH 1/6] adding schema for openapi3.1 --- src/schemas.ini | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/schemas.ini b/src/schemas.ini index f0d7060a..1a526d76 100644 --- a/src/schemas.ini +++ b/src/schemas.ini @@ -2,7 +2,10 @@ [swagger] swagger_v2: https://raw.githubusercontent.com/swagger-api/swagger-editor/v3.6.1/src/plugins/validate-json-schema/structural-validation/swagger2-schema.js -[openapi] -openapi_v3: https://raw.githubusercontent.com/swagger-api/swagger-editor/v3.15.6/src/plugins/json-schema-validator/oas3-schema.yaml +[openapi_v3.0] +openapi_v3.0: https://raw.githubusercontent.com/swagger-api/swagger-editor/v3.15.6/src/plugins/json-schema-validator/oas3-schema.yaml x-translator: https://raw.githubusercontent.com/NCATSTranslator/translator_extensions/production/x-translator/smartapi_x-translator_schema.json x-trapi: https://raw.githubusercontent.com/NCATSTranslator/translator_extensions/production/x-trapi/smartapi_x-trapi_schema.json + +[openapi_v3.1] +openapi_v3.1: https://github.com/swagger-api/validator-badge/blob/b9fd2182ea2ca6da1059c4c001f7514dc317ab22/src/main/resources/schemas/31/official.json \ No newline at end of file From f0fc90811cd09a032e874054ea64ae1ec2f40830 Mon Sep 17 00:00:00 2001 From: Nichollette Date: Wed, 12 Jun 2024 10:15:00 -0400 Subject: [PATCH 2/6] new openapiv3 for validation --- src/schemas.ini | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/schemas.ini b/src/schemas.ini index 1a526d76..cbab1743 100644 --- a/src/schemas.ini +++ b/src/schemas.ini @@ -8,4 +8,6 @@ x-translator: https://raw.githubusercontent.com/NCATSTranslator/translator_exten x-trapi: https://raw.githubusercontent.com/NCATSTranslator/translator_extensions/production/x-trapi/smartapi_x-trapi_schema.json [openapi_v3.1] -openapi_v3.1: https://github.com/swagger-api/validator-badge/blob/b9fd2182ea2ca6da1059c4c001f7514dc317ab22/src/main/resources/schemas/31/official.json \ No newline at end of file +openapi_v3.1: https://raw.githubusercontent.com/swagger-api/validator-badge/v2.1.5/src/main/resources/schemas/31/official.json +x-translator: https://raw.githubusercontent.com/NCATSTranslator/translator_extensions/production/x-translator/smartapi_x-translator_schema.json +x-trapi: https://raw.githubusercontent.com/NCATSTranslator/translator_extensions/production/x-trapi/smartapi_x-trapi_schema.json From cadc4366e654a442060a22cfa772c5fa1410058d Mon Sep 17 00:00:00 2001 From: Nichollette Date: Wed, 12 Jun 2024 16:58:57 -0400 Subject: [PATCH 3/6] adding new testing files --- src/tests/validate/openapi3.1-fail.json | 3325 +++++++++++++++++++++++ src/tests/validate/openapi3.1-pass.json | 1 + 2 files changed, 3326 insertions(+) create mode 100644 src/tests/validate/openapi3.1-fail.json create mode 100644 src/tests/validate/openapi3.1-pass.json diff --git a/src/tests/validate/openapi3.1-fail.json b/src/tests/validate/openapi3.1-fail.json new file mode 100644 index 00000000..d0bf466c --- /dev/null +++ b/src/tests/validate/openapi3.1-fail.json @@ -0,0 +1,3325 @@ +{ + "openapi": "3.1.0", + "info": { + "title": {"Sri-node-normalizer(Trapi v1.4.0)"}, + "x-translator": { + "component": "Utility", + "team": [ + "Standards Reference Implementation Team" + ], + "infores": "infores:sri-node-normalizer" + }, + "x-trapi": { + "version": "1.4.0", + "operations": [ + "annotate_nodes" + ] + }, + "contact": { + "email": "bizon@renci.org", + "name": "Chris Bizon", + "x-id": "https://github.com/cbizon", + "x-role": "responsible developer" + }, + "termsOfService": "https://toss.apps.renci.org/tos?service_long=Node+Normalization&provider_long=the+Translator+Consortium", + "description": "Node Normalization takes a CURIE, and returns:
  1. The preferred CURIE for this entity
  2. All other known equivalent identifiers for the entity
  3. Semantic types for the entity as defined by the BioLink Model
The data served by Node Normalization is created by Babel, which attempts to find identifier equivalences, and makes sure that CURIE prefixes are BioLink Model Compliant. To determine whether Node Normalization is likely to be useful, check /get_semantic_types, which lists the BioLink semantic types for which normalization has been attempted, and /get_curie_prefixes, which lists the number of times each prefix is used for a semantic type." + }, + "paths": { + "/query": { + "post": { + "summary": "Normalizes a TRAPI response object", + "description": "Returns the response object with a merged knowledge graph and query graph bindings", + "operationId": "query_query_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Query" + }, + "examples": { + "Drugs that treat essential hypertension": { + "summary": "A result from a query for drugs that treat essential hypertension.", + "value": { + "message": { + "query_graph": { + "nodes": { + "n0": { + "categories": [ + "biolink:Drug" + ], + "is_set": false, + "constraints": [] + }, + "n1": { + "ids": [ + "MONDO:0001134" + ], + "categories": [ + "biolink:Disease" + ], + "is_set": false, + "constraints": [] + } + }, + "edges": { + "e01": { + "subject": "n0", + "object": "n1", + "predicates": [ + "biolink:treats" + ], + "attribute_constraints": [], + "qualifier_constraints": [] + } + } + }, + "knowledge_graph": { + "nodes": { + "DRUGBANK:DB00966": { + "categories": [ + "biolink:Drug" + ], + "name": "Telmisartan" + }, + "DRUGBANK:DB00678": { + "categories": [ + "biolink:Drug" + ], + "name": "Losartan" + } + }, + "edges": { + "e3": { + "subject": "DRUGBANK:DB00966", + "object": "MONDO:0001134", + "predicate": "biolink:treats", + "sources": [ + { + "resource_id": "infores:openpredict", + "resource_role": "primary_knowledge_source" + }, + { + "resource_id": "infores:cohd", + "resource_role": "supporting_data_source" + } + ], + "attributes": [ + { + "description": "model_id", + "attribute_type_id": "EDAM:data_1048", + "value": "openpredict_baseline" + }, + { + "attribute_type_id": "biolink:agent_type", + "value": "computational_model", + "attribute_source": "infores:openpredict" + }, + { + "attribute_type_id": "biolink:knowledge_level", + "value": "prediction", + "attribute_source": "infores:openpredict" + } + ] + }, + "e4": { + "subject": "DRUGBANK:DB00678", + "object": "MONDO:0001134", + "predicate": "biolink:treats", + "sources": [ + { + "resource_id": "infores:openpredict", + "resource_role": "primary_knowledge_source" + }, + { + "resource_id": "infores:cohd", + "resource_role": "supporting_data_source" + } + ], + "attributes": [ + { + "description": "model_id", + "attribute_type_id": "EDAM:data_1048", + "value": "openpredict_baseline" + }, + { + "attribute_type_id": "biolink:agent_type", + "value": "computational_model", + "attribute_source": "infores:openpredict" + }, + { + "attribute_type_id": "biolink:knowledge_level", + "value": "prediction", + "attribute_source": "infores:openpredict" + } + ] + } + } + }, + "results": [ + { + "node_bindings": { + "n0": [ + { + "id": "DRUGBANK:DB00966" + } + ], + "n1": [ + { + "id": "MONDO:0001134" + } + ] + }, + "analyses": [ + { + "resource_id": "infores:openpredict", + "score": "0.7155011411093821", + "scoring_method": "Model confidence between 0 and 1", + "edge_bindings": { + "e01": [ + { + "id": "e3" + } + ] + } + } + ] + }, + { + "node_bindings": { + "n0": [ + { + "id": "DRUGBANK:DB00678" + } + ], + "n1": [ + { + "id": "MONDO:0001134" + } + ] + }, + "analyses": [ + { + "resource_id": "infores:openpredict", + "score": "0.682246949249408", + "scoring_method": "Model confidence between 0 and 1", + "edge_bindings": { + "e01": [ + { + "id": "e4" + } + ] + } + } + ] + } + ] + } + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Query" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/asyncquery": { + "post": { + "summary": "Normalizes a TRAPI response object", + "description": "Returns the response object with a merged knowledge graph and query graph bindings", + "operationId": "async_query_asyncquery_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AsyncQuery" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/get_allowed_conflations": { + "get": { + "summary": "Get the available conflations", + "description": "The returned strings can be included in an option to /get_normalized_nodes", + "operationId": "get_conflations_get_allowed_conflations_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConflationList" + } + } + } + } + } + } + }, + "/get_normalized_nodes": { + "get": { + "summary": "Get the equivalent identifiers and semantic types for the curie(s) entered.", + "description": "Returns the equivalent identifiers and semantic types for the curie(s)", + "operationId": "get_normalized_node_handler_get_normalized_nodes_get", + "parameters": [ + { + "description": "List of curies to normalize", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "minItems": 1, + "title": "Curie", + "description": "List of curies to normalize", + "default": [] + }, + "example": [ + "MESH:D014867", + "NCIT:C34373" + ], + "name": "curie", + "in": "query" + }, + { + "description": "Whether to apply gene/protein conflation", + "required": false, + "schema": { + "type": "boolean", + "title": "Conflate", + "description": "Whether to apply gene/protein conflation", + "default": true + }, + "name": "conflate", + "in": "query" + }, + { + "description": "Whether to apply drug/chemical conflation", + "required": false, + "schema": { + "type": "boolean", + "title": "Drug Chemical Conflate", + "description": "Whether to apply drug/chemical conflation", + "default": false + }, + "name": "drug_chemical_conflate", + "in": "query" + }, + { + "description": "Whether to return curie descriptions when possible", + "required": false, + "schema": { + "type": "boolean", + "title": "Description", + "description": "Whether to return curie descriptions when possible", + "default": false + }, + "name": "description", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "summary": "Get the equivalent identifiers and semantic types for the curie(s) entered.", + "description": "Returns the equivalent identifiers and semantic types for the curie(s). Use the `conflate` flag to choose whether to apply conflation.", + "operationId": "get_normalized_node_handler_get_normalized_nodes_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CurieList" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/get_semantic_types": { + "get": { + "summary": "Return a list of BioLink semantic types for which normalization has been attempted.", + "description": "Returns a distinct set of the semantic types discovered in the compendium data.", + "operationId": "get_semantic_types_handler_get_semantic_types_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SemanticTypes" + } + } + } + } + } + } + }, + "/get_curie_prefixes": { + "get": { + "summary": "Return the number of times each CURIE prefix appears in an equivalent identifier for a semantic type", + "description": "Returns the curies and their hit count for a semantic type(s).", + "operationId": "get_curie_prefixes_handler_get_curie_prefixes_get", + "parameters": [ + { + "description": "e.g. biolink:ChemicalEntity, biolink:AnatomicalEntity", + "required": false, + "schema": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Semantic Type", + "description": "e.g. biolink:ChemicalEntity, biolink:AnatomicalEntity", + "default": [] + }, + "name": "semantic_type", + "in": "query" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "additionalProperties": { + "$ref": "#/components/schemas/CuriePivot" + }, + "type": "object", + "title": "Response Get Curie Prefixes Handler Get Curie Prefixes Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "summary": "Return the number of times each CURIE prefix appears in an equivalent identifier for a semantic type", + "description": "Returns the curies and their hit count for a semantic type(s).", + "operationId": "get_curie_prefixes_handler_get_curie_prefixes_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SemanticTypesInput" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "additionalProperties": { + "$ref": "#/components/schemas/CuriePivot" + }, + "type": "object", + "title": "Response Get Curie Prefixes Handler Get Curie Prefixes Post" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AboveOrBelowEnum": { + "type": "string", + "enum": [ + "above", + "below" + ], + "title": "AboveOrBelowEnum", + "description": "'above' or 'below'." + }, + "Analysis": { + "properties": { + "resource_id": { + "type": "string", + "title": "resource infores" + }, + "edge_bindings": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableMapping_str__HashableSet_EdgeBinding__" + } + ], + "title": "list of edge bindings" + }, + "score": { + "type": "number", + "format": "float", + "title": "Score" + }, + "support_graphs": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_str_" + } + ], + "title": "Support Graphs", + "nullable": true + }, + "scoring_method": { + "type": "string", + "title": "Scoring Method", + "nullable": true + }, + "attributes": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_Attribute_" + } + ], + "title": "Attributes", + "nullable": true + } + }, + "type": "object", + "required": [ + "resource_id", + "edge_bindings" + ], + "title": "analysis", + "description": "Analysis." + }, + "AnnotateEdgesParameters": { + "properties": { + "attributes": { + "$ref": "#/components/schemas/HashableSequence_str_" + } + }, + "type": "object", + "title": "AnnotateEdgesParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "AnnotateNodesParameters": { + "properties": { + "attributes": { + "$ref": "#/components/schemas/HashableSequence_str_" + } + }, + "type": "object", + "title": "AnnotateNodesParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "AscOrDescEnum": { + "type": "string", + "enum": [ + "ascending", + "descending" + ], + "title": "AscOrDescEnum", + "description": "'ascending' or 'descending'." + }, + "AsyncQuery": { + "properties": { + "callback": { + "type": "string", + "pattern": "^https?://", + "format": "uri", + "title": "Callback" + }, + "message": { + "allOf": [ + { + "$ref": "#/components/schemas/Message" + } + ], + "title": "message" + }, + "log_level": { + "allOf": [ + { + "$ref": "#/components/schemas/LogLevel" + } + ], + "title": "log_level", + "nullable": true + }, + "workflow": { + "$ref": "#/components/schemas/Workflow" + } + }, + "type": "object", + "required": [ + "callback", + "message" + ], + "title": "query", + "description": "AsyncQuery.", + "x-body-name": "request_body" + }, + "Attribute": { + "properties": { + "attribute_type_id": { + "type": "string", + "title": "type" + }, + "value": { + "title": "value" + }, + "value_type_id": { + "type": "string", + "title": "value_type_id", + "nullable": true + }, + "original_attribute_name": { + "type": "string", + "title": "Original Attribute Name", + "nullable": true + }, + "value_url": { + "type": "string", + "title": "Value Url", + "nullable": true + }, + "attribute_source": { + "type": "string", + "title": "Attribute Source", + "nullable": true + }, + "description": { + "type": "string", + "title": "Description", + "nullable": true + }, + "attributes": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_SubAttribute_" + } + ], + "title": "Attributes", + "nullable": true + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "attribute_type_id", + "value" + ], + "title": "Attribute", + "description": "Node/edge attribute." + }, + "AttributeConstraint": { + "properties": { + "name": { + "type": "string", + "title": "name", + "nullable": false + }, + "id": { + "type": "string", + "title": "id", + "nullable": false + }, + "not": { + "type": "boolean", + "title": "not", + "default": false + }, + "operator": { + "allOf": [ + { + "$ref": "#/components/schemas/Operator" + } + ], + "title": "operator" + }, + "value": { + "title": "value" + }, + "unit_id": { + "title": "unit_id" + }, + "unit_name": { + "title": "unit_name" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "name", + "id", + "operator", + "value" + ], + "title": "AttributeConstraint", + "description": "QNode or QEdge attribute constraint." + }, + "AuxiliaryGraph": { + "properties": { + "edges": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_str_" + } + ], + "title": "edges in auxiliary graph" + }, + "attributes": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_Attribute_" + } + ], + "title": "Attributes", + "nullable": true + } + }, + "type": "object", + "required": [ + "edges" + ], + "title": "auxiliary graph", + "description": "Auxiliary Graph" + }, + "AuxiliaryGraphs": { + "$ref": "#/components/schemas/HashableMapping_str__AuxiliaryGraph_", + "title": "auxiliary graphs", + "description": "Auxiliary Graphs" + }, + "ConflationList": { + "properties": { + "conflations": { + "items": {}, + "type": "array", + "title": "Conflations" + } + }, + "type": "object", + "required": [ + "conflations" + ], + "title": "ConflationList" + }, + "CurieList": { + "properties": { + "curies": { + "items": { + "type": "string" + }, + "type": "array", + "minItems": 1, + "title": "List of CURIEs to normalize" + }, + "conflate": { + "type": "boolean", + "title": "Whether to apply gene/protein conflation", + "default": true + }, + "description": { + "type": "boolean", + "title": "Whether to return CURIE descriptions when possible", + "default": false + }, + "drug_chemical_conflate": { + "type": "boolean", + "title": "Whether to apply drug/chemical conflation", + "default": false + } + }, + "type": "object", + "required": [ + "curies" + ], + "title": "CurieList", + "description": "Curie list input model", + "example": { + "curies": [ + "MESH:D014867", + "NCIT:C34373" + ], + "conflate": true, + "description": false, + "drug_chemical_conflate": false + } + }, + "CuriePivot": { + "properties": { + "curie_prefix": { + "additionalProperties": { + "type": "string" + }, + "type": "object", + "title": "Curie Prefix" + } + }, + "type": "object", + "required": [ + "curie_prefix" + ], + "title": "CuriePivot" + }, + "Edge": { + "properties": { + "subject": { + "type": "string", + "title": "subject node id" + }, + "object": { + "type": "string", + "title": "object node id" + }, + "predicate": { + "type": "string", + "pattern": "^biolink:[a-z][a-z_]*$", + "title": "edge predicate" + }, + "sources": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_RetrievalSource_" + } + ], + "title": "list of source retrievals" + }, + "qualifiers": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_Qualifier_" + } + ], + "title": "Qualifiers", + "nullable": true + }, + "attributes": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_Attribute_" + } + ], + "title": "Attributes", + "nullable": true + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "subject", + "object", + "predicate", + "sources" + ], + "title": "knowledge-graph edge", + "description": "Knowledge graph edge." + }, + "EdgeBinding": { + "properties": { + "id": { + "type": "string", + "title": "knowledge graph id" + }, + "attributes": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_Attribute_" + } + ], + "title": "Attributes", + "nullable": true + } + }, + "type": "object", + "required": [ + "id" + ], + "title": "edge binding", + "description": "Edge binding.", + "example": { + "id": "string" + } + }, + "EnrichResultsParameters": { + "properties": { + "pvalue_threshold": { + "type": "number", + "maximum": 1.0, + "minimum": 0.0, + "title": "Pvalue Threshold", + "default": 1e-06 + }, + "qnode_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "predicates_to_exclude": { + "$ref": "#/components/schemas/HashableSequence_BiolinkPredicate_" + } + }, + "type": "object", + "title": "EnrichResultsParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "FillAllowParameters": { + "properties": { + "allowlist": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "qedge_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + } + }, + "additionalProperties": false, + "type": "object", + "title": "FillAllowParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "FillDenyParameters": { + "properties": { + "denylist": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "qedge_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + } + }, + "additionalProperties": false, + "type": "object", + "title": "FillDenyParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "FillParameters": { + "anyOf": [ + { + "$ref": "#/components/schemas/FillAllowParameters" + }, + { + "$ref": "#/components/schemas/FillDenyParameters" + } + ], + "title": "FillParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "FilterKgraphContinuousKedgeAttributeParameters": { + "properties": { + "edge_attribute": { + "type": "string", + "title": "Edge Attribute" + }, + "threshold": { + "type": "number", + "title": "Threshold" + }, + "remove_above_or_below": { + "$ref": "#/components/schemas/AboveOrBelowEnum" + }, + "qedge_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "qnode_keys": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_str_" + } + ], + "title": "Qnode Keys", + "default": [] + } + }, + "type": "object", + "required": [ + "edge_attribute", + "threshold", + "remove_above_or_below" + ], + "title": "FilterKgraphContinuousKedgeAttributeParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "FilterKgraphDiscreteKedgeAttributeParameters": { + "properties": { + "edge_attribute": { + "type": "string", + "title": "Edge Attribute" + }, + "remove_value": { + "title": "Remove Value" + }, + "qedge_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "qnode_keys": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_str_" + } + ], + "title": "Qnode Keys", + "default": [] + } + }, + "type": "object", + "required": [ + "edge_attribute" + ], + "title": "FilterKgraphDiscreteKedgeAttributeParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "FilterKgraphDiscreteKnodeAttributeParameters": { + "properties": { + "node_attribute": { + "type": "string", + "title": "Node Attribute" + }, + "remove_value": { + "title": "Remove Value" + }, + "qnode_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + } + }, + "type": "object", + "required": [ + "node_attribute" + ], + "title": "FilterKgraphDiscreteKnodeAttributeParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "FilterKgraphPercentileParameters": { + "properties": { + "edge_attribute": { + "type": "string", + "title": "Edge Attribute" + }, + "threshold": { + "type": "number", + "maximum": 100.0, + "minimum": 0.0, + "title": "Threshold", + "default": 95 + }, + "remove_above_or_below": { + "allOf": [ + { + "$ref": "#/components/schemas/AboveOrBelowEnum" + } + ], + "default": "below" + }, + "qedge_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "qnode_keys": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_str_" + } + ], + "title": "Qnode Keys", + "default": [] + } + }, + "type": "object", + "required": [ + "edge_attribute" + ], + "title": "FilterKgraphPercentileParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "FilterKgraphStdDevParameters": { + "properties": { + "edge_attribute": { + "type": "string", + "title": "Edge Attribute" + }, + "plus_or_minus_std_dev": { + "allOf": [ + { + "$ref": "#/components/schemas/PlusOrMinusEnum" + } + ], + "default": "plus" + }, + "num_sigma": { + "type": "number", + "minimum": 0.0, + "title": "Num Sigma", + "default": 1 + }, + "remove_above_or_below": { + "allOf": [ + { + "$ref": "#/components/schemas/AboveOrBelowEnum" + } + ], + "default": "below" + }, + "qedge_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "qnode_keys": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_str_" + } + ], + "title": "Qnode Keys", + "default": [] + } + }, + "type": "object", + "required": [ + "edge_attribute" + ], + "title": "FilterKgraphStdDevParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "FilterKgraphTopNParameters": { + "properties": { + "edge_attribute": { + "type": "string", + "title": "Edge Attribute" + }, + "max_edges": { + "type": "integer", + "maximum": 0.0, + "title": "Max Edges", + "default": 50 + }, + "remove_top_or_bottom": { + "allOf": [ + { + "$ref": "#/components/schemas/TopOrBottomEnum" + } + ], + "default": "top" + }, + "qedge_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "qnode_keys": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_str_" + } + ], + "title": "Qnode Keys", + "default": [] + } + }, + "type": "object", + "required": [ + "edge_attribute" + ], + "title": "FilterKgraphTopNParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "FilterResultsTopNParameters": { + "properties": { + "max_results": { + "type": "integer", + "minimum": 0.0, + "title": "Max Results" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "max_results" + ], + "title": "FilterResultsTopNParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "HashableMapping_CURIE__Node_": { + "additionalProperties": { + "$ref": "#/components/schemas/Node" + }, + "type": "object", + "title": "HashableMapping[CURIE, Node]", + "description": "Custom class that implements MutableMapping and is hashable", + "default": {} + }, + "HashableMapping_EdgeIdentifier__Edge_": { + "additionalProperties": { + "$ref": "#/components/schemas/Edge" + }, + "type": "object", + "title": "HashableMapping[EdgeIdentifier, Edge]", + "description": "Custom class that implements MutableMapping and is hashable", + "default": {} + }, + "HashableMapping_str__AuxiliaryGraph_": { + "additionalProperties": { + "$ref": "#/components/schemas/AuxiliaryGraph" + }, + "type": "object", + "title": "HashableMapping[str, AuxiliaryGraph]", + "description": "Custom class that implements MutableMapping and is hashable", + "default": {} + }, + "HashableMapping_str__HashableSet_EdgeBinding__": { + "additionalProperties": { + "$ref": "#/components/schemas/HashableSet_EdgeBinding_" + }, + "type": "object", + "title": "HashableMapping[str, HashableSet[EdgeBinding]]", + "description": "Custom class that implements MutableMapping and is hashable", + "default": {} + }, + "HashableMapping_str__HashableSet_NodeBinding__": { + "additionalProperties": { + "$ref": "#/components/schemas/HashableSet_NodeBinding_" + }, + "type": "object", + "title": "HashableMapping[str, HashableSet[NodeBinding]]", + "description": "Custom class that implements MutableMapping and is hashable", + "default": {} + }, + "HashableMapping_str__QEdge_": { + "additionalProperties": { + "$ref": "#/components/schemas/QEdge" + }, + "type": "object", + "title": "HashableMapping[str, QEdge]", + "description": "Custom class that implements MutableMapping and is hashable", + "default": {} + }, + "HashableMapping_str__QNode_": { + "additionalProperties": { + "$ref": "#/components/schemas/QNode" + }, + "type": "object", + "title": "HashableMapping[str, QNode]", + "description": "Custom class that implements MutableMapping and is hashable", + "default": {} + }, + "HashableSequence_AttributeConstraint_": { + "items": { + "$ref": "#/components/schemas/AttributeConstraint" + }, + "type": "array", + "title": "HashableSequence[AttributeConstraint]", + "description": "Custom class that implements MutableSequence and is hashable", + "default": [] + }, + "HashableSequence_BiolinkEntity_": { + "items": { + "type": "string", + "pattern": "^biolink:[A-Z][a-zA-Z]*$" + }, + "type": "array", + "title": "HashableSequence[BiolinkEntity]", + "description": "Custom class that implements MutableSequence and is hashable", + "default": [] + }, + "HashableSequence_BiolinkPredicate_": { + "items": { + "type": "string", + "pattern": "^biolink:[a-z][a-z_]*$" + }, + "type": "array", + "title": "HashableSequence[BiolinkPredicate]", + "description": "Custom class that implements MutableSequence and is hashable", + "default": [] + }, + "HashableSequence_CURIE_": { + "items": { + "type": "string" + }, + "type": "array", + "title": "HashableSequence[CURIE]", + "description": "Custom class that implements MutableSequence and is hashable", + "default": [] + }, + "HashableSequence_Operation_": { + "items": { + "$ref": "#/components/schemas/Operation" + }, + "type": "array", + "title": "HashableSequence[Operation]", + "description": "Custom class that implements MutableSequence and is hashable", + "default": [] + }, + "HashableSequence_QualifierConstraint_": { + "items": { + "$ref": "#/components/schemas/QualifierConstraint" + }, + "type": "array", + "title": "HashableSequence[QualifierConstraint]", + "description": "Custom class that implements MutableSequence and is hashable", + "default": [] + }, + "HashableSequence_Qualifier_": { + "items": { + "$ref": "#/components/schemas/Qualifier" + }, + "type": "array", + "title": "HashableSequence[Qualifier]", + "description": "Custom class that implements MutableSequence and is hashable", + "default": [] + }, + "HashableSequence_RecursiveAttribute_": { + "items": { + "$ref": "#/components/schemas/RecursiveAttribute" + }, + "type": "array", + "title": "HashableSequence[RecursiveAttribute]", + "description": "Custom class that implements MutableSequence and is hashable", + "default": [] + }, + "HashableSequence_Result_": { + "items": { + "$ref": "#/components/schemas/Result" + }, + "type": "array", + "title": "HashableSequence[Result]", + "description": "Custom class that implements MutableSequence and is hashable", + "default": [] + }, + "HashableSequence_SubAttribute_": { + "items": { + "$ref": "#/components/schemas/SubAttribute" + }, + "type": "array", + "title": "HashableSequence[SubAttribute]", + "description": "Custom class that implements MutableSequence and is hashable", + "default": [] + }, + "HashableSequence_str_": { + "items": { + "type": "string" + }, + "type": "array", + "title": "HashableSequence[str]", + "description": "Custom class that implements MutableSequence and is hashable", + "default": [] + }, + "HashableSet_Analysis_": { + "items": { + "$ref": "#/components/schemas/Analysis" + }, + "type": "array", + "uniqueItems": true, + "title": "HashableSet[Analysis]", + "description": "Custom class that implements MutableSet and is hashable", + "default": [] + }, + "HashableSet_Attribute_": { + "items": { + "$ref": "#/components/schemas/Attribute" + }, + "type": "array", + "uniqueItems": true, + "title": "HashableSet[Attribute]", + "description": "Custom class that implements MutableSet and is hashable", + "default": [] + }, + "HashableSet_BiolinkEntity_": { + "items": { + "type": "string", + "pattern": "^biolink:[A-Z][a-zA-Z]*$" + }, + "type": "array", + "uniqueItems": true, + "title": "HashableSet[BiolinkEntity]", + "description": "Custom class that implements MutableSet and is hashable", + "default": [] + }, + "HashableSet_CURIE_": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true, + "title": "HashableSet[CURIE]", + "description": "Custom class that implements MutableSet and is hashable", + "default": [] + }, + "HashableSet_EdgeBinding_": { + "items": { + "$ref": "#/components/schemas/EdgeBinding" + }, + "type": "array", + "uniqueItems": true, + "title": "HashableSet[EdgeBinding]", + "description": "Custom class that implements MutableSet and is hashable", + "default": [] + }, + "HashableSet_NodeBinding_": { + "items": { + "$ref": "#/components/schemas/NodeBinding" + }, + "type": "array", + "uniqueItems": true, + "title": "HashableSet[NodeBinding]", + "description": "Custom class that implements MutableSet and is hashable", + "default": [] + }, + "HashableSet_Qualifier_": { + "items": { + "$ref": "#/components/schemas/Qualifier" + }, + "type": "array", + "uniqueItems": true, + "title": "HashableSet[Qualifier]", + "description": "Custom class that implements MutableSet and is hashable", + "default": [] + }, + "HashableSet_RetrievalSource_": { + "items": { + "$ref": "#/components/schemas/RetrievalSource" + }, + "type": "array", + "uniqueItems": true, + "title": "HashableSet[RetrievalSource]", + "description": "Custom class that implements MutableSet and is hashable", + "default": [] + }, + "HashableSet_str_": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true, + "title": "HashableSet[str]", + "description": "Custom class that implements MutableSet and is hashable", + "default": [] + }, + "KnowledgeGraph": { + "properties": { + "nodes": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableMapping_CURIE__Node_" + } + ], + "title": "nodes" + }, + "edges": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableMapping_EdgeIdentifier__Edge_" + } + ], + "title": "edges" + } + }, + "type": "object", + "required": [ + "nodes", + "edges" + ], + "title": "knowledge graph", + "description": "Knowledge graph." + }, + "KnowledgeType": { + "type": "string", + "enum": [ + "lookup", + "inferred" + ], + "title": "KnowledgeType", + "description": "Knowledge Type." + }, + "LogLevel": { + "$ref": "#/components/schemas/LogLevelEnum", + "title": "LogLevel", + "description": "Log level." + }, + "LogLevelEnum": { + "type": "string", + "enum": [ + "ERROR", + "WARNING", + "INFO", + "DEBUG" + ], + "title": "LogLevelEnum", + "description": "Log level." + }, + "Message": { + "properties": { + "query_graph": { + "allOf": [ + { + "$ref": "#/components/schemas/QueryGraph" + } + ], + "title": "query graph", + "nullable": true + }, + "knowledge_graph": { + "allOf": [ + { + "$ref": "#/components/schemas/KnowledgeGraph" + } + ], + "title": "knowledge graph", + "nullable": true + }, + "results": { + "allOf": [ + { + "$ref": "#/components/schemas/Results" + } + ], + "title": "list of results", + "nullable": true + }, + "auxiliary_graphs": { + "allOf": [ + { + "$ref": "#/components/schemas/AuxiliaryGraphs" + } + ], + "title": "dict of auxiliary graphs", + "nullable": true + } + }, + "additionalProperties": false, + "type": "object", + "title": "message", + "description": "Message." + }, + "Node": { + "properties": { + "categories": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_BiolinkEntity_" + } + ], + "title": "categories", + "nullable": true + }, + "name": { + "type": "string", + "title": "Name", + "nullable": true + }, + "attributes": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_Attribute_" + } + ], + "title": "Attributes", + "nullable": true + } + }, + "additionalProperties": false, + "type": "object", + "title": "knowledge-graph node", + "description": "Knowledge graph node.", + "example": { + "category": "string" + } + }, + "NodeBinding": { + "properties": { + "id": { + "type": "string", + "title": "knowledge graph id" + }, + "query_id": { + "type": "string", + "title": "query graph id" + }, + "attributes": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_Attribute_" + } + ], + "title": "Attributes", + "nullable": true + } + }, + "type": "object", + "required": [ + "id" + ], + "title": "node binding", + "description": "Node binding.", + "example": { + "id": "x:string" + } + }, + "Operation": { + "anyOf": [ + { + "$ref": "#/components/schemas/OperationAnnotate" + }, + { + "$ref": "#/components/schemas/OperationAnnotateEdges" + }, + { + "$ref": "#/components/schemas/OperationAnnotateNodes" + }, + { + "$ref": "#/components/schemas/OperationBind" + }, + { + "$ref": "#/components/schemas/OperationCompleteResults" + }, + { + "$ref": "#/components/schemas/OperationEnrichResults" + }, + { + "$ref": "#/components/schemas/OperationFill" + }, + { + "$ref": "#/components/schemas/OperationFilterKgraph" + }, + { + "$ref": "#/components/schemas/OperationFilterKgraphContinuousKedgeAttribute" + }, + { + "$ref": "#/components/schemas/OperationFilterKgraphDiscreteKedgeAttribute" + }, + { + "$ref": "#/components/schemas/OperationFilterKgraphDiscreteKnodeAttribute" + }, + { + "$ref": "#/components/schemas/OperationFilterKgraphOrphans" + }, + { + "$ref": "#/components/schemas/OperationFilterKgraphPercentile" + }, + { + "$ref": "#/components/schemas/OperationFilterKgraphStdDev" + }, + { + "$ref": "#/components/schemas/OperationFilterKgraphTopN" + }, + { + "$ref": "#/components/schemas/OperationFilterResults" + }, + { + "$ref": "#/components/schemas/OperationFilterResultsTopN" + }, + { + "$ref": "#/components/schemas/OperationLookup" + }, + { + "$ref": "#/components/schemas/OperationOverlay" + }, + { + "$ref": "#/components/schemas/OperationOverlayComputeJaccard" + }, + { + "$ref": "#/components/schemas/OperationOverlayComputeNgd" + }, + { + "$ref": "#/components/schemas/OperationOverlayConnectKnodes" + }, + { + "$ref": "#/components/schemas/OperationOverlayFisherExactTest" + }, + { + "$ref": "#/components/schemas/OperationRestate" + }, + { + "$ref": "#/components/schemas/OperationScore" + }, + { + "$ref": "#/components/schemas/OperationSortResults" + }, + { + "$ref": "#/components/schemas/OperationSortResultsEdgeAttribute" + }, + { + "$ref": "#/components/schemas/OperationSortResultsNodeAttribute" + }, + { + "$ref": "#/components/schemas/OperationSortResultsScore" + } + ], + "title": "Operation", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationAnnotate": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/annotate" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationAnnotate", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationAnnotateEdges": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/annotate_edges" + }, + "parameters": { + "$ref": "#/components/schemas/AnnotateEdgesParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationAnnotateEdges", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationAnnotateNodes": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/annotate_nodes" + }, + "parameters": { + "$ref": "#/components/schemas/AnnotateNodesParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationAnnotateNodes", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationBind": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/bind" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationBind", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationCompleteResults": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/complete_results" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationCompleteResults", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationEnrichResults": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/enrich_results" + }, + "parameters": { + "$ref": "#/components/schemas/EnrichResultsParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationEnrichResults", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationFill": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/fill" + }, + "parameters": { + "$ref": "#/components/schemas/FillParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationFill", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationFilterKgraph": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/filter_kgraph" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationFilterKgraph", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationFilterKgraphContinuousKedgeAttribute": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/filter_kgraph_continuous_kedge_attribute" + }, + "parameters": { + "$ref": "#/components/schemas/FilterKgraphContinuousKedgeAttributeParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationFilterKgraphContinuousKedgeAttribute", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationFilterKgraphDiscreteKedgeAttribute": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/filter_kgraph_discrete_kedge_attribute" + }, + "parameters": { + "$ref": "#/components/schemas/FilterKgraphDiscreteKedgeAttributeParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationFilterKgraphDiscreteKedgeAttribute", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationFilterKgraphDiscreteKnodeAttribute": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/filter_kgraph_discrete_knode_attribute" + }, + "parameters": { + "$ref": "#/components/schemas/FilterKgraphDiscreteKnodeAttributeParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationFilterKgraphDiscreteKnodeAttribute", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationFilterKgraphOrphans": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/filter_kgraph_orphans" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationFilterKgraphOrphans", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationFilterKgraphPercentile": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/filter_kgraph_percentile" + }, + "parameters": { + "$ref": "#/components/schemas/FilterKgraphPercentileParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationFilterKgraphPercentile", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationFilterKgraphStdDev": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/filter_kgraph_std_dev" + }, + "parameters": { + "$ref": "#/components/schemas/FilterKgraphStdDevParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationFilterKgraphStdDev", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationFilterKgraphTopN": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/filter_kgraph_top_n" + }, + "parameters": { + "$ref": "#/components/schemas/FilterKgraphTopNParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationFilterKgraphTopN", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationFilterResults": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/filter_results" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationFilterResults", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationFilterResultsTopN": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/filter_results_top_n" + }, + "parameters": { + "$ref": "#/components/schemas/FilterResultsTopNParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationFilterResultsTopN", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationLookup": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/lookup" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationLookup", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationOverlay": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/overlay" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationOverlay", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationOverlayComputeJaccard": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/overlay_compute_jaccard" + }, + "parameters": { + "$ref": "#/components/schemas/OverlayComputeJaccardParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationOverlayComputeJaccard", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationOverlayComputeNgd": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/overlay_compute_ngd" + }, + "parameters": { + "$ref": "#/components/schemas/OverlayComputeNgdParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationOverlayComputeNgd", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationOverlayConnectKnodes": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/overlay_connect_knodes" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationOverlayConnectKnodes", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationOverlayFisherExactTest": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/overlay_fisher_exact_test" + }, + "parameters": { + "$ref": "#/components/schemas/OverlayFisherExactTestParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationOverlayFisherExactTest", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationRestate": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/restate" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationRestate", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationScore": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/score" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationScore", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationSortResults": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/sort_results" + }, + "parameters": { + "title": "Parameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id" + ], + "title": "OperationSortResults", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationSortResultsEdgeAttribute": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/sort_results_edge_attribute" + }, + "parameters": { + "$ref": "#/components/schemas/SortResultsEdgeAttributeParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationSortResultsEdgeAttribute", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationSortResultsNodeAttribute": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/sort_results_node_attribute" + }, + "parameters": { + "$ref": "#/components/schemas/SortResultsNodeAttributeParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationSortResultsNodeAttribute", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OperationSortResultsScore": { + "properties": { + "runner_parameters": { + "$ref": "#/components/schemas/RunnerParameters" + }, + "id": { + "$ref": "#/components/schemas/sort_results_score" + }, + "parameters": { + "$ref": "#/components/schemas/SortResultsScoreParameters" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "id", + "parameters" + ], + "title": "OperationSortResultsScore", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "Operator": { + "type": "string", + "enum": [ + "==", + "===", + ">", + "<", + "matches" + ], + "title": "Operator", + "description": "Operator." + }, + "OverlayComputeJaccardParameters": { + "properties": { + "intermediate_node_key": { + "type": "string", + "title": "Intermediate Node Key" + }, + "end_node_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "virtual_relation_label": { + "type": "string", + "title": "Virtual Relation Label" + } + }, + "type": "object", + "required": [ + "intermediate_node_key", + "end_node_keys", + "virtual_relation_label" + ], + "title": "OverlayComputeJaccardParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OverlayComputeNgdParameters": { + "properties": { + "qnode_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "virtual_relation_label": { + "type": "string", + "title": "Virtual Relation Label" + } + }, + "type": "object", + "required": [ + "qnode_keys", + "virtual_relation_label" + ], + "title": "OverlayComputeNgdParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "OverlayFisherExactTestParameters": { + "properties": { + "subject_qnode_key": { + "type": "string", + "title": "Subject Qnode Key" + }, + "object_qnode_key": { + "type": "string", + "title": "Object Qnode Key" + }, + "virtual_relation_label": { + "type": "string", + "title": "Virtual Relation Label" + }, + "rel_edge_key": { + "type": "string", + "title": "Rel Edge Key" + } + }, + "type": "object", + "required": [ + "subject_qnode_key", + "object_qnode_key", + "virtual_relation_label" + ], + "title": "OverlayFisherExactTestParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "PlusOrMinusEnum": { + "type": "string", + "enum": [ + "plus", + "minus" + ], + "title": "PlusOrMinusEnum", + "description": "'plus' or 'minus'." + }, + "QEdge": { + "properties": { + "subject": { + "type": "string", + "title": "subject node id" + }, + "object": { + "type": "string", + "title": "object node id" + }, + "knowledge_type": { + "allOf": [ + { + "$ref": "#/components/schemas/KnowledgeType" + } + ], + "title": "knowledge type" + }, + "predicates": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_BiolinkPredicate_" + } + ], + "title": "predicates", + "nullable": true + }, + "attribute_constraints": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_AttributeConstraint_" + } + ], + "title": "attribute constraints", + "default": { + "__root__": [] + } + }, + "qualifier_constraints": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_QualifierConstraint_" + } + ], + "title": "qualifier constraint", + "default": { + "__root__": [] + } + } + }, + "type": "object", + "required": [ + "subject", + "object" + ], + "title": "query-graph edge", + "description": "Query edge." + }, + "QNode": { + "properties": { + "ids": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_CURIE_" + } + ], + "title": "ids", + "nullable": true + }, + "categories": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_BiolinkEntity_" + } + ], + "title": "categories", + "nullable": true + }, + "is_set": { + "type": "boolean", + "title": "Is Set", + "default": false + }, + "constraints": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_AttributeConstraint_" + } + ], + "title": "attribute constraints", + "default": { + "__root__": [] + } + } + }, + "type": "object", + "title": "query-graph node", + "description": "Query node." + }, + "Qualifier": { + "properties": { + "qualifier_type_id": { + "type": "string", + "pattern": "^biolink:[a-z][a-z_]*$", + "title": "type" + }, + "qualifier_value": { + "type": "string", + "title": "value" + } + }, + "type": "object", + "required": [ + "qualifier_type_id", + "qualifier_value" + ], + "title": "Qualifier", + "description": "Edge qualifier." + }, + "QualifierConstraint": { + "properties": { + "qualifier_set": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_Qualifier_" + } + ], + "title": "qualifier set", + "default": { + "__root__": [] + } + } + }, + "type": "object", + "title": "QualifierConstraint", + "description": "QEdge Qualifier constraint." + }, + "Query": { + "properties": { + "message": { + "allOf": [ + { + "$ref": "#/components/schemas/Message" + } + ], + "title": "message" + }, + "log_level": { + "allOf": [ + { + "$ref": "#/components/schemas/LogLevel" + } + ], + "title": "log_level", + "nullable": true + }, + "workflow": { + "$ref": "#/components/schemas/Workflow" + } + }, + "type": "object", + "required": [ + "message" + ], + "title": "query", + "description": "Request.", + "x-body-name": "request_body" + }, + "QueryGraph": { + "properties": { + "nodes": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableMapping_str__QNode_" + } + ], + "title": "dict of nodes" + }, + "edges": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableMapping_str__QEdge_" + } + ], + "title": "dict of edges" + } + }, + "type": "object", + "required": [ + "nodes", + "edges" + ], + "title": "simple query graph", + "description": "Query graph." + }, + "RecursiveAttribute": { + "properties": { + "attribute_type_id": { + "type": "string", + "title": "type" + }, + "value": { + "title": "value" + }, + "value_type_id": { + "type": "string", + "title": "value_type_id", + "nullable": true + }, + "original_attribute_name": { + "type": "string", + "title": "Original Attribute Name", + "nullable": true + }, + "value_url": { + "type": "string", + "title": "Value Url", + "nullable": true + }, + "attribute_source": { + "type": "string", + "title": "Attribute Source", + "nullable": true + }, + "description": { + "type": "string", + "title": "Description", + "nullable": true + }, + "attributes": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_RecursiveAttribute_" + } + ], + "title": "Attributes", + "nullable": true + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "attribute_type_id", + "value" + ], + "title": "RecursiveAttribute", + "description": "Attribute subattribute." + }, + "ResourceRoleEnum": { + "type": "string", + "enum": [ + "aggregator_knowledge_source", + "primary_knowledge_source", + "supporting_data_source" + ], + "title": "ResourceRoleEnum", + "description": "Types of resources" + }, + "Result": { + "properties": { + "node_bindings": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableMapping_str__HashableSet_NodeBinding__" + } + ], + "title": "list of node bindings" + }, + "analyses": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_Analysis_" + } + ], + "title": "list of anlysis blocks" + } + }, + "type": "object", + "required": [ + "node_bindings", + "analyses" + ], + "title": "result", + "description": "Result." + }, + "Results": { + "$ref": "#/components/schemas/HashableSequence_Result_", + "title": "results", + "description": "Results." + }, + "RetrievalSource": { + "properties": { + "resource_id": { + "type": "string", + "title": "infores for source" + }, + "resource_role": { + "allOf": [ + { + "$ref": "#/components/schemas/ResourceRoleEnum" + } + ], + "title": "source type" + }, + "upstream_resource_ids": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_CURIE_" + } + ], + "title": "Upstream Resource Ids", + "nullable": true + }, + "source_record_urls": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSet_str_" + } + ], + "title": "Source Record Urls", + "nullable": true + } + }, + "type": "object", + "required": [ + "resource_id", + "resource_role" + ], + "title": "RetrievalSource", + "description": "A component of source retrieval provenance" + }, + "RunnerAllowList": { + "properties": { + "allowlist": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "timeout": { + "type": "number", + "title": "Timeout" + } + }, + "additionalProperties": false, + "type": "object", + "title": "RunnerAllowList", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "RunnerDenyList": { + "properties": { + "denylist": { + "$ref": "#/components/schemas/HashableSequence_str_" + }, + "timeout": { + "type": "number", + "title": "Timeout" + } + }, + "additionalProperties": false, + "type": "object", + "title": "RunnerDenyList", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "RunnerParameters": { + "anyOf": [ + { + "$ref": "#/components/schemas/RunnerAllowList" + }, + { + "$ref": "#/components/schemas/RunnerDenyList" + }, + { + "$ref": "#/components/schemas/RunnerTimeout" + } + ], + "title": "RunnerParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "RunnerTimeout": { + "properties": { + "timeout": { + "type": "number", + "title": "Timeout" + } + }, + "additionalProperties": false, + "type": "object", + "title": "RunnerTimeout", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "SemanticTypes": { + "properties": { + "semantic_types": { + "additionalProperties": { + "items": {}, + "type": "array" + }, + "type": "object", + "title": "Semantic Types" + } + }, + "type": "object", + "required": [ + "semantic_types" + ], + "title": "SemanticTypes", + "example": { + "semantic_types": { + "types": [ + "biolink:CellularComponent", + "biolink:NamedThing", + "etc." + ] + } + } + }, + "SemanticTypesInput": { + "properties": { + "semantic_types": { + "items": { + "type": "string" + }, + "type": "array", + "title": "list of semantic types" + } + }, + "type": "object", + "required": [ + "semantic_types" + ], + "title": "SemanticTypesInput", + "description": "Semantic type input model", + "example": { + "semantic_types": [ + "biolink:ChemicalEntity", + "biolink:AnatomicalEntity" + ] + } + }, + "SortResultsEdgeAttributeParameters": { + "properties": { + "edge_attribute": { + "type": "string", + "title": "Edge Attribute" + }, + "ascending_or_descending": { + "$ref": "#/components/schemas/AscOrDescEnum" + }, + "qedge_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + } + }, + "type": "object", + "required": [ + "edge_attribute", + "ascending_or_descending" + ], + "title": "SortResultsEdgeAttributeParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "SortResultsNodeAttributeParameters": { + "properties": { + "node_attribute": { + "type": "string", + "title": "Node Attribute" + }, + "ascending_or_descending": { + "$ref": "#/components/schemas/AscOrDescEnum" + }, + "qnode_keys": { + "$ref": "#/components/schemas/HashableSequence_str_" + } + }, + "type": "object", + "required": [ + "node_attribute", + "ascending_or_descending" + ], + "title": "SortResultsNodeAttributeParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "SortResultsScoreParameters": { + "properties": { + "ascending_or_descending": { + "$ref": "#/components/schemas/AscOrDescEnum" + } + }, + "type": "object", + "required": [ + "ascending_or_descending" + ], + "title": "SortResultsScoreParameters", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "SubAttribute": { + "properties": { + "attribute_type_id": { + "type": "string", + "title": "type" + }, + "value": { + "title": "value" + }, + "value_type_id": { + "type": "string", + "title": "value_type_id", + "nullable": true + }, + "original_attribute_name": { + "type": "string", + "title": "Original Attribute Name", + "nullable": true + }, + "value_url": { + "type": "string", + "title": "Value Url", + "nullable": true + }, + "attribute_source": { + "type": "string", + "title": "Attribute Source", + "nullable": true + }, + "description": { + "type": "string", + "title": "Description", + "nullable": true + }, + "attributes": { + "allOf": [ + { + "$ref": "#/components/schemas/HashableSequence_RecursiveAttribute_" + } + ], + "title": "Attributes", + "nullable": true + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "attribute_type_id", + "value" + ], + "title": "SubAttribute", + "description": "Attribute subattribute." + }, + "TopOrBottomEnum": { + "type": "string", + "enum": [ + "top", + "bottom" + ], + "title": "TopOrBottomEnum", + "description": "'top' or 'bottom'." + }, + "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" + }, + "Workflow": { + "$ref": "#/components/schemas/HashableSequence_Operation_", + "title": "Workflow", + "description": "Custom base model for all classes\n\nThis provides hash and equality methods." + }, + "annotate": { + "type": "string", + "enum": [ + "annotate" + ], + "title": "annotate", + "description": "An enumeration." + }, + "annotate_edges": { + "type": "string", + "enum": [ + "annotate_edges" + ], + "title": "annotate_edges", + "description": "An enumeration." + }, + "annotate_nodes": { + "type": "string", + "enum": [ + "annotate_nodes" + ], + "title": "annotate_nodes", + "description": "An enumeration." + }, + "bind": { + "type": "string", + "enum": [ + "bind" + ], + "title": "bind", + "description": "An enumeration." + }, + "complete_results": { + "type": "string", + "enum": [ + "complete_results" + ], + "title": "complete_results", + "description": "An enumeration." + }, + "enrich_results": { + "type": "string", + "enum": [ + "enrich_results" + ], + "title": "enrich_results", + "description": "An enumeration." + }, + "fill": { + "type": "string", + "enum": [ + "fill" + ], + "title": "fill", + "description": "An enumeration." + }, + "filter_kgraph": { + "type": "string", + "enum": [ + "filter_kgraph" + ], + "title": "filter_kgraph", + "description": "An enumeration." + }, + "filter_kgraph_continuous_kedge_attribute": { + "type": "string", + "enum": [ + "filter_kgraph_continuous_kedge_attribute" + ], + "title": "filter_kgraph_continuous_kedge_attribute", + "description": "An enumeration." + }, + "filter_kgraph_discrete_kedge_attribute": { + "type": "string", + "enum": [ + "filter_kgraph_discrete_kedge_attribute" + ], + "title": "filter_kgraph_discrete_kedge_attribute", + "description": "An enumeration." + }, + "filter_kgraph_discrete_knode_attribute": { + "type": "string", + "enum": [ + "filter_kgraph_discrete_knode_attribute" + ], + "title": "filter_kgraph_discrete_knode_attribute", + "description": "An enumeration." + }, + "filter_kgraph_orphans": { + "type": "string", + "enum": [ + "filter_kgraph_orphans" + ], + "title": "filter_kgraph_orphans", + "description": "An enumeration." + }, + "filter_kgraph_percentile": { + "type": "string", + "enum": [ + "filter_kgraph_percentile" + ], + "title": "filter_kgraph_percentile", + "description": "An enumeration." + }, + "filter_kgraph_std_dev": { + "type": "string", + "enum": [ + "filter_kgraph_std_dev" + ], + "title": "filter_kgraph_std_dev", + "description": "An enumeration." + }, + "filter_kgraph_top_n": { + "type": "string", + "enum": [ + "filter_kgraph_top_n" + ], + "title": "filter_kgraph_top_n", + "description": "An enumeration." + }, + "filter_results": { + "type": "string", + "enum": [ + "filter_results" + ], + "title": "filter_results", + "description": "An enumeration." + }, + "filter_results_top_n": { + "type": "string", + "enum": [ + "filter_results_top_n" + ], + "title": "filter_results_top_n", + "description": "An enumeration." + }, + "lookup": { + "type": "string", + "enum": [ + "lookup" + ], + "title": "lookup", + "description": "An enumeration." + }, + "overlay": { + "type": "string", + "enum": [ + "overlay" + ], + "title": "overlay", + "description": "An enumeration." + }, + "overlay_compute_jaccard": { + "type": "string", + "enum": [ + "overlay_compute_jaccard" + ], + "title": "overlay_compute_jaccard", + "description": "An enumeration." + }, + "overlay_compute_ngd": { + "type": "string", + "enum": [ + "overlay_compute_ngd" + ], + "title": "overlay_compute_ngd", + "description": "An enumeration." + }, + "overlay_connect_knodes": { + "type": "string", + "enum": [ + "overlay_connect_knodes" + ], + "title": "overlay_connect_knodes", + "description": "An enumeration." + }, + "overlay_fisher_exact_test": { + "type": "string", + "enum": [ + "overlay_fisher_exact_test" + ], + "title": "overlay_fisher_exact_test", + "description": "An enumeration." + }, + "restate": { + "type": "string", + "enum": [ + "restate" + ], + "title": "restate", + "description": "An enumeration." + }, + "score": { + "type": "string", + "enum": [ + "score" + ], + "title": "score", + "description": "An enumeration." + }, + "sort_results": { + "type": "string", + "enum": [ + "sort_results" + ], + "title": "sort_results", + "description": "An enumeration." + }, + "sort_results_edge_attribute": { + "type": "string", + "enum": [ + "sort_results_edge_attribute" + ], + "title": "sort_results_edge_attribute", + "description": "An enumeration." + }, + "sort_results_node_attribute": { + "type": "string", + "enum": [ + "sort_results_node_attribute" + ], + "title": "sort_results_node_attribute", + "description": "An enumeration." + }, + "sort_results_score": { + "type": "string", + "enum": [ + "sort_results_score" + ], + "title": "sort_results_score", + "description": "An enumeration." + } + } + }, + "tags": [ + { + "name": "translator" + }, + { + "name": "Interfaces" + }, + { + "name": "trapi" + } + ], + "servers": [ + { + "description": "Default server", + "url": "https://nodenorm.ci.transltr.io/1.4", + "x-maturity": "staging", + "x-location": "ITRB" + }, + { + "description": "Localhost", + "url": "https://nodenorm.ci.transltr.io/1.4", + "x-maturity": "staging", + "x-location": "ITRB" + }, + { + "description": "Default server", + "url": "https://nodenorm.test.transltr.io/1.4", + "x-maturity": "testing", + "x-location": "ITRB" + }, + { + "description": "Localhost", + "url": "https://nodenorm.test.transltr.io/1.4", + "x-maturity": "testing", + "x-location": "ITRB" + }, + { + "description": "Default server", + "url": "https://nodenorm.transltr.io/1.4", + "x-maturity": "production", + "x-location": "ITRB" + }, + { + "description": "Localhost", + "url": "https://nodenorm.transltr.io/1.4", + "x-maturity": "production", + "x-location": "ITRB" + }, + { + "description": "Default server", + "url": "https://nodenormalization-sri.renci.org/1.4", + "x-maturity": "development", + "x-location": "RENCI" + }, + { + "description": "Localhost", + "url": "https://nodenormalization-sri.renci.org/1.4", + "x-maturity": "development", + "x-location": "RENCI" + } + ] +} \ No newline at end of file diff --git a/src/tests/validate/openapi3.1-pass.json b/src/tests/validate/openapi3.1-pass.json new file mode 100644 index 00000000..07e8483e --- /dev/null +++ b/src/tests/validate/openapi3.1-pass.json @@ -0,0 +1 @@ +{"openapi":"3.1.0","info":{"title":"Sri-node-normalizer(Trapi v1.4.0)","version":"2.3.9","x-translator":{"component":"Utility","team":["Standards Reference Implementation Team"],"infores":"infores:sri-node-normalizer"},"x-trapi":{"version":"1.4.0","operations":["annotate_nodes"]},"contact":{"email":"bizon@renci.org","name":"Chris Bizon","x-id":"https://github.com/cbizon","x-role":"responsible developer"},"termsOfService":"https://toss.apps.renci.org/tos?service_long=Node+Normalization&provider_long=the+Translator+Consortium","description":"Node Normalization takes a CURIE, and returns:
  1. The preferred CURIE for this entity
  2. All other known equivalent identifiers for the entity
  3. Semantic types for the entity as defined by the BioLink Model
The data served by Node Normalization is created by Babel, which attempts to find identifier equivalences, and makes sure that CURIE prefixes are BioLink Model Compliant. To determine whether Node Normalization is likely to be useful, check /get_semantic_types, which lists the BioLink semantic types for which normalization has been attempted, and /get_curie_prefixes, which lists the number of times each prefix is used for a semantic type."},"paths":{"/query":{"post":{"summary":"Normalizes a TRAPI response object","description":"Returns the response object with a merged knowledge graph and query graph bindings","operationId":"query_query_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Query"},"examples":{"Drugs that treat essential hypertension":{"summary":"A result from a query for drugs that treat essential hypertension.","value":{"message":{"query_graph":{"nodes":{"n0":{"categories":["biolink:Drug"],"is_set":false,"constraints":[]},"n1":{"ids":["MONDO:0001134"],"categories":["biolink:Disease"],"is_set":false,"constraints":[]}},"edges":{"e01":{"subject":"n0","object":"n1","predicates":["biolink:treats"],"attribute_constraints":[],"qualifier_constraints":[]}}},"knowledge_graph":{"nodes":{"DRUGBANK:DB00966":{"categories":["biolink:Drug"],"name":"Telmisartan"},"DRUGBANK:DB00678":{"categories":["biolink:Drug"],"name":"Losartan"}},"edges":{"e3":{"subject":"DRUGBANK:DB00966","object":"MONDO:0001134","predicate":"biolink:treats","sources":[{"resource_id":"infores:openpredict","resource_role":"primary_knowledge_source"},{"resource_id":"infores:cohd","resource_role":"supporting_data_source"}],"attributes":[{"description":"model_id","attribute_type_id":"EDAM:data_1048","value":"openpredict_baseline"},{"attribute_type_id":"biolink:agent_type","value":"computational_model","attribute_source":"infores:openpredict"},{"attribute_type_id":"biolink:knowledge_level","value":"prediction","attribute_source":"infores:openpredict"}]},"e4":{"subject":"DRUGBANK:DB00678","object":"MONDO:0001134","predicate":"biolink:treats","sources":[{"resource_id":"infores:openpredict","resource_role":"primary_knowledge_source"},{"resource_id":"infores:cohd","resource_role":"supporting_data_source"}],"attributes":[{"description":"model_id","attribute_type_id":"EDAM:data_1048","value":"openpredict_baseline"},{"attribute_type_id":"biolink:agent_type","value":"computational_model","attribute_source":"infores:openpredict"},{"attribute_type_id":"biolink:knowledge_level","value":"prediction","attribute_source":"infores:openpredict"}]}}},"results":[{"node_bindings":{"n0":[{"id":"DRUGBANK:DB00966"}],"n1":[{"id":"MONDO:0001134"}]},"analyses":[{"resource_id":"infores:openpredict","score":"0.7155011411093821","scoring_method":"Model confidence between 0 and 1","edge_bindings":{"e01":[{"id":"e3"}]}}]},{"node_bindings":{"n0":[{"id":"DRUGBANK:DB00678"}],"n1":[{"id":"MONDO:0001134"}]},"analyses":[{"resource_id":"infores:openpredict","score":"0.682246949249408","scoring_method":"Model confidence between 0 and 1","edge_bindings":{"e01":[{"id":"e4"}]}}]}]}}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Query"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/asyncquery":{"post":{"summary":"Normalizes a TRAPI response object","description":"Returns the response object with a merged knowledge graph and query graph bindings","operationId":"async_query_asyncquery_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_allowed_conflations":{"get":{"summary":"Get the available conflations","description":"The returned strings can be included in an option to /get_normalized_nodes","operationId":"get_conflations_get_allowed_conflations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConflationList"}}}}}}},"/get_normalized_nodes":{"get":{"summary":"Get the equivalent identifiers and semantic types for the curie(s) entered.","description":"Returns the equivalent identifiers and semantic types for the curie(s)","operationId":"get_normalized_node_handler_get_normalized_nodes_get","parameters":[{"description":"List of curies to normalize","required":false,"schema":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Curie","description":"List of curies to normalize","default":[]},"example":["MESH:D014867","NCIT:C34373"],"name":"curie","in":"query"},{"description":"Whether to apply gene/protein conflation","required":false,"schema":{"type":"boolean","title":"Conflate","description":"Whether to apply gene/protein conflation","default":true},"name":"conflate","in":"query"},{"description":"Whether to apply drug/chemical conflation","required":false,"schema":{"type":"boolean","title":"Drug Chemical Conflate","description":"Whether to apply drug/chemical conflation","default":false},"name":"drug_chemical_conflate","in":"query"},{"description":"Whether to return curie descriptions when possible","required":false,"schema":{"type":"boolean","title":"Description","description":"Whether to return curie descriptions when possible","default":false},"name":"description","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Get the equivalent identifiers and semantic types for the curie(s) entered.","description":"Returns the equivalent identifiers and semantic types for the curie(s). Use the `conflate` flag to choose whether to apply conflation.","operationId":"get_normalized_node_handler_get_normalized_nodes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurieList"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_semantic_types":{"get":{"summary":"Return a list of BioLink semantic types for which normalization has been attempted.","description":"Returns a distinct set of the semantic types discovered in the compendium data.","operationId":"get_semantic_types_handler_get_semantic_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SemanticTypes"}}}}}}},"/get_curie_prefixes":{"get":{"summary":"Return the number of times each CURIE prefix appears in an equivalent identifier for a semantic type","description":"Returns the curies and their hit count for a semantic type(s).","operationId":"get_curie_prefixes_handler_get_curie_prefixes_get","parameters":[{"description":"e.g. biolink:ChemicalEntity, biolink:AnatomicalEntity","required":false,"schema":{"items":{"type":"string"},"type":"array","title":"Semantic Type","description":"e.g. biolink:ChemicalEntity, biolink:AnatomicalEntity","default":[]},"name":"semantic_type","in":"query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/CuriePivot"},"type":"object","title":"Response Get Curie Prefixes Handler Get Curie Prefixes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Return the number of times each CURIE prefix appears in an equivalent identifier for a semantic type","description":"Returns the curies and their hit count for a semantic type(s).","operationId":"get_curie_prefixes_handler_get_curie_prefixes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SemanticTypesInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"$ref":"#/components/schemas/CuriePivot"},"type":"object","title":"Response Get Curie Prefixes Handler Get Curie Prefixes Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AboveOrBelowEnum":{"type":"string","enum":["above","below"],"title":"AboveOrBelowEnum","description":"'above' or 'below'."},"Analysis":{"properties":{"resource_id":{"type":"string","title":"resource infores"},"edge_bindings":{"allOf":[{"$ref":"#/components/schemas/HashableMapping_str__HashableSet_EdgeBinding__"}],"title":"list of edge bindings"},"score":{"type":"number","format":"float","title":"Score"},"support_graphs":{"allOf":[{"$ref":"#/components/schemas/HashableSet_str_"}],"title":"Support Graphs","nullable":true},"scoring_method":{"type":"string","title":"Scoring Method","nullable":true},"attributes":{"allOf":[{"$ref":"#/components/schemas/HashableSet_Attribute_"}],"title":"Attributes","nullable":true}},"type":"object","required":["resource_id","edge_bindings"],"title":"analysis","description":"Analysis."},"AnnotateEdgesParameters":{"properties":{"attributes":{"$ref":"#/components/schemas/HashableSequence_str_"}},"type":"object","title":"AnnotateEdgesParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"AnnotateNodesParameters":{"properties":{"attributes":{"$ref":"#/components/schemas/HashableSequence_str_"}},"type":"object","title":"AnnotateNodesParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"AscOrDescEnum":{"type":"string","enum":["ascending","descending"],"title":"AscOrDescEnum","description":"'ascending' or 'descending'."},"AsyncQuery":{"properties":{"callback":{"type":"string","pattern":"^https?://","format":"uri","title":"Callback"},"message":{"allOf":[{"$ref":"#/components/schemas/Message"}],"title":"message"},"log_level":{"allOf":[{"$ref":"#/components/schemas/LogLevel"}],"title":"log_level","nullable":true},"workflow":{"$ref":"#/components/schemas/Workflow"}},"type":"object","required":["callback","message"],"title":"query","description":"AsyncQuery.","x-body-name":"request_body"},"Attribute":{"properties":{"attribute_type_id":{"type":"string","title":"type"},"value":{"title":"value"},"value_type_id":{"type":"string","title":"value_type_id","nullable":true},"original_attribute_name":{"type":"string","title":"Original Attribute Name","nullable":true},"value_url":{"type":"string","title":"Value Url","nullable":true},"attribute_source":{"type":"string","title":"Attribute Source","nullable":true},"description":{"type":"string","title":"Description","nullable":true},"attributes":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_SubAttribute_"}],"title":"Attributes","nullable":true}},"additionalProperties":false,"type":"object","required":["attribute_type_id","value"],"title":"Attribute","description":"Node/edge attribute."},"AttributeConstraint":{"properties":{"name":{"type":"string","title":"name","nullable":false},"id":{"type":"string","title":"id","nullable":false},"not":{"type":"boolean","title":"not","default":false},"operator":{"allOf":[{"$ref":"#/components/schemas/Operator"}],"title":"operator"},"value":{"title":"value"},"unit_id":{"title":"unit_id"},"unit_name":{"title":"unit_name"}},"additionalProperties":false,"type":"object","required":["name","id","operator","value"],"title":"AttributeConstraint","description":"QNode or QEdge attribute constraint."},"AuxiliaryGraph":{"properties":{"edges":{"allOf":[{"$ref":"#/components/schemas/HashableSet_str_"}],"title":"edges in auxiliary graph"},"attributes":{"allOf":[{"$ref":"#/components/schemas/HashableSet_Attribute_"}],"title":"Attributes","nullable":true}},"type":"object","required":["edges"],"title":"auxiliary graph","description":"Auxiliary Graph"},"AuxiliaryGraphs":{"$ref":"#/components/schemas/HashableMapping_str__AuxiliaryGraph_","title":"auxiliary graphs","description":"Auxiliary Graphs"},"ConflationList":{"properties":{"conflations":{"items":{},"type":"array","title":"Conflations"}},"type":"object","required":["conflations"],"title":"ConflationList"},"CurieList":{"properties":{"curies":{"items":{"type":"string"},"type":"array","minItems":1,"title":"List of CURIEs to normalize"},"conflate":{"type":"boolean","title":"Whether to apply gene/protein conflation","default":true},"description":{"type":"boolean","title":"Whether to return CURIE descriptions when possible","default":false},"drug_chemical_conflate":{"type":"boolean","title":"Whether to apply drug/chemical conflation","default":false}},"type":"object","required":["curies"],"title":"CurieList","description":"Curie list input model","example":{"curies":["MESH:D014867","NCIT:C34373"],"conflate":true,"description":false,"drug_chemical_conflate":false}},"CuriePivot":{"properties":{"curie_prefix":{"additionalProperties":{"type":"string"},"type":"object","title":"Curie Prefix"}},"type":"object","required":["curie_prefix"],"title":"CuriePivot"},"Edge":{"properties":{"subject":{"type":"string","title":"subject node id"},"object":{"type":"string","title":"object node id"},"predicate":{"type":"string","pattern":"^biolink:[a-z][a-z_]*$","title":"edge predicate"},"sources":{"allOf":[{"$ref":"#/components/schemas/HashableSet_RetrievalSource_"}],"title":"list of source retrievals"},"qualifiers":{"allOf":[{"$ref":"#/components/schemas/HashableSet_Qualifier_"}],"title":"Qualifiers","nullable":true},"attributes":{"allOf":[{"$ref":"#/components/schemas/HashableSet_Attribute_"}],"title":"Attributes","nullable":true}},"additionalProperties":false,"type":"object","required":["subject","object","predicate","sources"],"title":"knowledge-graph edge","description":"Knowledge graph edge."},"EdgeBinding":{"properties":{"id":{"type":"string","title":"knowledge graph id"},"attributes":{"allOf":[{"$ref":"#/components/schemas/HashableSet_Attribute_"}],"title":"Attributes","nullable":true}},"type":"object","required":["id"],"title":"edge binding","description":"Edge binding.","example":{"id":"string"}},"EnrichResultsParameters":{"properties":{"pvalue_threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Pvalue Threshold","default":1e-06},"qnode_keys":{"$ref":"#/components/schemas/HashableSequence_str_"},"predicates_to_exclude":{"$ref":"#/components/schemas/HashableSequence_BiolinkPredicate_"}},"type":"object","title":"EnrichResultsParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"FillAllowParameters":{"properties":{"allowlist":{"$ref":"#/components/schemas/HashableSequence_str_"},"qedge_keys":{"$ref":"#/components/schemas/HashableSequence_str_"}},"additionalProperties":false,"type":"object","title":"FillAllowParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"FillDenyParameters":{"properties":{"denylist":{"$ref":"#/components/schemas/HashableSequence_str_"},"qedge_keys":{"$ref":"#/components/schemas/HashableSequence_str_"}},"additionalProperties":false,"type":"object","title":"FillDenyParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"FillParameters":{"anyOf":[{"$ref":"#/components/schemas/FillAllowParameters"},{"$ref":"#/components/schemas/FillDenyParameters"}],"title":"FillParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"FilterKgraphContinuousKedgeAttributeParameters":{"properties":{"edge_attribute":{"type":"string","title":"Edge Attribute"},"threshold":{"type":"number","title":"Threshold"},"remove_above_or_below":{"$ref":"#/components/schemas/AboveOrBelowEnum"},"qedge_keys":{"$ref":"#/components/schemas/HashableSequence_str_"},"qnode_keys":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_str_"}],"title":"Qnode Keys","default":[]}},"type":"object","required":["edge_attribute","threshold","remove_above_or_below"],"title":"FilterKgraphContinuousKedgeAttributeParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"FilterKgraphDiscreteKedgeAttributeParameters":{"properties":{"edge_attribute":{"type":"string","title":"Edge Attribute"},"remove_value":{"title":"Remove Value"},"qedge_keys":{"$ref":"#/components/schemas/HashableSequence_str_"},"qnode_keys":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_str_"}],"title":"Qnode Keys","default":[]}},"type":"object","required":["edge_attribute"],"title":"FilterKgraphDiscreteKedgeAttributeParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"FilterKgraphDiscreteKnodeAttributeParameters":{"properties":{"node_attribute":{"type":"string","title":"Node Attribute"},"remove_value":{"title":"Remove Value"},"qnode_keys":{"$ref":"#/components/schemas/HashableSequence_str_"}},"type":"object","required":["node_attribute"],"title":"FilterKgraphDiscreteKnodeAttributeParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"FilterKgraphPercentileParameters":{"properties":{"edge_attribute":{"type":"string","title":"Edge Attribute"},"threshold":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Threshold","default":95},"remove_above_or_below":{"allOf":[{"$ref":"#/components/schemas/AboveOrBelowEnum"}],"default":"below"},"qedge_keys":{"$ref":"#/components/schemas/HashableSequence_str_"},"qnode_keys":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_str_"}],"title":"Qnode Keys","default":[]}},"type":"object","required":["edge_attribute"],"title":"FilterKgraphPercentileParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"FilterKgraphStdDevParameters":{"properties":{"edge_attribute":{"type":"string","title":"Edge Attribute"},"plus_or_minus_std_dev":{"allOf":[{"$ref":"#/components/schemas/PlusOrMinusEnum"}],"default":"plus"},"num_sigma":{"type":"number","minimum":0.0,"title":"Num Sigma","default":1},"remove_above_or_below":{"allOf":[{"$ref":"#/components/schemas/AboveOrBelowEnum"}],"default":"below"},"qedge_keys":{"$ref":"#/components/schemas/HashableSequence_str_"},"qnode_keys":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_str_"}],"title":"Qnode Keys","default":[]}},"type":"object","required":["edge_attribute"],"title":"FilterKgraphStdDevParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"FilterKgraphTopNParameters":{"properties":{"edge_attribute":{"type":"string","title":"Edge Attribute"},"max_edges":{"type":"integer","maximum":0.0,"title":"Max Edges","default":50},"remove_top_or_bottom":{"allOf":[{"$ref":"#/components/schemas/TopOrBottomEnum"}],"default":"top"},"qedge_keys":{"$ref":"#/components/schemas/HashableSequence_str_"},"qnode_keys":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_str_"}],"title":"Qnode Keys","default":[]}},"type":"object","required":["edge_attribute"],"title":"FilterKgraphTopNParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"FilterResultsTopNParameters":{"properties":{"max_results":{"type":"integer","minimum":0.0,"title":"Max Results"}},"additionalProperties":false,"type":"object","required":["max_results"],"title":"FilterResultsTopNParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HashableMapping_CURIE__Node_":{"additionalProperties":{"$ref":"#/components/schemas/Node"},"type":"object","title":"HashableMapping[CURIE, Node]","description":"Custom class that implements MutableMapping and is hashable","default":{}},"HashableMapping_EdgeIdentifier__Edge_":{"additionalProperties":{"$ref":"#/components/schemas/Edge"},"type":"object","title":"HashableMapping[EdgeIdentifier, Edge]","description":"Custom class that implements MutableMapping and is hashable","default":{}},"HashableMapping_str__AuxiliaryGraph_":{"additionalProperties":{"$ref":"#/components/schemas/AuxiliaryGraph"},"type":"object","title":"HashableMapping[str, AuxiliaryGraph]","description":"Custom class that implements MutableMapping and is hashable","default":{}},"HashableMapping_str__HashableSet_EdgeBinding__":{"additionalProperties":{"$ref":"#/components/schemas/HashableSet_EdgeBinding_"},"type":"object","title":"HashableMapping[str, HashableSet[EdgeBinding]]","description":"Custom class that implements MutableMapping and is hashable","default":{}},"HashableMapping_str__HashableSet_NodeBinding__":{"additionalProperties":{"$ref":"#/components/schemas/HashableSet_NodeBinding_"},"type":"object","title":"HashableMapping[str, HashableSet[NodeBinding]]","description":"Custom class that implements MutableMapping and is hashable","default":{}},"HashableMapping_str__QEdge_":{"additionalProperties":{"$ref":"#/components/schemas/QEdge"},"type":"object","title":"HashableMapping[str, QEdge]","description":"Custom class that implements MutableMapping and is hashable","default":{}},"HashableMapping_str__QNode_":{"additionalProperties":{"$ref":"#/components/schemas/QNode"},"type":"object","title":"HashableMapping[str, QNode]","description":"Custom class that implements MutableMapping and is hashable","default":{}},"HashableSequence_AttributeConstraint_":{"items":{"$ref":"#/components/schemas/AttributeConstraint"},"type":"array","title":"HashableSequence[AttributeConstraint]","description":"Custom class that implements MutableSequence and is hashable","default":[]},"HashableSequence_BiolinkEntity_":{"items":{"type":"string","pattern":"^biolink:[A-Z][a-zA-Z]*$"},"type":"array","title":"HashableSequence[BiolinkEntity]","description":"Custom class that implements MutableSequence and is hashable","default":[]},"HashableSequence_BiolinkPredicate_":{"items":{"type":"string","pattern":"^biolink:[a-z][a-z_]*$"},"type":"array","title":"HashableSequence[BiolinkPredicate]","description":"Custom class that implements MutableSequence and is hashable","default":[]},"HashableSequence_CURIE_":{"items":{"type":"string"},"type":"array","title":"HashableSequence[CURIE]","description":"Custom class that implements MutableSequence and is hashable","default":[]},"HashableSequence_Operation_":{"items":{"$ref":"#/components/schemas/Operation"},"type":"array","title":"HashableSequence[Operation]","description":"Custom class that implements MutableSequence and is hashable","default":[]},"HashableSequence_QualifierConstraint_":{"items":{"$ref":"#/components/schemas/QualifierConstraint"},"type":"array","title":"HashableSequence[QualifierConstraint]","description":"Custom class that implements MutableSequence and is hashable","default":[]},"HashableSequence_Qualifier_":{"items":{"$ref":"#/components/schemas/Qualifier"},"type":"array","title":"HashableSequence[Qualifier]","description":"Custom class that implements MutableSequence and is hashable","default":[]},"HashableSequence_RecursiveAttribute_":{"items":{"$ref":"#/components/schemas/RecursiveAttribute"},"type":"array","title":"HashableSequence[RecursiveAttribute]","description":"Custom class that implements MutableSequence and is hashable","default":[]},"HashableSequence_Result_":{"items":{"$ref":"#/components/schemas/Result"},"type":"array","title":"HashableSequence[Result]","description":"Custom class that implements MutableSequence and is hashable","default":[]},"HashableSequence_SubAttribute_":{"items":{"$ref":"#/components/schemas/SubAttribute"},"type":"array","title":"HashableSequence[SubAttribute]","description":"Custom class that implements MutableSequence and is hashable","default":[]},"HashableSequence_str_":{"items":{"type":"string"},"type":"array","title":"HashableSequence[str]","description":"Custom class that implements MutableSequence and is hashable","default":[]},"HashableSet_Analysis_":{"items":{"$ref":"#/components/schemas/Analysis"},"type":"array","uniqueItems":true,"title":"HashableSet[Analysis]","description":"Custom class that implements MutableSet and is hashable","default":[]},"HashableSet_Attribute_":{"items":{"$ref":"#/components/schemas/Attribute"},"type":"array","uniqueItems":true,"title":"HashableSet[Attribute]","description":"Custom class that implements MutableSet and is hashable","default":[]},"HashableSet_BiolinkEntity_":{"items":{"type":"string","pattern":"^biolink:[A-Z][a-zA-Z]*$"},"type":"array","uniqueItems":true,"title":"HashableSet[BiolinkEntity]","description":"Custom class that implements MutableSet and is hashable","default":[]},"HashableSet_CURIE_":{"items":{"type":"string"},"type":"array","uniqueItems":true,"title":"HashableSet[CURIE]","description":"Custom class that implements MutableSet and is hashable","default":[]},"HashableSet_EdgeBinding_":{"items":{"$ref":"#/components/schemas/EdgeBinding"},"type":"array","uniqueItems":true,"title":"HashableSet[EdgeBinding]","description":"Custom class that implements MutableSet and is hashable","default":[]},"HashableSet_NodeBinding_":{"items":{"$ref":"#/components/schemas/NodeBinding"},"type":"array","uniqueItems":true,"title":"HashableSet[NodeBinding]","description":"Custom class that implements MutableSet and is hashable","default":[]},"HashableSet_Qualifier_":{"items":{"$ref":"#/components/schemas/Qualifier"},"type":"array","uniqueItems":true,"title":"HashableSet[Qualifier]","description":"Custom class that implements MutableSet and is hashable","default":[]},"HashableSet_RetrievalSource_":{"items":{"$ref":"#/components/schemas/RetrievalSource"},"type":"array","uniqueItems":true,"title":"HashableSet[RetrievalSource]","description":"Custom class that implements MutableSet and is hashable","default":[]},"HashableSet_str_":{"items":{"type":"string"},"type":"array","uniqueItems":true,"title":"HashableSet[str]","description":"Custom class that implements MutableSet and is hashable","default":[]},"KnowledgeGraph":{"properties":{"nodes":{"allOf":[{"$ref":"#/components/schemas/HashableMapping_CURIE__Node_"}],"title":"nodes"},"edges":{"allOf":[{"$ref":"#/components/schemas/HashableMapping_EdgeIdentifier__Edge_"}],"title":"edges"}},"type":"object","required":["nodes","edges"],"title":"knowledge graph","description":"Knowledge graph."},"KnowledgeType":{"type":"string","enum":["lookup","inferred"],"title":"KnowledgeType","description":"Knowledge Type."},"LogLevel":{"$ref":"#/components/schemas/LogLevelEnum","title":"LogLevel","description":"Log level."},"LogLevelEnum":{"type":"string","enum":["ERROR","WARNING","INFO","DEBUG"],"title":"LogLevelEnum","description":"Log level."},"Message":{"properties":{"query_graph":{"allOf":[{"$ref":"#/components/schemas/QueryGraph"}],"title":"query graph","nullable":true},"knowledge_graph":{"allOf":[{"$ref":"#/components/schemas/KnowledgeGraph"}],"title":"knowledge graph","nullable":true},"results":{"allOf":[{"$ref":"#/components/schemas/Results"}],"title":"list of results","nullable":true},"auxiliary_graphs":{"allOf":[{"$ref":"#/components/schemas/AuxiliaryGraphs"}],"title":"dict of auxiliary graphs","nullable":true}},"additionalProperties":false,"type":"object","title":"message","description":"Message."},"Node":{"properties":{"categories":{"allOf":[{"$ref":"#/components/schemas/HashableSet_BiolinkEntity_"}],"title":"categories","nullable":true},"name":{"type":"string","title":"Name","nullable":true},"attributes":{"allOf":[{"$ref":"#/components/schemas/HashableSet_Attribute_"}],"title":"Attributes","nullable":true}},"additionalProperties":false,"type":"object","title":"knowledge-graph node","description":"Knowledge graph node.","example":{"category":"string"}},"NodeBinding":{"properties":{"id":{"type":"string","title":"knowledge graph id"},"query_id":{"type":"string","title":"query graph id"},"attributes":{"allOf":[{"$ref":"#/components/schemas/HashableSet_Attribute_"}],"title":"Attributes","nullable":true}},"type":"object","required":["id"],"title":"node binding","description":"Node binding.","example":{"id":"x:string"}},"Operation":{"anyOf":[{"$ref":"#/components/schemas/OperationAnnotate"},{"$ref":"#/components/schemas/OperationAnnotateEdges"},{"$ref":"#/components/schemas/OperationAnnotateNodes"},{"$ref":"#/components/schemas/OperationBind"},{"$ref":"#/components/schemas/OperationCompleteResults"},{"$ref":"#/components/schemas/OperationEnrichResults"},{"$ref":"#/components/schemas/OperationFill"},{"$ref":"#/components/schemas/OperationFilterKgraph"},{"$ref":"#/components/schemas/OperationFilterKgraphContinuousKedgeAttribute"},{"$ref":"#/components/schemas/OperationFilterKgraphDiscreteKedgeAttribute"},{"$ref":"#/components/schemas/OperationFilterKgraphDiscreteKnodeAttribute"},{"$ref":"#/components/schemas/OperationFilterKgraphOrphans"},{"$ref":"#/components/schemas/OperationFilterKgraphPercentile"},{"$ref":"#/components/schemas/OperationFilterKgraphStdDev"},{"$ref":"#/components/schemas/OperationFilterKgraphTopN"},{"$ref":"#/components/schemas/OperationFilterResults"},{"$ref":"#/components/schemas/OperationFilterResultsTopN"},{"$ref":"#/components/schemas/OperationLookup"},{"$ref":"#/components/schemas/OperationOverlay"},{"$ref":"#/components/schemas/OperationOverlayComputeJaccard"},{"$ref":"#/components/schemas/OperationOverlayComputeNgd"},{"$ref":"#/components/schemas/OperationOverlayConnectKnodes"},{"$ref":"#/components/schemas/OperationOverlayFisherExactTest"},{"$ref":"#/components/schemas/OperationRestate"},{"$ref":"#/components/schemas/OperationScore"},{"$ref":"#/components/schemas/OperationSortResults"},{"$ref":"#/components/schemas/OperationSortResultsEdgeAttribute"},{"$ref":"#/components/schemas/OperationSortResultsNodeAttribute"},{"$ref":"#/components/schemas/OperationSortResultsScore"}],"title":"Operation","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationAnnotate":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/annotate"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationAnnotate","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationAnnotateEdges":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/annotate_edges"},"parameters":{"$ref":"#/components/schemas/AnnotateEdgesParameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationAnnotateEdges","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationAnnotateNodes":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/annotate_nodes"},"parameters":{"$ref":"#/components/schemas/AnnotateNodesParameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationAnnotateNodes","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationBind":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/bind"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationBind","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationCompleteResults":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/complete_results"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationCompleteResults","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationEnrichResults":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/enrich_results"},"parameters":{"$ref":"#/components/schemas/EnrichResultsParameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationEnrichResults","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationFill":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/fill"},"parameters":{"$ref":"#/components/schemas/FillParameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationFill","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationFilterKgraph":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/filter_kgraph"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationFilterKgraph","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationFilterKgraphContinuousKedgeAttribute":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/filter_kgraph_continuous_kedge_attribute"},"parameters":{"$ref":"#/components/schemas/FilterKgraphContinuousKedgeAttributeParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationFilterKgraphContinuousKedgeAttribute","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationFilterKgraphDiscreteKedgeAttribute":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/filter_kgraph_discrete_kedge_attribute"},"parameters":{"$ref":"#/components/schemas/FilterKgraphDiscreteKedgeAttributeParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationFilterKgraphDiscreteKedgeAttribute","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationFilterKgraphDiscreteKnodeAttribute":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/filter_kgraph_discrete_knode_attribute"},"parameters":{"$ref":"#/components/schemas/FilterKgraphDiscreteKnodeAttributeParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationFilterKgraphDiscreteKnodeAttribute","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationFilterKgraphOrphans":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/filter_kgraph_orphans"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationFilterKgraphOrphans","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationFilterKgraphPercentile":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/filter_kgraph_percentile"},"parameters":{"$ref":"#/components/schemas/FilterKgraphPercentileParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationFilterKgraphPercentile","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationFilterKgraphStdDev":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/filter_kgraph_std_dev"},"parameters":{"$ref":"#/components/schemas/FilterKgraphStdDevParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationFilterKgraphStdDev","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationFilterKgraphTopN":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/filter_kgraph_top_n"},"parameters":{"$ref":"#/components/schemas/FilterKgraphTopNParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationFilterKgraphTopN","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationFilterResults":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/filter_results"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationFilterResults","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationFilterResultsTopN":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/filter_results_top_n"},"parameters":{"$ref":"#/components/schemas/FilterResultsTopNParameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationFilterResultsTopN","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationLookup":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/lookup"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationLookup","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationOverlay":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/overlay"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationOverlay","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationOverlayComputeJaccard":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/overlay_compute_jaccard"},"parameters":{"$ref":"#/components/schemas/OverlayComputeJaccardParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationOverlayComputeJaccard","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationOverlayComputeNgd":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/overlay_compute_ngd"},"parameters":{"$ref":"#/components/schemas/OverlayComputeNgdParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationOverlayComputeNgd","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationOverlayConnectKnodes":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/overlay_connect_knodes"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationOverlayConnectKnodes","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationOverlayFisherExactTest":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/overlay_fisher_exact_test"},"parameters":{"$ref":"#/components/schemas/OverlayFisherExactTestParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationOverlayFisherExactTest","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationRestate":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/restate"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationRestate","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationScore":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/score"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationScore","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationSortResults":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/sort_results"},"parameters":{"title":"Parameters"}},"additionalProperties":false,"type":"object","required":["id"],"title":"OperationSortResults","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationSortResultsEdgeAttribute":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/sort_results_edge_attribute"},"parameters":{"$ref":"#/components/schemas/SortResultsEdgeAttributeParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationSortResultsEdgeAttribute","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationSortResultsNodeAttribute":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/sort_results_node_attribute"},"parameters":{"$ref":"#/components/schemas/SortResultsNodeAttributeParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationSortResultsNodeAttribute","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OperationSortResultsScore":{"properties":{"runner_parameters":{"$ref":"#/components/schemas/RunnerParameters"},"id":{"$ref":"#/components/schemas/sort_results_score"},"parameters":{"$ref":"#/components/schemas/SortResultsScoreParameters"}},"additionalProperties":false,"type":"object","required":["id","parameters"],"title":"OperationSortResultsScore","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"Operator":{"type":"string","enum":["==","===",">","<","matches"],"title":"Operator","description":"Operator."},"OverlayComputeJaccardParameters":{"properties":{"intermediate_node_key":{"type":"string","title":"Intermediate Node Key"},"end_node_keys":{"$ref":"#/components/schemas/HashableSequence_str_"},"virtual_relation_label":{"type":"string","title":"Virtual Relation Label"}},"type":"object","required":["intermediate_node_key","end_node_keys","virtual_relation_label"],"title":"OverlayComputeJaccardParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OverlayComputeNgdParameters":{"properties":{"qnode_keys":{"$ref":"#/components/schemas/HashableSequence_str_"},"virtual_relation_label":{"type":"string","title":"Virtual Relation Label"}},"type":"object","required":["qnode_keys","virtual_relation_label"],"title":"OverlayComputeNgdParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"OverlayFisherExactTestParameters":{"properties":{"subject_qnode_key":{"type":"string","title":"Subject Qnode Key"},"object_qnode_key":{"type":"string","title":"Object Qnode Key"},"virtual_relation_label":{"type":"string","title":"Virtual Relation Label"},"rel_edge_key":{"type":"string","title":"Rel Edge Key"}},"type":"object","required":["subject_qnode_key","object_qnode_key","virtual_relation_label"],"title":"OverlayFisherExactTestParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"PlusOrMinusEnum":{"type":"string","enum":["plus","minus"],"title":"PlusOrMinusEnum","description":"'plus' or 'minus'."},"QEdge":{"properties":{"subject":{"type":"string","title":"subject node id"},"object":{"type":"string","title":"object node id"},"knowledge_type":{"allOf":[{"$ref":"#/components/schemas/KnowledgeType"}],"title":"knowledge type"},"predicates":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_BiolinkPredicate_"}],"title":"predicates","nullable":true},"attribute_constraints":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_AttributeConstraint_"}],"title":"attribute constraints","default":{"__root__":[]}},"qualifier_constraints":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_QualifierConstraint_"}],"title":"qualifier constraint","default":{"__root__":[]}}},"type":"object","required":["subject","object"],"title":"query-graph edge","description":"Query edge."},"QNode":{"properties":{"ids":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_CURIE_"}],"title":"ids","nullable":true},"categories":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_BiolinkEntity_"}],"title":"categories","nullable":true},"is_set":{"type":"boolean","title":"Is Set","default":false},"constraints":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_AttributeConstraint_"}],"title":"attribute constraints","default":{"__root__":[]}}},"type":"object","title":"query-graph node","description":"Query node."},"Qualifier":{"properties":{"qualifier_type_id":{"type":"string","pattern":"^biolink:[a-z][a-z_]*$","title":"type"},"qualifier_value":{"type":"string","title":"value"}},"type":"object","required":["qualifier_type_id","qualifier_value"],"title":"Qualifier","description":"Edge qualifier."},"QualifierConstraint":{"properties":{"qualifier_set":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_Qualifier_"}],"title":"qualifier set","default":{"__root__":[]}}},"type":"object","title":"QualifierConstraint","description":"QEdge Qualifier constraint."},"Query":{"properties":{"message":{"allOf":[{"$ref":"#/components/schemas/Message"}],"title":"message"},"log_level":{"allOf":[{"$ref":"#/components/schemas/LogLevel"}],"title":"log_level","nullable":true},"workflow":{"$ref":"#/components/schemas/Workflow"}},"type":"object","required":["message"],"title":"query","description":"Request.","x-body-name":"request_body"},"QueryGraph":{"properties":{"nodes":{"allOf":[{"$ref":"#/components/schemas/HashableMapping_str__QNode_"}],"title":"dict of nodes"},"edges":{"allOf":[{"$ref":"#/components/schemas/HashableMapping_str__QEdge_"}],"title":"dict of edges"}},"type":"object","required":["nodes","edges"],"title":"simple query graph","description":"Query graph."},"RecursiveAttribute":{"properties":{"attribute_type_id":{"type":"string","title":"type"},"value":{"title":"value"},"value_type_id":{"type":"string","title":"value_type_id","nullable":true},"original_attribute_name":{"type":"string","title":"Original Attribute Name","nullable":true},"value_url":{"type":"string","title":"Value Url","nullable":true},"attribute_source":{"type":"string","title":"Attribute Source","nullable":true},"description":{"type":"string","title":"Description","nullable":true},"attributes":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_RecursiveAttribute_"}],"title":"Attributes","nullable":true}},"additionalProperties":false,"type":"object","required":["attribute_type_id","value"],"title":"RecursiveAttribute","description":"Attribute subattribute."},"ResourceRoleEnum":{"type":"string","enum":["aggregator_knowledge_source","primary_knowledge_source","supporting_data_source"],"title":"ResourceRoleEnum","description":"Types of resources"},"Result":{"properties":{"node_bindings":{"allOf":[{"$ref":"#/components/schemas/HashableMapping_str__HashableSet_NodeBinding__"}],"title":"list of node bindings"},"analyses":{"allOf":[{"$ref":"#/components/schemas/HashableSet_Analysis_"}],"title":"list of anlysis blocks"}},"type":"object","required":["node_bindings","analyses"],"title":"result","description":"Result."},"Results":{"$ref":"#/components/schemas/HashableSequence_Result_","title":"results","description":"Results."},"RetrievalSource":{"properties":{"resource_id":{"type":"string","title":"infores for source"},"resource_role":{"allOf":[{"$ref":"#/components/schemas/ResourceRoleEnum"}],"title":"source type"},"upstream_resource_ids":{"allOf":[{"$ref":"#/components/schemas/HashableSet_CURIE_"}],"title":"Upstream Resource Ids","nullable":true},"source_record_urls":{"allOf":[{"$ref":"#/components/schemas/HashableSet_str_"}],"title":"Source Record Urls","nullable":true}},"type":"object","required":["resource_id","resource_role"],"title":"RetrievalSource","description":"A component of source retrieval provenance"},"RunnerAllowList":{"properties":{"allowlist":{"$ref":"#/components/schemas/HashableSequence_str_"},"timeout":{"type":"number","title":"Timeout"}},"additionalProperties":false,"type":"object","title":"RunnerAllowList","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"RunnerDenyList":{"properties":{"denylist":{"$ref":"#/components/schemas/HashableSequence_str_"},"timeout":{"type":"number","title":"Timeout"}},"additionalProperties":false,"type":"object","title":"RunnerDenyList","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"RunnerParameters":{"anyOf":[{"$ref":"#/components/schemas/RunnerAllowList"},{"$ref":"#/components/schemas/RunnerDenyList"},{"$ref":"#/components/schemas/RunnerTimeout"}],"title":"RunnerParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"RunnerTimeout":{"properties":{"timeout":{"type":"number","title":"Timeout"}},"additionalProperties":false,"type":"object","title":"RunnerTimeout","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"SemanticTypes":{"properties":{"semantic_types":{"additionalProperties":{"items":{},"type":"array"},"type":"object","title":"Semantic Types"}},"type":"object","required":["semantic_types"],"title":"SemanticTypes","example":{"semantic_types":{"types":["biolink:CellularComponent","biolink:NamedThing","etc."]}}},"SemanticTypesInput":{"properties":{"semantic_types":{"items":{"type":"string"},"type":"array","title":"list of semantic types"}},"type":"object","required":["semantic_types"],"title":"SemanticTypesInput","description":"Semantic type input model","example":{"semantic_types":["biolink:ChemicalEntity","biolink:AnatomicalEntity"]}},"SortResultsEdgeAttributeParameters":{"properties":{"edge_attribute":{"type":"string","title":"Edge Attribute"},"ascending_or_descending":{"$ref":"#/components/schemas/AscOrDescEnum"},"qedge_keys":{"$ref":"#/components/schemas/HashableSequence_str_"}},"type":"object","required":["edge_attribute","ascending_or_descending"],"title":"SortResultsEdgeAttributeParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"SortResultsNodeAttributeParameters":{"properties":{"node_attribute":{"type":"string","title":"Node Attribute"},"ascending_or_descending":{"$ref":"#/components/schemas/AscOrDescEnum"},"qnode_keys":{"$ref":"#/components/schemas/HashableSequence_str_"}},"type":"object","required":["node_attribute","ascending_or_descending"],"title":"SortResultsNodeAttributeParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"SortResultsScoreParameters":{"properties":{"ascending_or_descending":{"$ref":"#/components/schemas/AscOrDescEnum"}},"type":"object","required":["ascending_or_descending"],"title":"SortResultsScoreParameters","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"SubAttribute":{"properties":{"attribute_type_id":{"type":"string","title":"type"},"value":{"title":"value"},"value_type_id":{"type":"string","title":"value_type_id","nullable":true},"original_attribute_name":{"type":"string","title":"Original Attribute Name","nullable":true},"value_url":{"type":"string","title":"Value Url","nullable":true},"attribute_source":{"type":"string","title":"Attribute Source","nullable":true},"description":{"type":"string","title":"Description","nullable":true},"attributes":{"allOf":[{"$ref":"#/components/schemas/HashableSequence_RecursiveAttribute_"}],"title":"Attributes","nullable":true}},"additionalProperties":false,"type":"object","required":["attribute_type_id","value"],"title":"SubAttribute","description":"Attribute subattribute."},"TopOrBottomEnum":{"type":"string","enum":["top","bottom"],"title":"TopOrBottomEnum","description":"'top' or 'bottom'."},"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"},"Workflow":{"$ref":"#/components/schemas/HashableSequence_Operation_","title":"Workflow","description":"Custom base model for all classes\n\nThis provides hash and equality methods."},"annotate":{"type":"string","enum":["annotate"],"title":"annotate","description":"An enumeration."},"annotate_edges":{"type":"string","enum":["annotate_edges"],"title":"annotate_edges","description":"An enumeration."},"annotate_nodes":{"type":"string","enum":["annotate_nodes"],"title":"annotate_nodes","description":"An enumeration."},"bind":{"type":"string","enum":["bind"],"title":"bind","description":"An enumeration."},"complete_results":{"type":"string","enum":["complete_results"],"title":"complete_results","description":"An enumeration."},"enrich_results":{"type":"string","enum":["enrich_results"],"title":"enrich_results","description":"An enumeration."},"fill":{"type":"string","enum":["fill"],"title":"fill","description":"An enumeration."},"filter_kgraph":{"type":"string","enum":["filter_kgraph"],"title":"filter_kgraph","description":"An enumeration."},"filter_kgraph_continuous_kedge_attribute":{"type":"string","enum":["filter_kgraph_continuous_kedge_attribute"],"title":"filter_kgraph_continuous_kedge_attribute","description":"An enumeration."},"filter_kgraph_discrete_kedge_attribute":{"type":"string","enum":["filter_kgraph_discrete_kedge_attribute"],"title":"filter_kgraph_discrete_kedge_attribute","description":"An enumeration."},"filter_kgraph_discrete_knode_attribute":{"type":"string","enum":["filter_kgraph_discrete_knode_attribute"],"title":"filter_kgraph_discrete_knode_attribute","description":"An enumeration."},"filter_kgraph_orphans":{"type":"string","enum":["filter_kgraph_orphans"],"title":"filter_kgraph_orphans","description":"An enumeration."},"filter_kgraph_percentile":{"type":"string","enum":["filter_kgraph_percentile"],"title":"filter_kgraph_percentile","description":"An enumeration."},"filter_kgraph_std_dev":{"type":"string","enum":["filter_kgraph_std_dev"],"title":"filter_kgraph_std_dev","description":"An enumeration."},"filter_kgraph_top_n":{"type":"string","enum":["filter_kgraph_top_n"],"title":"filter_kgraph_top_n","description":"An enumeration."},"filter_results":{"type":"string","enum":["filter_results"],"title":"filter_results","description":"An enumeration."},"filter_results_top_n":{"type":"string","enum":["filter_results_top_n"],"title":"filter_results_top_n","description":"An enumeration."},"lookup":{"type":"string","enum":["lookup"],"title":"lookup","description":"An enumeration."},"overlay":{"type":"string","enum":["overlay"],"title":"overlay","description":"An enumeration."},"overlay_compute_jaccard":{"type":"string","enum":["overlay_compute_jaccard"],"title":"overlay_compute_jaccard","description":"An enumeration."},"overlay_compute_ngd":{"type":"string","enum":["overlay_compute_ngd"],"title":"overlay_compute_ngd","description":"An enumeration."},"overlay_connect_knodes":{"type":"string","enum":["overlay_connect_knodes"],"title":"overlay_connect_knodes","description":"An enumeration."},"overlay_fisher_exact_test":{"type":"string","enum":["overlay_fisher_exact_test"],"title":"overlay_fisher_exact_test","description":"An enumeration."},"restate":{"type":"string","enum":["restate"],"title":"restate","description":"An enumeration."},"score":{"type":"string","enum":["score"],"title":"score","description":"An enumeration."},"sort_results":{"type":"string","enum":["sort_results"],"title":"sort_results","description":"An enumeration."},"sort_results_edge_attribute":{"type":"string","enum":["sort_results_edge_attribute"],"title":"sort_results_edge_attribute","description":"An enumeration."},"sort_results_node_attribute":{"type":"string","enum":["sort_results_node_attribute"],"title":"sort_results_node_attribute","description":"An enumeration."},"sort_results_score":{"type":"string","enum":["sort_results_score"],"title":"sort_results_score","description":"An enumeration."}}},"tags":[{"name":"translator"},{"name":"Interfaces"},{"name":"trapi"}],"servers":[{"description":"Default server","url":"https://nodenorm.ci.transltr.io/1.4","x-maturity":"staging","x-location":"ITRB"},{"description":"Localhost","url":"https://nodenorm.ci.transltr.io/1.4","x-maturity":"staging","x-location":"ITRB"},{"description":"Default server","url":"https://nodenorm.test.transltr.io/1.4","x-maturity":"testing","x-location":"ITRB"},{"description":"Localhost","url":"https://nodenorm.test.transltr.io/1.4","x-maturity":"testing","x-location":"ITRB"},{"description":"Default server","url":"https://nodenorm.transltr.io/1.4","x-maturity":"production","x-location":"ITRB"},{"description":"Localhost","url":"https://nodenorm.transltr.io/1.4","x-maturity":"production","x-location":"ITRB"},{"description":"Default server","url":"https://nodenormalization-sri.renci.org/1.4","x-maturity":"development","x-location":"RENCI"},{"description":"Localhost","url":"https://nodenormalization-sri.renci.org/1.4","x-maturity":"development","x-location":"RENCI"}]} \ No newline at end of file From 90f4676067ddc56b27a2ce33aefdc096b7ffe821 Mon Sep 17 00:00:00 2001 From: Nichollette Date: Wed, 12 Jun 2024 17:10:08 -0400 Subject: [PATCH 4/6] updated tests for validation schemas --- src/tests/validate/test_validate.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/tests/validate/test_validate.py b/src/tests/validate/test_validate.py index 5fbb3798..63afd114 100644 --- a/src/tests/validate/test_validate.py +++ b/src/tests/validate/test_validate.py @@ -9,6 +9,12 @@ with open(os.path.join(dirname, "openapi-pass.json"), "rb") as file: PASS_OPENAPI = file.read() +with open(os.path.join(dirname, "openapi3.1-pass.json"), "rb") as file: + PASS_OPENAPI31 = file.read() + +with open(os.path.join(dirname, "openapi3.1-fail.json"), "rb") as file: + FAIL_OPENAPI31 = file.read() + with open(os.path.join(dirname, "swagger-pass.json"), "rb") as file: PASS_SWAGGER = file.read() @@ -23,24 +29,24 @@ def test_01(): - validate(PASS_OPENAPI, {"openapi": openapis["openapi_v3"]}) + validate(PASS_OPENAPI, {"openapi": openapis["openapi_v3.0"]}) validate(PASS_OPENAPI, openapis) def test_02(): - validate(PASS_TRANSLATOR, {"openapi": openapis["openapi_v3"]}) + validate(PASS_TRANSLATOR, {"openapi": openapis["openapi_v3.0"]}) validate(PASS_TRANSLATOR, {"x-translator": openapis["x-translator"]}) validate(PASS_TRANSLATOR, openapis) def test_03(): - validate(FAIL_TRANSLATOR_1, {"openapi": openapis["openapi_v3"]}) + validate(FAIL_TRANSLATOR_1, {"openapi": openapis["openapi_v3.0"]}) with pytest.raises(ValueError): validate(FAIL_TRANSLATOR_1, openapis) def test_04(): - validate(FAIL_TRANSLATOR_2, {"openapi": openapis["openapi_v3"]}) + validate(FAIL_TRANSLATOR_2, {"openapi": openapis["openapi_v3.0"]}) with pytest.raises(ValueError): validate(FAIL_TRANSLATOR_2, openapis) @@ -51,3 +57,14 @@ def test_05(): validate(PASS_SWAGGER, openapis) with pytest.raises(ValueError): validate(PASS_OPENAPI, swaggers) + +def test_06(): + validate(PASS_OPENAPI31, {"openapi": openapis["openapi_v3.1"]}) + validate(PASS_OPENAPI31, openapis) + +def test_07(): + with pytest.raises(ValueError): + validate(FAIL_OPENAPI31, {"openapi": openapis["openapi_v3.1"]}) + with pytest.raises(ValueError): + validate(FAIL_OPENAPI31, openapis) + From 5ca7ad64e8ec367c498597e029863af6b04b86aa Mon Sep 17 00:00:00 2001 From: Nichollette Date: Wed, 12 Jun 2024 17:12:34 -0400 Subject: [PATCH 5/6] updated validation for schemas versions --- src/controller/base.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/controller/base.py b/src/controller/base.py index f2e688ac..72b64f64 100644 --- a/src/controller/base.py +++ b/src/controller/base.py @@ -23,8 +23,12 @@ config = ConfigParser() config.read("schemas.ini") + +openapi_versions = ["openapi_v3.0", "openapi_v3.1"] + openapis = Downloader() -openapis.download(config["openapi"].keys(), config["openapi"].values()) +for version in openapi_versions: + openapis.download(config[version].keys(), config[version].values()) swaggers = Downloader() swaggers.download(config["swagger"].keys(), config["swagger"].values()) @@ -40,9 +44,18 @@ def validate(doc, schemas): if not isinstance(doc, dict): doc = decoder.to_dict(doc) - try: # validate agasint every schema + try: # validate against every schema for _name, schema in schemas.items(): - jsonschema.validate(doc, schema) + # If the document is an OpenAPI document, check the version + openapi_version = doc.get('openapi') + if openapi_version is None or "swagger" in _name: + jsonschema.validate(doc, schema) + elif "3.0" in openapi_version and "openapi" in _name: + jsonschema.validate(doc, openapis["openapi_v3.0"]) + elif "3.1" in openapi_version and "openapi" in _name: + jsonschema.validate(doc, openapis["openapi_v3.1"]) + else: + jsonschema.validate(doc, schema) except jsonschema.ValidationError as err: _ = ( From 94252ef0e40af53e2246500c087c73988c32edb1 Mon Sep 17 00:00:00 2001 From: Chunlei Wu Date: Wed, 26 Jun 2024 19:11:57 -0400 Subject: [PATCH 6/6] refactor: simplify the logic for versioned openapi validation --- src/controller/base.py | 29 ++++++++++++++------------ src/schemas.ini | 7 +------ src/tests/validate/test_validate.py | 32 ++++++++++++++++++++--------- 3 files changed, 39 insertions(+), 29 deletions(-) diff --git a/src/controller/base.py b/src/controller/base.py index 72b64f64..4fdc1d48 100644 --- a/src/controller/base.py +++ b/src/controller/base.py @@ -8,7 +8,6 @@ import jsonschema from elasticsearch.exceptions import NotFoundError as ESNotFoundError - from utils import decoder from utils.downloader import Downloader, File @@ -24,11 +23,8 @@ config.read("schemas.ini") -openapi_versions = ["openapi_v3.0", "openapi_v3.1"] - openapis = Downloader() -for version in openapi_versions: - openapis.download(config[version].keys(), config[version].values()) +openapis.download(config["openapi"].keys(), config["openapi"].values()) swaggers = Downloader() swaggers.download(config["swagger"].keys(), config["swagger"].values()) @@ -44,19 +40,26 @@ def validate(doc, schemas): if not isinstance(doc, dict): doc = decoder.to_dict(doc) + openapi_version = doc.get("openapi") + try: # validate against every schema + openapi_validated = False for _name, schema in schemas.items(): # If the document is an OpenAPI document, check the version - openapi_version = doc.get('openapi') - if openapi_version is None or "swagger" in _name: - jsonschema.validate(doc, schema) - elif "3.0" in openapi_version and "openapi" in _name: - jsonschema.validate(doc, openapis["openapi_v3.0"]) - elif "3.1" in openapi_version and "openapi" in _name: - jsonschema.validate(doc, openapis["openapi_v3.1"]) + if _name.startswith("openapi"): + _version = _name[len("openapi_v"):] # take the "v3.0" part of "openapi_v3.0" schema name + if openapi_version: + if openapi_version.startswith(_version): + # validate the document only against the openapi schema with matching version + jsonschema.validate(doc, schema) + openapi_validated = True + else: + # this should not happen, raise an error just in case + raise ValueError("OpenAPI version not found in document during validation.") else: jsonschema.validate(doc, schema) - + if openapi_version and not openapi_validated: + raise ValueError(f"Unknown OpenAPI version (\"{openapi_version}\") for validation.") except jsonschema.ValidationError as err: _ = ( f"Failed {_name} validation at " diff --git a/src/schemas.ini b/src/schemas.ini index cbab1743..76cf9ca1 100644 --- a/src/schemas.ini +++ b/src/schemas.ini @@ -1,13 +1,8 @@ - [swagger] swagger_v2: https://raw.githubusercontent.com/swagger-api/swagger-editor/v3.6.1/src/plugins/validate-json-schema/structural-validation/swagger2-schema.js -[openapi_v3.0] +[openapi] openapi_v3.0: https://raw.githubusercontent.com/swagger-api/swagger-editor/v3.15.6/src/plugins/json-schema-validator/oas3-schema.yaml -x-translator: https://raw.githubusercontent.com/NCATSTranslator/translator_extensions/production/x-translator/smartapi_x-translator_schema.json -x-trapi: https://raw.githubusercontent.com/NCATSTranslator/translator_extensions/production/x-trapi/smartapi_x-trapi_schema.json - -[openapi_v3.1] openapi_v3.1: https://raw.githubusercontent.com/swagger-api/validator-badge/v2.1.5/src/main/resources/schemas/31/official.json x-translator: https://raw.githubusercontent.com/NCATSTranslator/translator_extensions/production/x-translator/smartapi_x-translator_schema.json x-trapi: https://raw.githubusercontent.com/NCATSTranslator/translator_extensions/production/x-trapi/smartapi_x-trapi_schema.json diff --git a/src/tests/validate/test_validate.py b/src/tests/validate/test_validate.py index 63afd114..9c12f17e 100644 --- a/src/tests/validate/test_validate.py +++ b/src/tests/validate/test_validate.py @@ -1,7 +1,6 @@ import os import pytest - from controller.base import openapis, swaggers, validate dirname = os.path.dirname(__file__) @@ -29,25 +28,31 @@ def test_01(): - validate(PASS_OPENAPI, {"openapi": openapis["openapi_v3.0"]}) + validate(PASS_OPENAPI, {"openapi_v3.0": openapis["openapi_v3.0"]}) validate(PASS_OPENAPI, openapis) def test_02(): - validate(PASS_TRANSLATOR, {"openapi": openapis["openapi_v3.0"]}) - validate(PASS_TRANSLATOR, {"x-translator": openapis["x-translator"]}) + validate(PASS_TRANSLATOR, {"openapi_v3.0": openapis["openapi_v3.0"]}) + validate( + PASS_TRANSLATOR, + { + "openapi_v3.0": openapis["openapi_v3.0"], + "x-translator": openapis["x-translator"], + }, + ) validate(PASS_TRANSLATOR, openapis) def test_03(): - validate(FAIL_TRANSLATOR_1, {"openapi": openapis["openapi_v3.0"]}) - with pytest.raises(ValueError): + validate(FAIL_TRANSLATOR_1, {"openapi_v3.0": openapis["openapi_v3.0"]}) + with pytest.raises(ValueError, match="Failed x-translator validation"): validate(FAIL_TRANSLATOR_1, openapis) def test_04(): - validate(FAIL_TRANSLATOR_2, {"openapi": openapis["openapi_v3.0"]}) - with pytest.raises(ValueError): + validate(FAIL_TRANSLATOR_2, {"openapi_v3.0": openapis["openapi_v3.0"]}) + with pytest.raises(ValueError, match="Failed x-translator validation"): validate(FAIL_TRANSLATOR_2, openapis) @@ -58,13 +63,20 @@ def test_05(): with pytest.raises(ValueError): validate(PASS_OPENAPI, swaggers) + def test_06(): - validate(PASS_OPENAPI31, {"openapi": openapis["openapi_v3.1"]}) + validate(PASS_OPENAPI31, {"openapi_v3.1": openapis["openapi_v3.1"]}) validate(PASS_OPENAPI31, openapis) + def test_07(): with pytest.raises(ValueError): - validate(FAIL_OPENAPI31, {"openapi": openapis["openapi_v3.1"]}) + validate(FAIL_OPENAPI31, {"openapi_v3.1": openapis["openapi_v3.1"]}) with pytest.raises(ValueError): validate(FAIL_OPENAPI31, openapis) + +def test_08(): + # should fail when no version-matching openapi schema to validate + with pytest.raises(ValueError, match="Unknown OpenAPI version"): + validate(PASS_OPENAPI31, {"openapi_v3.0": openapis["openapi_v3.0"]})