From f747546c4546f598031e7855f84d32fcf492553d Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Thu, 15 Oct 2026 16:18:38 -0400 Subject: [PATCH 01/14] Added filters --- app/routers/main/routes.py | 329 ++++++++++++++++++++++++++++++------- 1 file changed, 271 insertions(+), 58 deletions(-) diff --git a/app/routers/main/routes.py b/app/routers/main/routes.py index 1cad0af..80c1477 100644 --- a/app/routers/main/routes.py +++ b/app/routers/main/routes.py @@ -12,6 +12,138 @@ router = fastapi.APIRouter() +# Cross-entity filters. Handlers read these from `request.query_params` directly, +# so routes declare them only to document them in the OpenAPI schema. Each may be +# repeated (e.g. `?gene=BRAF&gene=KRAS`) to match any of the given values; values +# are matched exactly and case-sensitively. +AgentFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Agent name, matched exactly. Repeat to match any of several.", + examples=[["Van Allen lab"]], + ), +] +AgentIdFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Agent id. Repeat to match any of several.", + examples=[["agent:user:vanallenlab"]], + ), +] +AgentTypeFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Agent type. Repeat to match any of several.", + examples=[["organization"]], + ), +] +BiomarkerFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Biomarker name, matched exactly. Repeat to match any of several.", + examples=[["BRAF p.V600E"]], + ), +] +BiomarkerTypeFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Biomarker type. Repeat to match any of several.", + examples=[["Somatic variant"]], + ), +] +ContributionFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Contribution id. Repeat to match any of several.", + examples=[["ctrb:vanallenlab:2024-10-30:0"]], + ), +] +DiseaseFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Disease name, matched exactly. Repeat to match any of several.", + examples=[["Melanoma"]], + ), +] +DocumentFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Document id. Repeat to match any of several.", + examples=[["doc:fda:verzenio"]], + ), +] +GeneFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Gene symbol, matched exactly. Repeat to match any of several.", + examples=[["BRAF"]], + ), +] +IndicationFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Indication id. Repeat to match any of several.", + examples=[["ind:fda:verzenio:0"]], + ), +] +TherapyFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Therapy name, matched exactly. Repeat to match any of several.", + examples=[["Dabrafenib"]], + ), +] +TherapyTypeFilter = typing.Annotated[ + list[str], + fastapi.Query( + description="Therapy type. Repeat to match any of several.", + examples=[["Targeted therapy"]], + ), +] +IncludeDeprecated = typing.Annotated[ + bool, + fastapi.Query( + description=( + "Also return deprecated records. Ignored when requesting a single " + "record by id, which is always returned." + ), + ), +] + + +def id_query(entity: str) -> typing.Any: + """ + Builds the query parameter for a route's own single-record id filter. + + Args: + entity (str): The entity name to use in the description, e.g. "agent". + + Returns: + typing.Any: A `fastapi.Query` defaulting to None. + """ + return fastapi.Query( + default=None, + description=f"Return only the {entity} with this id.", + ) + + +def name_query(entity: str, example: str | None = None) -> typing.Any: + """ + Builds the query parameter for a route's own case-insensitive name filter. + + Args: + entity (str): The entity name to use in the description, e.g. "gene". + example (str | None): An example value for the OpenAPI schema. + + Returns: + typing.Any: A `fastapi.Query` defaulting to None. + """ + return fastapi.Query( + default=None, + description=f"Return {entity} records with this name, ignoring case.", + examples=[example] if example else None, + ) + def equals_case_insensitive( column: sqlalchemy.ColumnElement, @@ -249,7 +381,7 @@ def list_entities( ) -@router.get("/about", tags=["Service Info"]) +@router.get("/about", summary="Service metadata", tags=["Service Info"]) def get_about( request: fastapi.Request, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), @@ -269,10 +401,13 @@ def get_about( ) -@router.get("/agents", tags=["Entities"]) +@router.get("/agents", summary="List agents", tags=["Entities"]) def get_agents( request: fastapi.Request, - agent_name: str = fastapi.Query(default=None), + agent_name: str = name_query("agent", "Van Allen lab"), + agent: AgentFilter = None, + agent_id: AgentIdFilter = None, + agent_type: AgentTypeFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -286,15 +421,17 @@ def get_agents( received=generate_datetime_now(), message_subject=f"Agent name {agent_name}" if agent_name else "Agents", primary_filter=( - equals_case_insensitive(handlers.Agents.model.name, agent_name) if agent_name else None + equals_case_insensitive(handlers.Agents.model.name, agent_name) + if agent_name + else None ), ) -@router.get("/alleles", tags=["Entities"]) +@router.get("/alleles", summary="List alleles", tags=["Entities"]) def get_alleles( request: fastapi.Request, - allele_id: str = fastapi.Query(default=None), + allele_id: str = id_query("allele"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -310,11 +447,14 @@ def get_alleles( ) -@router.get("/biomarkers", tags=["Entities"]) +@router.get("/biomarkers", summary="List biomarkers", tags=["Entities"]) def get_biomarkers( request: fastapi.Request, - biomarker_id: str = fastapi.Query(default=None), - biomarker_name: str = fastapi.Query(default=None), + biomarker_id: str = id_query("biomarker"), + biomarker_name: str = name_query("biomarker", "BRAF p.V600E"), + biomarker: BiomarkerFilter = None, + biomarker_type: BiomarkerTypeFilter = None, + gene: GeneFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -336,15 +476,17 @@ def get_biomarkers( message_subject=message_subject, primary_filter=combine_filters( handlers.Biomarkers.model.id == biomarker_id if biomarker_id else None, - equals_case_insensitive(handlers.Biomarkers.model.name, biomarker_name) if biomarker_name else None, + equals_case_insensitive(handlers.Biomarkers.model.name, biomarker_name) + if biomarker_name + else None, ), ) -@router.get("/biomarker_criteria", tags=["Entities"]) +@router.get("/biomarker_criteria", summary="List biomarker criteria", tags=["Entities"]) def get_biomarker_criteria( request: fastapi.Request, - biomarker_criterion_id: str = fastapi.Query(default=None), + biomarker_criterion_id: str = id_query("biomarker criterion"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -368,10 +510,10 @@ def get_biomarker_criteria( ) -@router.get("/codings", tags=["Entities"]) +@router.get("/codings", summary="List codings", tags=["Entities"]) def get_codings( request: fastapi.Request, - coding_id: str = fastapi.Query(default=None), + coding_id: str = id_query("coding"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -388,11 +530,18 @@ def get_codings( ) -@router.get("/contributions", tags=["Entities"]) +@router.get("/contributions", summary="List contributions", tags=["Entities"]) def get_contributions( request: fastapi.Request, - contribution_id: str = fastapi.Query(default=None), - include_records: bool = fastapi.Query(default=False), + contribution_id: str = id_query("contribution"), + include_records: bool = fastapi.Query( + default=False, + description="Add a `records` extension listing the indications and statements each contribution was made to.", + ), + contribution: ContributionFilter = None, + agent: AgentFilter = None, + agent_id: AgentIdFilter = None, + agent_type: AgentTypeFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -439,10 +588,10 @@ def get_contributions( return response -@router.get("/copy_changes", tags=["Entities"]) +@router.get("/copy_changes", summary="List copy changes", tags=["Entities"]) def get_copy_changes( request: fastapi.Request, - copy_change_id: str = fastapi.Query(default=None), + copy_change_id: str = id_query("copy change"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -462,11 +611,12 @@ def get_copy_changes( ) -@router.get("/diseases", tags=["Entities"]) +@router.get("/diseases", summary="List diseases", tags=["Entities"]) def get_diseases( request: fastapi.Request, - disease_id: str = fastapi.Query(default=None), - disease_name: str = fastapi.Query(default=None), + disease_id: str = id_query("disease"), + disease_name: str = name_query("disease", "Melanoma"), + disease: DiseaseFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -487,16 +637,21 @@ def get_diseases( message_subject=message_subject, primary_filter=combine_filters( handlers.Diseases.model.id == disease_id if disease_id else None, - equals_case_insensitive(handlers.Diseases.model.name, disease_name) if disease_name else None, + equals_case_insensitive(handlers.Diseases.model.name, disease_name) + if disease_name + else None, ), ) -@router.get("/documents", tags=["Entities"]) +@router.get("/documents", summary="List documents", tags=["Entities"]) def get_documents( request: fastapi.Request, - document_id: str = fastapi.Query(default=None), - include_deprecated: bool = fastapi.Query(default=False), + document_id: str = id_query("document"), + include_deprecated: IncludeDeprecated = False, + document: DocumentFilter = None, + agent: AgentFilter = None, + agent_id: AgentIdFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -520,10 +675,14 @@ def get_documents( ) -@router.get("/function_consequences", tags=["Entities"]) +@router.get( + "/function_consequences", + summary="List function consequences", + tags=["Entities"], +) def get_function_consequences( request: fastapi.Request, - function_consequence_id: str = fastapi.Query(default=None), + function_consequence_id: str = id_query("function consequence"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -547,11 +706,12 @@ def get_function_consequences( ) -@router.get("/genes", tags=["Entities"]) +@router.get("/genes", summary="List genes", tags=["Entities"]) def get_genes( request: fastapi.Request, - gene_id: str = fastapi.Query(default=None), - gene_name: str = fastapi.Query(default=None), + gene_id: str = id_query("gene"), + gene_name: str = name_query("gene", "BRAF"), + gene: GeneFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -572,16 +732,22 @@ def get_genes( message_subject=message_subject, primary_filter=combine_filters( handlers.Genes.model.id == gene_id if gene_id else None, - equals_case_insensitive(handlers.Genes.model.name, gene_name) if gene_name else None, + equals_case_insensitive(handlers.Genes.model.name, gene_name) + if gene_name + else None, ), ) -@router.get("/indications", tags=["Entities"]) +@router.get("/indications", summary="List indications", tags=["Entities"]) def get_indications( request: fastapi.Request, - indication_id: str = fastapi.Query(default=None), - include_deprecated: bool = fastapi.Query(default=False), + indication_id: str = id_query("indication"), + include_deprecated: IncludeDeprecated = False, + indication: IndicationFilter = None, + document: DocumentFilter = None, + agent: AgentFilter = None, + agent_id: AgentIdFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -608,10 +774,10 @@ def get_indications( ) -@router.get("/mappings", tags=["Entities"]) +@router.get("/mappings", summary="List mappings", tags=["Entities"]) def get_mappings( request: fastapi.Request, - mapping_id: str = fastapi.Query(default=None), + mapping_id: str = id_query("mapping"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -629,10 +795,16 @@ def get_mappings( ) -@router.get("/propositions", tags=["Entities"]) +@router.get("/propositions", summary="List propositions", tags=["Entities"]) def get_propositions( request: fastapi.Request, - proposition_id: str = fastapi.Query(default=None), + proposition_id: str = id_query("proposition"), + biomarker: BiomarkerFilter = None, + biomarker_type: BiomarkerTypeFilter = None, + gene: GeneFilter = None, + disease: DiseaseFilter = None, + therapy: TherapyFilter = None, + therapy_type: TherapyTypeFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -653,11 +825,27 @@ def get_propositions( ) -@router.get("/search", tags=["Search"]) +@router.get( + "/search", + summary="Search propositions with statement aggregates", + tags=["Search"], +) def get_search( request: fastapi.Request, - proposition_id: str | None = fastapi.Query(default=None), - include_empty: bool = fastapi.Query(default=False), + proposition_id: str = id_query("proposition"), + include_empty: bool = fastapi.Query( + default=False, + description="Also return propositions with zero matching statements.", + ), + biomarker: BiomarkerFilter = None, + biomarker_type: BiomarkerTypeFilter = None, + gene: GeneFilter = None, + disease: DiseaseFilter = None, + therapy: TherapyFilter = None, + therapy_type: TherapyTypeFilter = None, + document: DocumentFilter = None, + indication: IndicationFilter = None, + agent_id: AgentIdFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -712,10 +900,10 @@ def get_search( ) -@router.get("/sequence_locations", tags=["Entities"]) +@router.get("/sequence_locations", summary="List sequence locations", tags=["Entities"]) def get_sequence_locations( request: fastapi.Request, - sequence_location_id: str = fastapi.Query(default=None), + sequence_location_id: str = id_query("sequence location"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -739,10 +927,14 @@ def get_sequence_locations( ) -@router.get("/sequence_references", tags=["Entities"]) +@router.get( + "/sequence_references", + summary="List sequence references", + tags=["Entities"], +) def get_sequence_references( request: fastapi.Request, - sequence_reference_id: str = fastapi.Query(default=None), + sequence_reference_id: str = id_query("sequence reference"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -766,11 +958,26 @@ def get_sequence_references( ) -@router.get("/statements", tags=["Entities"]) +@router.get("/statements", summary="List statements", tags=["Entities"]) def get_statements( request: fastapi.Request, - statement_id: str = fastapi.Query(default=None), - include_deprecated: bool = fastapi.Query(default=False), + statement_id: str = id_query("statement"), + include_deprecated: IncludeDeprecated = False, + proposition_id: typing.Annotated[ + list[str], + fastapi.Query(description="Proposition id. Repeat to match any of several."), + ] = None, + biomarker: BiomarkerFilter = None, + biomarker_type: BiomarkerTypeFilter = None, + gene: GeneFilter = None, + disease: DiseaseFilter = None, + therapy: TherapyFilter = None, + therapy_type: TherapyTypeFilter = None, + document: DocumentFilter = None, + agent: AgentFilter = None, + agent_id: AgentIdFilter = None, + indication: IndicationFilter = None, + contribution: ContributionFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -800,10 +1007,10 @@ def get_statements( ) -@router.get("/strengths", tags=["Entities"]) +@router.get("/strengths", summary="List strengths", tags=["Entities"]) def get_strengths( request: fastapi.Request, - strength_name: str = fastapi.Query(default=None), + strength_name: str = name_query("strength"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -819,16 +1026,20 @@ def get_strengths( f"Strength name {strength_name}" if strength_name else "Strengths" ), primary_filter=( - equals_case_insensitive(handlers.Strengths.model.name, strength_name) if strength_name else None + equals_case_insensitive(handlers.Strengths.model.name, strength_name) + if strength_name + else None ), ) -@router.get("/therapies", tags=["Entities"]) +@router.get("/therapies", summary="List therapies", tags=["Entities"]) def get_therapies( request: fastapi.Request, - therapy_id: str = fastapi.Query(default=None), - therapy_name: str = fastapi.Query(default=None), + therapy_id: str = id_query("therapy"), + therapy_name: str = name_query("therapy", "Dabrafenib"), + therapy: TherapyFilter = None, + therapy_type: TherapyTypeFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -849,15 +1060,17 @@ def get_therapies( message_subject=message_subject, primary_filter=combine_filters( handlers.Therapies.model.id == therapy_id if therapy_id else None, - equals_case_insensitive(handlers.Therapies.model.name, therapy_name) if therapy_name else None, + equals_case_insensitive(handlers.Therapies.model.name, therapy_name) + if therapy_name + else None, ), ) -@router.get("/therapy_groups", tags=["Entities"]) +@router.get("/therapy_groups", summary="List therapy groups", tags=["Entities"]) def get_therapy_groups( request: fastapi.Request, - therapy_group_id: str = fastapi.Query(default=None), + therapy_group_id: str = id_query("therapy group"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ From 68533439e5728c50a0f6cc0e28604805ea82b642 Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 05:57:48 -0400 Subject: [PATCH 02/14] Fixed how lists are displayed in the endpoint page, added a leading sentence to describe AND OR behavior. --- app/main.py | 46 +++++++++++++++- app/routers/main/routes.py | 106 +++++++++++++++++++------------------ 2 files changed, 99 insertions(+), 53 deletions(-) diff --git a/app/main.py b/app/main.py index 6d11168..70af1d1 100644 --- a/app/main.py +++ b/app/main.py @@ -21,6 +21,36 @@ def render(self, content: object) -> bytes: return json.dumps(content, indent=2, ensure_ascii=False).encode("utf-8") +def strip_nullable_query_parameters(schema: dict) -> dict: + """ + Removes the null branch from each query parameter's schema, in place. + + Optional query parameters are typed `X | None` so their None default type + checks, which Pydantic renders as `anyOf: [X, {"type": "null"}]`. A query + parameter is omitted rather than sent as null, so the null branch only clutters + the documentation. Response schemas are left alone, where null is a real value. + + Args: + schema (dict): The OpenAPI schema generated by FastAPI. + + Returns: + dict: The same schema, with `anyOf: [X, null]` replaced by `X` for every + query parameter. + """ + for path_item in schema.get("paths", {}).values(): + for operation in path_item.values(): + for parameter in operation.get("parameters", []): + if parameter.get("in") != "query": + continue + parameter_schema = parameter.get("schema", {}) + branches = parameter_schema.get("anyOf", []) + non_null = [branch for branch in branches if branch != {"type": "null"}] + if len(branches) == 2 and len(non_null) == 1: + del parameter_schema["anyOf"] + parameter_schema.update(non_null[0]) + return schema + + def create_app(config_path: str = "config.ini") -> fastapi.FastAPI: """ Creates and configures the FastAPI application instance. @@ -51,7 +81,8 @@ def create_app(config_path: str = "config.ini") -> fastapi.FastAPI: description=( "The Molecular Oncology Almanac (MOAlmanac) is a paired knowledgebase and clinical interpretation " "algorithm for precision cancer medicine. Visit [our website](https://moalmanac.org) for more " - "information." + "information.\n\n" + "**Filters.** Different filters combine with AND, and thus will return records matching both. For example: `?gene=BRAF&disease=Melanoma`. Repeating a filter combines its values with OR, and thus will return records matching either. For example: `?gene=BRAF&gene=KRAS`. On `/search`, `document`, `indication`, and `agent_id` instead narrow each proposition's statement aggregates; see that endpoint for details." ), docs_url="/", license_info={ @@ -94,6 +125,19 @@ def create_app(config_path: str = "config.ini") -> fastapi.FastAPI: app.state.dereferenced = cache app.include_router(main_router) + + def openapi() -> dict: + """ + Generates the OpenAPI schema once, without null branches on query parameters. + + Returns: + dict: The cached OpenAPI schema. + """ + if app.openapi_schema is None: + strip_nullable_query_parameters(schema=fastapi.FastAPI.openapi(app)) + return app.openapi_schema + + app.openapi = openapi return app diff --git a/app/routers/main/routes.py b/app/routers/main/routes.py index 80c1477..2ed61f8 100644 --- a/app/routers/main/routes.py +++ b/app/routers/main/routes.py @@ -17,86 +17,86 @@ # repeated (e.g. `?gene=BRAF&gene=KRAS`) to match any of the given values; values # are matched exactly and case-sensitively. AgentFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Agent name, matched exactly. Repeat to match any of several.", + description="Agent name, matched exactly. Repeatable; matches any of the given values (OR).", examples=[["Van Allen lab"]], ), ] AgentIdFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Agent id. Repeat to match any of several.", + description="Agent id. Repeatable; matches any of the given values (OR).", examples=[["agent:user:vanallenlab"]], ), ] AgentTypeFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Agent type. Repeat to match any of several.", + description="Agent type. Repeatable; matches any of the given values (OR).", examples=[["organization"]], ), ] BiomarkerFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Biomarker name, matched exactly. Repeat to match any of several.", + description="Biomarker name, matched exactly. Repeatable; matches any of the given values (OR).", examples=[["BRAF p.V600E"]], ), ] BiomarkerTypeFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Biomarker type. Repeat to match any of several.", + description="Biomarker type. Repeatable; matches any of the given values (OR).", examples=[["Somatic variant"]], ), ] ContributionFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Contribution id. Repeat to match any of several.", + description="Contribution id. Repeatable; matches any of the given values (OR).", examples=[["ctrb:vanallenlab:2024-10-30:0"]], ), ] DiseaseFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Disease name, matched exactly. Repeat to match any of several.", + description="Disease name, matched exactly. Repeatable; matches any of the given values (OR).", examples=[["Melanoma"]], ), ] DocumentFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Document id. Repeat to match any of several.", + description="Document id. Repeatable; matches any of the given values (OR).", examples=[["doc:fda:verzenio"]], ), ] GeneFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Gene symbol, matched exactly. Repeat to match any of several.", + description="Gene symbol, matched exactly. Repeatable; matches any of the given values (OR).", examples=[["BRAF"]], ), ] IndicationFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Indication id. Repeat to match any of several.", + description="Indication id. Repeatable; matches any of the given values (OR).", examples=[["ind:fda:verzenio:0"]], ), ] TherapyFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Therapy name, matched exactly. Repeat to match any of several.", + description="Therapy name, matched exactly. Repeatable; matches any of the given values (OR).", examples=[["Dabrafenib"]], ), ] TherapyTypeFilter = typing.Annotated[ - list[str], + list[str] | None, fastapi.Query( - description="Therapy type. Repeat to match any of several.", + description="Therapy type. Repeatable; matches any of the given values (OR).", examples=[["Targeted therapy"]], ), ] @@ -169,7 +169,7 @@ def generate_datetime_now() -> datetime.datetime: Returns: datetime.datetime: The current UTC datetime. """ - return datetime.datetime.now(datetime.timezone.utc) + return datetime.datetime.now(datetime.UTC) def get_session_factory( @@ -404,7 +404,7 @@ def get_about( @router.get("/agents", summary="List agents", tags=["Entities"]) def get_agents( request: fastapi.Request, - agent_name: str = name_query("agent", "Van Allen lab"), + agent_name: str | None = name_query("agent", "Van Allen lab"), agent: AgentFilter = None, agent_id: AgentIdFilter = None, agent_type: AgentTypeFilter = None, @@ -431,7 +431,7 @@ def get_agents( @router.get("/alleles", summary="List alleles", tags=["Entities"]) def get_alleles( request: fastapi.Request, - allele_id: str = id_query("allele"), + allele_id: str | None = id_query("allele"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -450,8 +450,8 @@ def get_alleles( @router.get("/biomarkers", summary="List biomarkers", tags=["Entities"]) def get_biomarkers( request: fastapi.Request, - biomarker_id: str = id_query("biomarker"), - biomarker_name: str = name_query("biomarker", "BRAF p.V600E"), + biomarker_id: str | None = id_query("biomarker"), + biomarker_name: str | None = name_query("biomarker", "BRAF p.V600E"), biomarker: BiomarkerFilter = None, biomarker_type: BiomarkerTypeFilter = None, gene: GeneFilter = None, @@ -486,7 +486,7 @@ def get_biomarkers( @router.get("/biomarker_criteria", summary="List biomarker criteria", tags=["Entities"]) def get_biomarker_criteria( request: fastapi.Request, - biomarker_criterion_id: str = id_query("biomarker criterion"), + biomarker_criterion_id: str | None = id_query("biomarker criterion"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -513,7 +513,7 @@ def get_biomarker_criteria( @router.get("/codings", summary="List codings", tags=["Entities"]) def get_codings( request: fastapi.Request, - coding_id: str = id_query("coding"), + coding_id: str | None = id_query("coding"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -533,7 +533,7 @@ def get_codings( @router.get("/contributions", summary="List contributions", tags=["Entities"]) def get_contributions( request: fastapi.Request, - contribution_id: str = id_query("contribution"), + contribution_id: str | None = id_query("contribution"), include_records: bool = fastapi.Query( default=False, description="Add a `records` extension listing the indications and statements each contribution was made to.", @@ -591,7 +591,7 @@ def get_contributions( @router.get("/copy_changes", summary="List copy changes", tags=["Entities"]) def get_copy_changes( request: fastapi.Request, - copy_change_id: str = id_query("copy change"), + copy_change_id: str | None = id_query("copy change"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -614,8 +614,8 @@ def get_copy_changes( @router.get("/diseases", summary="List diseases", tags=["Entities"]) def get_diseases( request: fastapi.Request, - disease_id: str = id_query("disease"), - disease_name: str = name_query("disease", "Melanoma"), + disease_id: str | None = id_query("disease"), + disease_name: str | None = name_query("disease", "Melanoma"), disease: DiseaseFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): @@ -647,7 +647,7 @@ def get_diseases( @router.get("/documents", summary="List documents", tags=["Entities"]) def get_documents( request: fastapi.Request, - document_id: str = id_query("document"), + document_id: str | None = id_query("document"), include_deprecated: IncludeDeprecated = False, document: DocumentFilter = None, agent: AgentFilter = None, @@ -682,7 +682,7 @@ def get_documents( ) def get_function_consequences( request: fastapi.Request, - function_consequence_id: str = id_query("function consequence"), + function_consequence_id: str | None = id_query("function consequence"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -709,8 +709,8 @@ def get_function_consequences( @router.get("/genes", summary="List genes", tags=["Entities"]) def get_genes( request: fastapi.Request, - gene_id: str = id_query("gene"), - gene_name: str = name_query("gene", "BRAF"), + gene_id: str | None = id_query("gene"), + gene_name: str | None = name_query("gene", "BRAF"), gene: GeneFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): @@ -742,7 +742,7 @@ def get_genes( @router.get("/indications", summary="List indications", tags=["Entities"]) def get_indications( request: fastapi.Request, - indication_id: str = id_query("indication"), + indication_id: str | None = id_query("indication"), include_deprecated: IncludeDeprecated = False, indication: IndicationFilter = None, document: DocumentFilter = None, @@ -777,7 +777,7 @@ def get_indications( @router.get("/mappings", summary="List mappings", tags=["Entities"]) def get_mappings( request: fastapi.Request, - mapping_id: str = id_query("mapping"), + mapping_id: str | None = id_query("mapping"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -798,7 +798,7 @@ def get_mappings( @router.get("/propositions", summary="List propositions", tags=["Entities"]) def get_propositions( request: fastapi.Request, - proposition_id: str = id_query("proposition"), + proposition_id: str | None = id_query("proposition"), biomarker: BiomarkerFilter = None, biomarker_type: BiomarkerTypeFilter = None, gene: GeneFilter = None, @@ -832,7 +832,7 @@ def get_propositions( ) def get_search( request: fastapi.Request, - proposition_id: str = id_query("proposition"), + proposition_id: str | None = id_query("proposition"), include_empty: bool = fastapi.Query( default=False, description="Also return propositions with zero matching statements.", @@ -903,7 +903,7 @@ def get_search( @router.get("/sequence_locations", summary="List sequence locations", tags=["Entities"]) def get_sequence_locations( request: fastapi.Request, - sequence_location_id: str = id_query("sequence location"), + sequence_location_id: str | None = id_query("sequence location"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -934,7 +934,7 @@ def get_sequence_locations( ) def get_sequence_references( request: fastapi.Request, - sequence_reference_id: str = id_query("sequence reference"), + sequence_reference_id: str | None = id_query("sequence reference"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -961,11 +961,13 @@ def get_sequence_references( @router.get("/statements", summary="List statements", tags=["Entities"]) def get_statements( request: fastapi.Request, - statement_id: str = id_query("statement"), + statement_id: str | None = id_query("statement"), include_deprecated: IncludeDeprecated = False, proposition_id: typing.Annotated[ - list[str], - fastapi.Query(description="Proposition id. Repeat to match any of several."), + list[str] | None, + fastapi.Query( + description="Proposition id. Repeatable; matches any of the given values (OR).", + ), ] = None, biomarker: BiomarkerFilter = None, biomarker_type: BiomarkerTypeFilter = None, @@ -1010,7 +1012,7 @@ def get_statements( @router.get("/strengths", summary="List strengths", tags=["Entities"]) def get_strengths( request: fastapi.Request, - strength_name: str = name_query("strength"), + strength_name: str | None = name_query("strength"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ @@ -1036,8 +1038,8 @@ def get_strengths( @router.get("/therapies", summary="List therapies", tags=["Entities"]) def get_therapies( request: fastapi.Request, - therapy_id: str = id_query("therapy"), - therapy_name: str = name_query("therapy", "Dabrafenib"), + therapy_id: str | None = id_query("therapy"), + therapy_name: str | None = name_query("therapy", "Dabrafenib"), therapy: TherapyFilter = None, therapy_type: TherapyTypeFilter = None, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), @@ -1070,7 +1072,7 @@ def get_therapies( @router.get("/therapy_groups", summary="List therapy groups", tags=["Entities"]) def get_therapy_groups( request: fastapi.Request, - therapy_group_id: str = id_query("therapy group"), + therapy_group_id: str | None = id_query("therapy group"), database: sqlalchemy.orm.Session = fastapi.Depends(get_db), ): """ From 0de12d21505fde66a58a8860c5847f422fdff3d0 Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 06:02:09 -0400 Subject: [PATCH 03/14] Updated text --- app/main.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/main.py b/app/main.py index 70af1d1..4cb66e2 100644 --- a/app/main.py +++ b/app/main.py @@ -82,7 +82,14 @@ def create_app(config_path: str = "config.ini") -> fastapi.FastAPI: "The Molecular Oncology Almanac (MOAlmanac) is a paired knowledgebase and clinical interpretation " "algorithm for precision cancer medicine. Visit [our website](https://moalmanac.org) for more " "information.\n\n" - "**Filters.** Different filters combine with AND, and thus will return records matching both. For example: `?gene=BRAF&disease=Melanoma`. Repeating a filter combines its values with OR, and thus will return records matching either. For example: `?gene=BRAF&gene=KRAS`. On `/search`, `document`, `indication`, and `agent_id` instead narrow each proposition's statement aggregates; see that endpoint for details." + "**Filtering**\n\n" + "- Different filters combine with AND: `?gene=BRAF&disease=Melanoma` returns records " + "matching all of them.\n" + "- Repeating a filter combines its values with OR: `?gene=BRAF&gene=KRAS` returns records " + "matching any of them.\n" + "- Exception: on `/search`, the `document`, `indication`, and `agent_id` filters narrow " + "each proposition's statement aggregates rather than which propositions are returned. " + "See the `/search` endpoint for details." ), docs_url="/", license_info={ From 20ac433667bcadce275c77044aa03b297cee9aa6 Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 09:01:08 -0400 Subject: [PATCH 04/14] Added schemas to endpoints to show example queries --- app/main.py | 11 +- app/routers/main/routes.py | 245 ++++++++++++++-- app/schemas.py | 566 +++++++++++++++++++++++++++++++++++++ 3 files changed, 796 insertions(+), 26 deletions(-) create mode 100644 app/schemas.py diff --git a/app/main.py b/app/main.py index 4cb66e2..b3880aa 100644 --- a/app/main.py +++ b/app/main.py @@ -3,7 +3,7 @@ import fastapi -from app import database, dereferenced +from app import database, dereferenced, schemas from app.routers.main import router as main_router @@ -135,13 +135,18 @@ def create_app(config_path: str = "config.ini") -> fastapi.FastAPI: def openapi() -> dict: """ - Generates the OpenAPI schema once, without null branches on query parameters. + Generates the OpenAPI schema once, without null branches on query parameters + and with moalmanac-db's record schemas added as components. Returns: dict: The cached OpenAPI schema. """ if app.openapi_schema is None: - strip_nullable_query_parameters(schema=fastapi.FastAPI.openapi(app)) + schema = fastapi.FastAPI.openapi(app) + strip_nullable_query_parameters(schema=schema) + schema.setdefault("components", {}).setdefault("schemas", {}).update( + schemas.build_components(), + ) return app.openapi_schema app.openapi = openapi diff --git a/app/routers/main/routes.py b/app/routers/main/routes.py index 2ed61f8..d19aa93 100644 --- a/app/routers/main/routes.py +++ b/app/routers/main/routes.py @@ -6,7 +6,7 @@ import fastapi import sqlalchemy -from app import database, referenced +from app import database, referenced, schemas from . import handlers @@ -172,6 +172,19 @@ def generate_datetime_now() -> datetime.datetime: return datetime.datetime.now(datetime.UTC) +def format_timestamp(value: datetime.datetime) -> str: + """ + Formats a UTC datetime as an ISO 8601 string ending in `Z`. + + Args: + value (datetime.datetime): A timezone-aware UTC datetime. + + Returns: + str: The timestamp, e.g. "2026-10-16T14:03:12.123456Z". + """ + return value.astimezone(datetime.UTC).isoformat().replace("+00:00", "Z") + + def get_session_factory( request: fastapi.Request, ) -> sqlalchemy.orm.sessionmaker[sqlalchemy.orm.Session]: @@ -245,14 +258,14 @@ def create_response( elapsed = returned - received meta = { - "data_length": len(data) if hasattr(data, "__len__") else 1, + "data_length": len(data) if isinstance(data, list) else 1, "message": message, "request_url": request_url, "status": "success" if 200 <= status_code < 300 else "error", "status_code": status_code, "timestamp_elapsed": round(elapsed.total_seconds(), 6), - "timestamp_received": f"{received.isoformat()}Z" if received else None, - "timestamp_returned": f"{returned.isoformat()}Z", + "timestamp_received": format_timestamp(value=received), + "timestamp_returned": format_timestamp(value=returned), "trace_id": str(uuid.uuid4()), } return { @@ -381,7 +394,16 @@ def list_entities( ) -@router.get("/about", summary="Service metadata", tags=["Service Info"]) +@router.get( + "/about", + summary="Service metadata", + tags=["Service Info"], + responses=schemas.object_response( + component="About", + path="/about", + subject="About metadata", + ), +) def get_about( request: fastapi.Request, database: sqlalchemy.orm.Session = fastapi.Depends(get_db), @@ -401,7 +423,16 @@ def get_about( ) -@router.get("/agents", summary="List agents", tags=["Entities"]) +@router.get( + "/agents", + summary="List agents", + tags=["Entities"], + responses=schemas.list_response( + component="Agent", + path="/agents", + subject="Agents", + ), +) def get_agents( request: fastapi.Request, agent_name: str | None = name_query("agent", "Van Allen lab"), @@ -428,7 +459,16 @@ def get_agents( ) -@router.get("/alleles", summary="List alleles", tags=["Entities"]) +@router.get( + "/alleles", + summary="List alleles", + tags=["Entities"], + responses=schemas.list_response( + component="Allele", + path="/alleles", + subject="Alleles", + ), +) def get_alleles( request: fastapi.Request, allele_id: str | None = id_query("allele"), @@ -447,7 +487,16 @@ def get_alleles( ) -@router.get("/biomarkers", summary="List biomarkers", tags=["Entities"]) +@router.get( + "/biomarkers", + summary="List biomarkers", + tags=["Entities"], + responses=schemas.list_response( + component="Biomarker", + path="/biomarkers", + subject="Biomarkers", + ), +) def get_biomarkers( request: fastapi.Request, biomarker_id: str | None = id_query("biomarker"), @@ -483,7 +532,16 @@ def get_biomarkers( ) -@router.get("/biomarker_criteria", summary="List biomarker criteria", tags=["Entities"]) +@router.get( + "/biomarker_criteria", + summary="List biomarker criteria", + tags=["Entities"], + responses=schemas.list_response( + component="BiomarkerCriterion", + path="/biomarker_criteria", + subject="Biomarker criteria", + ), +) def get_biomarker_criteria( request: fastapi.Request, biomarker_criterion_id: str | None = id_query("biomarker criterion"), @@ -510,7 +568,16 @@ def get_biomarker_criteria( ) -@router.get("/codings", summary="List codings", tags=["Entities"]) +@router.get( + "/codings", + summary="List codings", + tags=["Entities"], + responses=schemas.list_response( + component="Coding", + path="/codings", + subject="Codings", + ), +) def get_codings( request: fastapi.Request, coding_id: str | None = id_query("coding"), @@ -530,7 +597,16 @@ def get_codings( ) -@router.get("/contributions", summary="List contributions", tags=["Entities"]) +@router.get( + "/contributions", + summary="List contributions", + tags=["Entities"], + responses=schemas.list_response( + component="ContributionResult", + path="/contributions", + subject="Contributions", + ), +) def get_contributions( request: fastapi.Request, contribution_id: str | None = id_query("contribution"), @@ -588,7 +664,16 @@ def get_contributions( return response -@router.get("/copy_changes", summary="List copy changes", tags=["Entities"]) +@router.get( + "/copy_changes", + summary="List copy changes", + tags=["Entities"], + responses=schemas.list_response( + component="CopyChange", + path="/copy_changes", + subject="Copy changes", + ), +) def get_copy_changes( request: fastapi.Request, copy_change_id: str | None = id_query("copy change"), @@ -611,7 +696,16 @@ def get_copy_changes( ) -@router.get("/diseases", summary="List diseases", tags=["Entities"]) +@router.get( + "/diseases", + summary="List diseases", + tags=["Entities"], + responses=schemas.list_response( + component="Disease", + path="/diseases", + subject="Diseases", + ), +) def get_diseases( request: fastapi.Request, disease_id: str | None = id_query("disease"), @@ -644,7 +738,16 @@ def get_diseases( ) -@router.get("/documents", summary="List documents", tags=["Entities"]) +@router.get( + "/documents", + summary="List documents", + tags=["Entities"], + responses=schemas.list_response( + component="Document", + path="/documents", + subject="Documents", + ), +) def get_documents( request: fastapi.Request, document_id: str | None = id_query("document"), @@ -679,6 +782,11 @@ def get_documents( "/function_consequences", summary="List function consequences", tags=["Entities"], + responses=schemas.list_response( + component="FunctionConsequence", + path="/function_consequences", + subject="Function consequences", + ), ) def get_function_consequences( request: fastapi.Request, @@ -706,7 +814,16 @@ def get_function_consequences( ) -@router.get("/genes", summary="List genes", tags=["Entities"]) +@router.get( + "/genes", + summary="List genes", + tags=["Entities"], + responses=schemas.list_response( + component="Gene", + path="/genes", + subject="Genes", + ), +) def get_genes( request: fastapi.Request, gene_id: str | None = id_query("gene"), @@ -739,7 +856,16 @@ def get_genes( ) -@router.get("/indications", summary="List indications", tags=["Entities"]) +@router.get( + "/indications", + summary="List indications", + tags=["Entities"], + responses=schemas.list_response( + component="Indication", + path="/indications", + subject="Indications", + ), +) def get_indications( request: fastapi.Request, indication_id: str | None = id_query("indication"), @@ -774,7 +900,16 @@ def get_indications( ) -@router.get("/mappings", summary="List mappings", tags=["Entities"]) +@router.get( + "/mappings", + summary="List mappings", + tags=["Entities"], + responses=schemas.list_response( + component="Mapping", + path="/mappings", + subject="Mappings", + ), +) def get_mappings( request: fastapi.Request, mapping_id: str | None = id_query("mapping"), @@ -795,7 +930,16 @@ def get_mappings( ) -@router.get("/propositions", summary="List propositions", tags=["Entities"]) +@router.get( + "/propositions", + summary="List propositions", + tags=["Entities"], + responses=schemas.list_response( + component="Proposition", + path="/propositions", + subject="Propositions", + ), +) def get_propositions( request: fastapi.Request, proposition_id: str | None = id_query("proposition"), @@ -829,6 +973,11 @@ def get_propositions( "/search", summary="Search propositions with statement aggregates", tags=["Search"], + responses=schemas.list_response( + component="SearchResult", + path="/search", + subject="Search results by Proposition", + ), ) def get_search( request: fastapi.Request, @@ -900,7 +1049,16 @@ def get_search( ) -@router.get("/sequence_locations", summary="List sequence locations", tags=["Entities"]) +@router.get( + "/sequence_locations", + summary="List sequence locations", + tags=["Entities"], + responses=schemas.list_response( + component="SequenceLocation", + path="/sequence_locations", + subject="Sequence locations", + ), +) def get_sequence_locations( request: fastapi.Request, sequence_location_id: str | None = id_query("sequence location"), @@ -931,6 +1089,11 @@ def get_sequence_locations( "/sequence_references", summary="List sequence references", tags=["Entities"], + responses=schemas.list_response( + component="SequenceReference", + path="/sequence_references", + subject="Sequence references", + ), ) def get_sequence_references( request: fastapi.Request, @@ -958,7 +1121,16 @@ def get_sequence_references( ) -@router.get("/statements", summary="List statements", tags=["Entities"]) +@router.get( + "/statements", + summary="List statements", + tags=["Entities"], + responses=schemas.list_response( + component="Statement", + path="/statements", + subject="Statements", + ), +) def get_statements( request: fastapi.Request, statement_id: str | None = id_query("statement"), @@ -1009,7 +1181,16 @@ def get_statements( ) -@router.get("/strengths", summary="List strengths", tags=["Entities"]) +@router.get( + "/strengths", + summary="List strengths", + tags=["Entities"], + responses=schemas.list_response( + component="Strength", + path="/strengths", + subject="Strengths", + ), +) def get_strengths( request: fastapi.Request, strength_name: str | None = name_query("strength"), @@ -1035,7 +1216,16 @@ def get_strengths( ) -@router.get("/therapies", summary="List therapies", tags=["Entities"]) +@router.get( + "/therapies", + summary="List therapies", + tags=["Entities"], + responses=schemas.list_response( + component="Therapy", + path="/therapies", + subject="Therapies", + ), +) def get_therapies( request: fastapi.Request, therapy_id: str | None = id_query("therapy"), @@ -1069,7 +1259,16 @@ def get_therapies( ) -@router.get("/therapy_groups", summary="List therapy groups", tags=["Entities"]) +@router.get( + "/therapy_groups", + summary="List therapy groups", + tags=["Entities"], + responses=schemas.list_response( + component="TherapyGroup", + path="/therapy_groups", + subject="Therapy groups", + ), +) def get_therapy_groups( request: fastapi.Request, therapy_group_id: str | None = id_query("therapy group"), diff --git a/app/schemas.py b/app/schemas.py new file mode 100644 index 0000000..0540d55 --- /dev/null +++ b/app/schemas.py @@ -0,0 +1,566 @@ +""" +OpenAPI response schemas, built from moalmanac-db's JSON Schemas. + +The API returns moalmanac-db's dereferenced records unchanged, so its response +schemas are moalmanac-db's own `schemas/dereferenced/*.schema.json` (plus +`schemas/referenced/about.schema.json` for service metadata), copied into the +OpenAPI document's `components/schemas`. moalmanac-db stays the single source of +truth: updating the submodule updates the API documentation. + +These schemas only document responses. Routes do not set `response_model`, so +nothing is validated or re-serialized at request time. + +The db schemas reference each other with relative file `$ref`s +(`genes.schema.json#/$defs/Gene`) and local `$defs` (`#/$defs/Gene`), resolved +through each schema's `$id`. Swagger UI resolves `$ref`s against the OpenAPI +document instead, so each schema's `$defs` become components of their own and +every `$ref` is rewritten to point at `#/components/schemas/...`. + +Each record schema's example is a real record from moalmanac-db's `dereferenced/` +directory (see `EXAMPLE_IDS`). Any other string field with a `pattern` gets a +placeholder from the pattern's literal prefix (e.g. `coding:string`), because +Swagger UI otherwise generates a random string matching the regex. +""" + +import copy +import json +import pathlib +import re +import typing + +DB_DIRECTORY = pathlib.Path(__file__).parent.parent / "moalmanac-db" +DEREFERENCED_DIRECTORY = DB_DIRECTORY / "dereferenced" +SCHEMAS_DIRECTORY = DB_DIRECTORY / "schemas" +COMPONENTS_PREFIX = "#/components/schemas/" + +# The record used as each entity's example, keyed by its `dereferenced/` directory. +# Together they follow one statement: FDA approval of dabrafenib for BRAF p.V600E +# melanoma. If an id no longer exists, the directory's first record is used. +EXAMPLE_IDS = { + "agents": "agent:org:fda", + "alleles": "ga4gh:VA.j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "biomarker_criteria": "bmkr.criterion:16", + "biomarkers": "bmkr:16", + "codings": "coding:hgnc:1097", + "contributions": "ctrb:fda:2013-05-29:0", + "diseases": "dis:ncit:C3224", + "documents": "doc:fda:tafinlar", + "genes": "gene:hgnc:1097", + "indications": "ind:fda:tafinlar:0", + "mappings": "map:hgnc:1097::ncbi:673", + "propositions": "prop:vtxr:88", + "sequence_locations": "ga4gh:SL.t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "sequence_references": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "statements": "stmt:fda:tafinlar:0:0", + "strengths": "str:ncit:C25425", + "therapies": "tx:ncit:C82386", + "therapy_groups": "txgrp:18", +} + +# Hand-written, matching `create_response` in app/routers/main/routes.py. +META_SCHEMA = { + "title": "Meta", + "description": "Information about the request and response.", + "type": "object", + "required": [ + "data_length", + "message", + "request_url", + "status", + "status_code", + "timestamp_elapsed", + "timestamp_received", + "timestamp_returned", + "trace_id", + ], + "properties": { + "data_length": { + "type": "integer", + "description": "Number of records in `data`, or 1 for a single object.", + }, + "message": { + "type": "string", + "description": "Human-readable status message.", + }, + "request_url": { + "type": ["string", "null"], + "description": "The full URL of the request.", + }, + "status": {"type": "string", "enum": ["success", "error"]}, + "status_code": {"type": "integer", "examples": [200]}, + "timestamp_elapsed": { + "type": "number", + "description": "Seconds between receiving the request and returning it.", + }, + "timestamp_received": { + "type": "string", + "format": "date-time", + "description": "When the request was received, in UTC.", + "examples": ["2026-10-16T14:03:12.123456Z"], + }, + "timestamp_returned": { + "type": "string", + "format": "date-time", + "description": "When the response was returned, in UTC.", + "examples": ["2026-10-16T14:03:12.123456Z"], + }, + "trace_id": { + "type": "string", + "format": "uuid", + "description": "Unique id for this response.", + }, + }, + "additionalProperties": False, +} + +CONTRIBUTION_RECORDS_EXTENSION_SCHEMA = { + "type": "object", + "required": ["name", "value", "description"], + "properties": { + "name": {"const": "records"}, + "value": { + "type": "array", + "description": "Indications and statements this contribution was made to.", + "items": { + "type": "object", + "required": ["id", "type", "name", "description"], + "properties": { + "id": {"type": "string"}, + "type": {"type": "string", "enum": ["Indication", "Statement"]}, + "name": {"type": ["string", "null"]}, + "description": {"type": ["string", "null"]}, + }, + "additionalProperties": False, + }, + }, + "description": {"type": "string"}, + }, + "additionalProperties": False, +} + +SEARCH_AGGREGATES_SCHEMA = { + "title": "Search aggregates", + "description": ( + "Counts of Active statements made about this proposition, narrowed by the " + "`document`, `indication`, and `agent_id` filters." + ), + "type": "object", + "required": [ + "statement_count", + "by_direction", + "by_document", + "by_agent", + "by_strength", + ], + "properties": { + "statement_count": {"type": "integer"}, + "by_direction": { + "type": "array", + "items": { + "type": "object", + "required": ["direction", "count"], + "properties": { + "direction": {"type": ["string", "null"]}, + "count": {"type": "integer"}, + }, + "additionalProperties": False, + }, + }, + **{ + key: { + "type": "array", + "items": { + "type": "object", + "required": ["id", "count"], + "properties": { + "id": {"type": "string", "description": description}, + "count": {"type": "integer"}, + }, + "additionalProperties": False, + }, + } + for key, description in ( + ("by_document", "Document id."), + ("by_agent", "Agent id."), + ("by_strength", "Strength id."), + ) + }, + }, + "additionalProperties": False, +} + + +def add_pattern_examples(node: typing.Any) -> typing.Any: + """ + Gives every string schema with a `pattern` and no examples a placeholder + example, in place. + + Args: + node (typing.Any): A schema, or any value within one. + + Returns: + typing.Any: `node`, with placeholder examples added. + """ + if isinstance(node, list): + for item in node: + add_pattern_examples(node=item) + elif isinstance(node, dict): + pattern = node.get("pattern") + if ( + isinstance(pattern, str) + and node.get("type", "string") == "string" + and "examples" not in node + ): + example = pattern_example(pattern=pattern) + if example is not None: + node["examples"] = [example] + for value in node.values(): + add_pattern_examples(node=value) + return node + + +def build_components() -> dict[str, dict]: + """ + Builds the OpenAPI component schemas for every API response. + + Returns: + dict[str, dict]: Component schemas keyed by name: one per db schema + (named by its `title`, e.g. `Agent`), one per `$defs` entry (e.g. + `Indication.FDAIndication`), plus `Meta` and the API-specific + `SearchResult` and `ContributionResult`. + """ + paths = [ + *sorted((SCHEMAS_DIRECTORY / "dereferenced").glob("*.schema.json")), + SCHEMAS_DIRECTORY / "referenced" / "about.schema.json", + ] + loaded = {path.name: json.loads(path.read_text()) for path in paths} + titles = {filename: schema["title"] for filename, schema in loaded.items()} + + components: dict[str, dict] = {} + for filename, schema in loaded.items(): + title = titles[filename] + schema = copy.deepcopy(schema) + schema.pop("$schema", None) + schema.pop("$id", None) + definitions = schema.pop("$defs", {}) + example = load_example(filename=filename) + if example is not None: + schema["examples"] = [example] + components[title] = rewrite_references( + node=schema, + filename=filename, + titles=titles, + ) + for name, definition in definitions.items(): + component_name = definition_component_name(title=title, name=name) + if component_name in components: + raise ValueError(f"Duplicate component name {component_name}.") + components[component_name] = rewrite_references( + node=definition, + filename=filename, + titles=titles, + ) + + search_result = copy.deepcopy(components["Proposition"]) + search_result["title"] = "SearchResult" + search_result["examples"] = [search_result_example(components=components)] + search_result["description"] = ( + "A Proposition with aggregated information about the statements made about it." + ) + search_result["properties"]["aggregates"] = SEARCH_AGGREGATES_SCHEMA + search_result.setdefault("required", []).append("aggregates") + components["SearchResult"] = search_result + + contribution_result = copy.deepcopy(components["Contribution"]) + contribution_result["title"] = "ContributionResult" + contribution_result["description"] = ( + "A Contribution, with a `records` extension when requested with " + "`include_records=true`." + ) + contribution_result["properties"]["extensions"] = { + "type": "array", + "items": CONTRIBUTION_RECORDS_EXTENSION_SCHEMA, + } + components["ContributionResult"] = contribution_result + + components["Meta"] = META_SCHEMA + add_pattern_examples(node=components) + return components + + +def definition_component_name(title: str, name: str) -> str: + """ + Names the component for one `$defs` entry of a db schema. + + OpenAPI component names may only contain letters, digits, `.`, `-`, and `_`, + so `name` is converted to PascalCase. + + Args: + title (str): The title of the schema the definition belongs to, e.g. + "Indication". + name (str): The `$defs` key, e.g. "FDA Indication". + + Returns: + str: The component name, e.g. "Indication.FDAIndication". + """ + words = re.split(r"[^A-Za-z0-9]+", name) + return f"{title}." + "".join(word[:1].upper() + word[1:] for word in words) + + +def envelope(data: dict, path: str, message: str) -> dict: + """ + Wraps a `data` schema in the standard response envelope of meta, service, and + data. + + Args: + data (dict): The schema for the `data` key. + path (str): The endpoint's path, for the example `meta`, e.g. "/agents". + message (str): The endpoint's `meta.message`, for the example `meta`. + + Returns: + dict: The envelope schema. + """ + return { + "type": "object", + "required": ["meta", "service", "data"], + "properties": { + "meta": { + "$ref": f"{COMPONENTS_PREFIX}Meta", + "examples": [meta_example(path=path, message=message)], + }, + "service": { + "$ref": f"{COMPONENTS_PREFIX}About", + "description": "Service and database release metadata.", + }, + "data": data, + }, + "additionalProperties": False, + } + + +def list_response( + component: str, + path: str, + subject: str, +) -> dict[int | str, dict[str, typing.Any]]: + """ + Builds a route's `responses` for an endpoint returning a list of records. + + Args: + component (str): The component name of one record, e.g. "Agent". + path (str): The endpoint's path, e.g. "/agents". + subject (str): The subject of the endpoint's `meta.message`, e.g. "Agents". + + Returns: + dict[int | str, dict[str, typing.Any]]: The value for the route's + `responses` argument. + """ + return { + 200: { + "description": f"Matching {component} records.", + "content": { + "application/json": { + "schema": envelope( + data={ + "type": "array", + "items": {"$ref": f"{COMPONENTS_PREFIX}{component}"}, + }, + path=path, + message=f"{subject} retrieved successfully", + ), + }, + }, + }, + } + + +def load_example(filename: str) -> dict | None: + """ + Loads the moalmanac-db record used as the example for one db schema. + + Args: + filename (str): The schema's filename, e.g. "agents.schema.json". + + Returns: + dict | None: The record named in `EXAMPLE_IDS`, or the directory's first + record if that id no longer exists, or None if the schema has no + record directory (e.g. `extension.schema.json`). + """ + if filename == "about.schema.json": + return json.loads((DB_DIRECTORY / "referenced" / "about.json").read_text()) + + directory = DEREFERENCED_DIRECTORY / filename.removesuffix(".schema.json") + if not directory.is_dir(): + return None + + record_id = EXAMPLE_IDS.get(directory.name, "") + path = directory / f"{record_id.replace(':', '_')}.json" + if not path.is_file(): + records = sorted(directory.glob("*.json")) + if not records: + return None + path = records[0] + return json.loads(path.read_text()) + + +def meta_example(path: str, message: str) -> dict: + """ + Builds an example `meta` block for one endpoint. + + Args: + path (str): The endpoint's path, e.g. "/agents". + message (str): The endpoint's `meta.message`. + + Returns: + dict: An example `meta` block describing a one-record response. + """ + return { + "data_length": 1, + "message": message, + "request_url": f"https://api.moalmanac.org{path}", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + } + + +def object_response( + component: str, + path: str, + subject: str, +) -> dict[int | str, dict[str, typing.Any]]: + """ + Builds a route's `responses` for an endpoint returning a single object. + + Args: + component (str): The component name of the object, e.g. "About". + path (str): The endpoint's path, e.g. "/about". + subject (str): The subject of the endpoint's `meta.message`, e.g. + "About metadata". + + Returns: + dict[int | str, dict[str, typing.Any]]: The value for the route's + `responses` argument. + """ + return { + 200: { + "description": f"The {component} record.", + "content": { + "application/json": { + "schema": envelope( + data={"$ref": f"{COMPONENTS_PREFIX}{component}"}, + path=path, + message=f"{subject} retrieved successfully", + ), + }, + }, + }, + } + + +def pattern_example(pattern: str) -> str | None: + """ + Builds a placeholder example from the literal prefix of a regex pattern. + + Args: + pattern (str): The regex, e.g. "^bmkr\\.criterion:\\d+$". + + Returns: + str | None: The literal prefix followed by "string", e.g. + "bmkr.criterion:string", or None if the pattern has no literal prefix. + """ + if not pattern.startswith("^"): + return None + + prefix = "" + characters = iter(pattern[1:]) + for character in characters: + if character == "\\": + escaped = next(characters, "") + if escaped.isalnum() or not escaped: + break + prefix += escaped + elif character in ".[](){}*+?|$^": + break + else: + prefix += character + return f"{prefix}string" if prefix else None + + +def rewrite_references( + node: typing.Any, + filename: str, + titles: dict[str, str], +) -> typing.Any: + """ + Rewrites every `$ref` in a db schema to point into `#/components/schemas`. + + Args: + node (typing.Any): A schema, or any value within one. + filename (str): The file the schema came from, which local `#/$defs/...` + references resolve against. + titles (dict[str, str]): Schema titles keyed by filename. + + Returns: + typing.Any: `node`, with `$ref`s rewritten in place. + + Raises: + ValueError: If a `$ref` is not of a form used by moalmanac-db's schemas. + """ + if isinstance(node, list): + for item in node: + rewrite_references(node=item, filename=filename, titles=titles) + elif isinstance(node, dict): + reference = node.get("$ref") + if isinstance(reference, str): + target, _, fragment = reference.partition("#") + target = target or filename + if target not in titles: + raise ValueError(f"Unknown $ref target {reference!r} in {filename}.") + target_title = titles[target] + if fragment == "": + node["$ref"] = f"{COMPONENTS_PREFIX}{target_title}" + elif fragment.startswith("/$defs/"): + name = fragment.removeprefix("/$defs/") + node["$ref"] = COMPONENTS_PREFIX + definition_component_name( + title=target_title, + name=name, + ) + else: + raise ValueError(f"Unsupported $ref {reference!r} in {filename}.") + for key, value in node.items(): + if key != "$ref": + rewrite_references(node=value, filename=filename, titles=titles) + return node + + +def search_result_example(components: dict[str, dict]) -> dict: + """ + Builds the SearchResult example: the example Proposition, with aggregates + counting only the example Statement, which is made about that proposition. + + Args: + components (dict[str, dict]): Component schemas built so far, including + examples for `Proposition` and `Statement`. + + Returns: + dict: An illustrative `/search` result. + """ + proposition = components["Proposition"]["examples"][0] + statement = components["Statement"]["examples"][0] + return { + **proposition, + "aggregates": { + "statement_count": 1, + "by_direction": [{"direction": statement["direction"], "count": 1}], + "by_document": [ + {"id": document["id"], "count": 1} + for document in statement["reportedIn"] + ], + "by_agent": [{"id": EXAMPLE_IDS["agents"], "count": 1}], + "by_strength": [{"id": statement["strength"]["id"], "count": 1}], + }, + } From aa824b7749e346848a3a67cf10f87f71e7666183 Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 10:20:12 -0400 Subject: [PATCH 05/14] Fixed disease test fixtures --- tests/test_filters.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_filters.py b/tests/test_filters.py index 4a093ec..67145bd 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -257,7 +257,7 @@ def test_search_by_document_narrows_aggregates_not_selection( "path, id_param, record_id", [ ("/biomarkers", "biomarker_id", "bmkr:12"), - ("/diseases", "disease_id", "dis:oncotree:ALL"), + ("/diseases", "disease_id", "dis:ncit:C3167"), ("/genes", "gene_id", "gene:hgnc:76"), ("/therapies", "therapy_id", "tx:ncit:C62528"), ], @@ -287,7 +287,7 @@ def test_id_parameter_returns_single_record( [ ("/agents", "agent_name", "Food and Drug Administration", "agent:org:fda"), ("/biomarkers", "biomarker_name", "BCR::ABL1", "bmkr:12"), - ("/diseases", "disease_name", "Acute Lymphoid Leukemia", "dis:oncotree:ALL"), + ("/diseases", "disease_name", "Acute Lymphoblastic Leukemia", "dis:ncit:C3167"), ("/genes", "gene_name", "BRAF", "gene:hgnc:1097"), ("/strengths", "strength_name", "Approval", "str:ncit:C25425"), ("/therapies", "therapy_name", "Imatinib", "tx:ncit:C62035"), From b3982ec6289add8462c238b0ab6724b203500e0d Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 10:25:03 -0400 Subject: [PATCH 06/14] agent_type no longer filters documents, indications, or statements --- app/routers/main/handlers.py | 9 +++++++-- tests/test_filters.py | 25 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/app/routers/main/handlers.py b/app/routers/main/handlers.py index cbd59b1..4089f9d 100644 --- a/app/routers/main/handlers.py +++ b/app/routers/main/handlers.py @@ -509,7 +509,8 @@ def perform_joins( ) -> tuple[sqlalchemy.Select, set[type[models.Base]]]: """ Filters by `document` (id), and `agent`/`agent_id` (delegated to - Agents.perform_joins once Documents is joined). + Agents.perform_joins once Documents is joined). `agent_type` is not a + filter on Documents, Indications, or Statements, so it is ignored. When `base_table` is Statements, joins through AssociationDocumentsAndStatements (`reportedIn`); when Indications, through @@ -566,7 +567,11 @@ def perform_joins( statement, joined_tables = Agents.perform_joins( statement=statement, - parameters=parameters, + parameters={ + key: values + for key, values in parameters.items() + if key != "agent_type" + }, base_table=models.Documents, joined_tables=joined_tables, ) diff --git a/tests/test_filters.py b/tests/test_filters.py index 67145bd..bb3202a 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -355,6 +355,31 @@ def test_include_deprecated_returns_deprecated_records( assert [record["id"] for record in response.json()["data"]] == [deprecated_id] +@pytest.mark.parametrize( + "path, params", + [ + ("/documents", {"agent_id": "agent:org:fda"}), + ("/indications", {"agent_id": "agent:org:fda"}), + ("/statements", {"agent_id": "agent:org:fda", "gene": "BRAF"}), + ], +) +def test_agent_type_is_ignored_by_document_filters( + path: str, + params: dict[str, str], + client: fastapi.testclient.TestClient, +): + """ + Ensures agent_type, which is not a filter on these endpoints, does not change + their results, even alongside an agent filter that is. + """ + expected = client.get(path, params=params).json()["data"] + assert expected + + response = client.get(path, params={**params, "agent_type": "contributor"}) + assert response.status_code == 200 + assert [r["id"] for r in response.json()["data"]] == [r["id"] for r in expected] + + def test_contributions_include_records_lists_contributed_records( client: fastapi.testclient.TestClient, ): From 47fa62e98a61981e5e5ed2845c1b330bccff654d Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 10:42:17 -0400 Subject: [PATCH 07/14] Generate OpenAPI docs with commit and PRs to main branch --- .github/workflows/ci.yml | 60 + app/dereferenced.py | 2 +- app/routers/main/__init__.py | 2 + docs/openapi.json | 11278 ++++++++++++++++++++++++++++++++ run.py | 3 +- scripts/export_openapi.py | 80 + update_submodule_to_commit.sh | 22 +- 7 files changed, 11443 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 docs/openapi.json create mode 100644 scripts/export_openapi.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ce5b2df --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,60 @@ +name: CI + +on: + push: + branches: ["main"] + pull_request: + workflow_dispatch: + +permissions: + contents: read + +jobs: + checks: + name: Lint and OpenAPI schema + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: "pip" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Lint + run: ruff check app scripts tests run.py + + - name: Check docs/openapi.json is up to date + run: python scripts/export_openapi.py --check + + tests: + name: Tests + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: "pip" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run tests + run: python -m pytest -q diff --git a/app/dereferenced.py b/app/dereferenced.py index 8052d77..3929e62 100644 --- a/app/dereferenced.py +++ b/app/dereferenced.py @@ -33,7 +33,7 @@ if str(_MOALMANAC_DB_ROOT) not in sys.path: sys.path.insert(0, str(_MOALMANAC_DB_ROOT)) -from utils import dereference +from utils import dereference # noqa: E402 (needs moalmanac-db on sys.path first) # Every table `dereference.Database` needs to resolve foreign keys, keyed by the # same names as app.referenced.TABLES. `urls` has no entry in _CONCEPT_DIRS (it is diff --git a/app/routers/main/__init__.py b/app/routers/main/__init__.py index 3a27ef1..1b2eccc 100644 --- a/app/routers/main/__init__.py +++ b/app/routers/main/__init__.py @@ -1 +1,3 @@ from .routes import router + +__all__ = ["router"] diff --git a/docs/openapi.json b/docs/openapi.json new file mode 100644 index 0000000..7070df3 --- /dev/null +++ b/docs/openapi.json @@ -0,0 +1,11278 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Molecular Oncology Almanac API", + "description": "The Molecular Oncology Almanac (MOAlmanac) is a paired knowledgebase and clinical interpretation algorithm for precision cancer medicine. Visit [our website](https://moalmanac.org) for more information.\n\n**Filtering**\n\n- Different filters combine with AND: `?gene=BRAF&disease=Melanoma` returns records matching all of them.\n- Repeating a filter combines its values with OR: `?gene=BRAF&gene=KRAS` returns records matching any of them.\n- Exception: on `/search`, the `document`, `indication`, and `agent_id` filters narrow each proposition's statement aggregates rather than which propositions are returned. See the `/search` endpoint for details.", + "contact": { + "name": "MOAlmanac API GitHub", + "url": "https://github.com/vanallenlab/moalmanac-api" + }, + "license": { + "name": "License: GNU GPL, Version 2", + "url": "https://github.com/vanallenlab/moalmanac-api/blob/main/LICENSE" + }, + "version": "draft" + }, + "paths": { + "/about": { + "get": { + "tags": [ + "Service Info" + ], + "summary": "Service metadata", + "description": "Retrieves service metadata from the About table in the database.", + "operationId": "get_about_about_get", + "responses": { + "200": { + "description": "The About record.", + "content": { + "application/json": { + "schema": { + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "About metadata retrieved successfully", + "request_url": "https://api.moalmanac.org/about", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "$ref": "#/components/schemas/About" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "meta", + "service", + "data" + ] + } + } + } + } + } + } + }, + "/agents": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List agents", + "description": "Retrieves Agents from the database. Filters by agent_name, agent_id, and\nagent_type. agent_name is matched case-insensitively.", + "operationId": "get_agents_agents_get", + "parameters": [ + { + "name": "agent_name", + "in": "query", + "required": false, + "schema": { + "description": "Return agent records with this name, ignoring case.", + "examples": [ + "Van Allen lab" + ], + "title": "Agent Name", + "type": "string" + }, + "description": "Return agent records with this name, ignoring case." + }, + { + "name": "agent", + "in": "query", + "required": false, + "schema": { + "description": "Agent name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Van Allen lab" + ] + ], + "title": "Agent", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "schema": { + "description": "Agent id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "agent:user:vanallenlab" + ] + ], + "title": "Agent Id", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent_type", + "in": "query", + "required": false, + "schema": { + "description": "Agent type. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "organization" + ] + ], + "title": "Agent Type", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent type. Repeatable; matches any of the given values (OR)." + } + ], + "responses": { + "200": { + "description": "Matching Agent records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Agents retrieved successfully", + "request_url": "https://api.moalmanac.org/agents", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Agent" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/alleles": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List alleles", + "description": "Retrieves Alleles from the database.", + "operationId": "get_alleles_alleles_get", + "parameters": [ + { + "name": "allele_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the allele with this id.", + "title": "Allele Id", + "type": "string" + }, + "description": "Return only the allele with this id." + } + ], + "responses": { + "200": { + "description": "Matching Allele records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Alleles retrieved successfully", + "request_url": "https://api.moalmanac.org/alleles", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Allele" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/biomarkers": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List biomarkers", + "description": "Retrieves Biomarkers from the database. Filters by biomarker_id,\nbiomarker_name, biomarker_type, and gene. biomarker_name is matched\ncase-insensitively.", + "operationId": "get_biomarkers_biomarkers_get", + "parameters": [ + { + "name": "biomarker_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the biomarker with this id.", + "title": "Biomarker Id", + "type": "string" + }, + "description": "Return only the biomarker with this id." + }, + { + "name": "biomarker_name", + "in": "query", + "required": false, + "schema": { + "description": "Return biomarker records with this name, ignoring case.", + "examples": [ + "BRAF p.V600E" + ], + "title": "Biomarker Name", + "type": "string" + }, + "description": "Return biomarker records with this name, ignoring case." + }, + { + "name": "biomarker", + "in": "query", + "required": false, + "schema": { + "description": "Biomarker name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "BRAF p.V600E" + ] + ], + "title": "Biomarker", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Biomarker name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "biomarker_type", + "in": "query", + "required": false, + "schema": { + "description": "Biomarker type. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Somatic variant" + ] + ], + "title": "Biomarker Type", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Biomarker type. Repeatable; matches any of the given values (OR)." + }, + { + "name": "gene", + "in": "query", + "required": false, + "schema": { + "description": "Gene symbol, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "BRAF" + ] + ], + "title": "Gene", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Gene symbol, matched exactly. Repeatable; matches any of the given values (OR)." + } + ], + "responses": { + "200": { + "description": "Matching Biomarker records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Biomarkers retrieved successfully", + "request_url": "https://api.moalmanac.org/biomarkers", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Biomarker" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/biomarker_criteria": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List biomarker criteria", + "description": "Retrieves Biomarker Criteria from the database.", + "operationId": "get_biomarker_criteria_biomarker_criteria_get", + "parameters": [ + { + "name": "biomarker_criterion_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the biomarker criterion with this id.", + "title": "Biomarker Criterion Id", + "type": "string" + }, + "description": "Return only the biomarker criterion with this id." + } + ], + "responses": { + "200": { + "description": "Matching BiomarkerCriterion records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Biomarker criteria retrieved successfully", + "request_url": "https://api.moalmanac.org/biomarker_criteria", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BiomarkerCriterion" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/codings": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List codings", + "description": "Retrieves Codings from the database. Codings are representations of a concept\nfrom another website.", + "operationId": "get_codings_codings_get", + "parameters": [ + { + "name": "coding_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the coding with this id.", + "title": "Coding Id", + "type": "string" + }, + "description": "Return only the coding with this id." + } + ], + "responses": { + "200": { + "description": "Matching Coding records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Codings retrieved successfully", + "request_url": "https://api.moalmanac.org/codings", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Coding" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/contributions": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List contributions", + "description": "Retrieves Contributions from the database. Filters by contribution_id, agent,\nand agent_id. When include_records=true, each contribution gains a `records`\nextension listing the indications and statements it was made to, as\n{id, type, name, description}.", + "operationId": "get_contributions_contributions_get", + "parameters": [ + { + "name": "contribution_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the contribution with this id.", + "title": "Contribution Id", + "type": "string" + }, + "description": "Return only the contribution with this id." + }, + { + "name": "include_records", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "description": "Add a `records` extension listing the indications and statements each contribution was made to.", + "default": false, + "title": "Include Records" + }, + "description": "Add a `records` extension listing the indications and statements each contribution was made to." + }, + { + "name": "contribution", + "in": "query", + "required": false, + "schema": { + "description": "Contribution id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "ctrb:vanallenlab:2024-10-30:0" + ] + ], + "title": "Contribution", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Contribution id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent", + "in": "query", + "required": false, + "schema": { + "description": "Agent name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Van Allen lab" + ] + ], + "title": "Agent", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "schema": { + "description": "Agent id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "agent:user:vanallenlab" + ] + ], + "title": "Agent Id", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent_type", + "in": "query", + "required": false, + "schema": { + "description": "Agent type. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "organization" + ] + ], + "title": "Agent Type", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent type. Repeatable; matches any of the given values (OR)." + } + ], + "responses": { + "200": { + "description": "Matching ContributionResult records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Contributions retrieved successfully", + "request_url": "https://api.moalmanac.org/contributions", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ContributionResult" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/copy_changes": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List copy changes", + "description": "Retrieves Copy Changes from the database.", + "operationId": "get_copy_changes_copy_changes_get", + "parameters": [ + { + "name": "copy_change_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the copy change with this id.", + "title": "Copy Change Id", + "type": "string" + }, + "description": "Return only the copy change with this id." + } + ], + "responses": { + "200": { + "description": "Matching CopyChange records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Copy changes retrieved successfully", + "request_url": "https://api.moalmanac.org/copy_changes", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CopyChange" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/diseases": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List diseases", + "description": "Retrieves Diseases from the database. Filters by disease_id and disease_name.\ndisease_name is matched case-insensitively.", + "operationId": "get_diseases_diseases_get", + "parameters": [ + { + "name": "disease_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the disease with this id.", + "title": "Disease Id", + "type": "string" + }, + "description": "Return only the disease with this id." + }, + { + "name": "disease_name", + "in": "query", + "required": false, + "schema": { + "description": "Return disease records with this name, ignoring case.", + "examples": [ + "Melanoma" + ], + "title": "Disease Name", + "type": "string" + }, + "description": "Return disease records with this name, ignoring case." + }, + { + "name": "disease", + "in": "query", + "required": false, + "schema": { + "description": "Disease name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Melanoma" + ] + ], + "title": "Disease", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Disease name, matched exactly. Repeatable; matches any of the given values (OR)." + } + ], + "responses": { + "200": { + "description": "Matching Disease records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Diseases retrieved successfully", + "request_url": "https://api.moalmanac.org/diseases", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Disease" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/documents": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List documents", + "description": "Retrieves Documents from the database. Filters by document_id, agent, and\nagent_id. Only Active documents are returned, unless include_deprecated=true,\nwhich also returns Deprecated documents. Deprecated documents are always\nreturned when requested by document_id.", + "operationId": "get_documents_documents_get", + "parameters": [ + { + "name": "document_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the document with this id.", + "title": "Document Id", + "type": "string" + }, + "description": "Return only the document with this id." + }, + { + "name": "include_deprecated", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "description": "Also return deprecated records. Ignored when requesting a single record by id, which is always returned.", + "default": false, + "title": "Include Deprecated" + }, + "description": "Also return deprecated records. Ignored when requesting a single record by id, which is always returned." + }, + { + "name": "document", + "in": "query", + "required": false, + "schema": { + "description": "Document id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "doc:fda:verzenio" + ] + ], + "title": "Document", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Document id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent", + "in": "query", + "required": false, + "schema": { + "description": "Agent name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Van Allen lab" + ] + ], + "title": "Agent", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "schema": { + "description": "Agent id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "agent:user:vanallenlab" + ] + ], + "title": "Agent Id", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent id. Repeatable; matches any of the given values (OR)." + } + ], + "responses": { + "200": { + "description": "Matching Document records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Documents retrieved successfully", + "request_url": "https://api.moalmanac.org/documents", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Document" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/function_consequences": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List function consequences", + "description": "Retrieves Function Consequences from the database.", + "operationId": "get_function_consequences_function_consequences_get", + "parameters": [ + { + "name": "function_consequence_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the function consequence with this id.", + "title": "Function Consequence Id", + "type": "string" + }, + "description": "Return only the function consequence with this id." + } + ], + "responses": { + "200": { + "description": "Matching FunctionConsequence records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Function consequences retrieved successfully", + "request_url": "https://api.moalmanac.org/function_consequences", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FunctionConsequence" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/genes": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List genes", + "description": "Retrieves Genes from the database. Filters by gene_id and gene_name.\ngene_name is matched case-insensitively.", + "operationId": "get_genes_genes_get", + "parameters": [ + { + "name": "gene_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the gene with this id.", + "title": "Gene Id", + "type": "string" + }, + "description": "Return only the gene with this id." + }, + { + "name": "gene_name", + "in": "query", + "required": false, + "schema": { + "description": "Return gene records with this name, ignoring case.", + "examples": [ + "BRAF" + ], + "title": "Gene Name", + "type": "string" + }, + "description": "Return gene records with this name, ignoring case." + }, + { + "name": "gene", + "in": "query", + "required": false, + "schema": { + "description": "Gene symbol, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "BRAF" + ] + ], + "title": "Gene", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Gene symbol, matched exactly. Repeatable; matches any of the given values (OR)." + } + ], + "responses": { + "200": { + "description": "Matching Gene records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Genes retrieved successfully", + "request_url": "https://api.moalmanac.org/genes", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Gene" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/indications": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List indications", + "description": "Retrieves Indications (regulatory approvals) from the database. Filters by\nindication_id, document, agent, and agent_id. Only Approved and Accelerated\nindications are returned, unless include_deprecated=true, which also returns\nSuperseded and Withdrawn indications. Superseded and Withdrawn indications\nare always returned when requested by indication_id.", + "operationId": "get_indications_indications_get", + "parameters": [ + { + "name": "indication_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the indication with this id.", + "title": "Indication Id", + "type": "string" + }, + "description": "Return only the indication with this id." + }, + { + "name": "include_deprecated", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "description": "Also return deprecated records. Ignored when requesting a single record by id, which is always returned.", + "default": false, + "title": "Include Deprecated" + }, + "description": "Also return deprecated records. Ignored when requesting a single record by id, which is always returned." + }, + { + "name": "indication", + "in": "query", + "required": false, + "schema": { + "description": "Indication id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "ind:fda:verzenio:0" + ] + ], + "title": "Indication", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Indication id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "document", + "in": "query", + "required": false, + "schema": { + "description": "Document id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "doc:fda:verzenio" + ] + ], + "title": "Document", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Document id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent", + "in": "query", + "required": false, + "schema": { + "description": "Agent name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Van Allen lab" + ] + ], + "title": "Agent", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "schema": { + "description": "Agent id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "agent:user:vanallenlab" + ] + ], + "title": "Agent Id", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent id. Repeatable; matches any of the given values (OR)." + } + ], + "responses": { + "200": { + "description": "Matching Indication records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Indications retrieved successfully", + "request_url": "https://api.moalmanac.org/indications", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Indication" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/mappings": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List mappings", + "description": "Retrieves Mappings from the database. Mappings are relationships between two Codings.", + "operationId": "get_mappings_mappings_get", + "parameters": [ + { + "name": "mapping_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the mapping with this id.", + "title": "Mapping Id", + "type": "string" + }, + "description": "Return only the mapping with this id." + } + ], + "responses": { + "200": { + "description": "Matching Mapping records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Mappings retrieved successfully", + "request_url": "https://api.moalmanac.org/mappings", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Mapping" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/propositions": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List propositions", + "description": "Retrieves Propositions from the database. Filters by proposition_id,\nbiomarker, biomarker_type, gene, disease, therapy, and therapy_type.", + "operationId": "get_propositions_propositions_get", + "parameters": [ + { + "name": "proposition_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the proposition with this id.", + "title": "Proposition Id", + "type": "string" + }, + "description": "Return only the proposition with this id." + }, + { + "name": "biomarker", + "in": "query", + "required": false, + "schema": { + "description": "Biomarker name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "BRAF p.V600E" + ] + ], + "title": "Biomarker", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Biomarker name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "biomarker_type", + "in": "query", + "required": false, + "schema": { + "description": "Biomarker type. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Somatic variant" + ] + ], + "title": "Biomarker Type", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Biomarker type. Repeatable; matches any of the given values (OR)." + }, + { + "name": "gene", + "in": "query", + "required": false, + "schema": { + "description": "Gene symbol, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "BRAF" + ] + ], + "title": "Gene", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Gene symbol, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "disease", + "in": "query", + "required": false, + "schema": { + "description": "Disease name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Melanoma" + ] + ], + "title": "Disease", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Disease name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "therapy", + "in": "query", + "required": false, + "schema": { + "description": "Therapy name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Dabrafenib" + ] + ], + "title": "Therapy", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Therapy name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "therapy_type", + "in": "query", + "required": false, + "schema": { + "description": "Therapy type. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Targeted therapy" + ] + ], + "title": "Therapy Type", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Therapy type. Repeatable; matches any of the given values (OR)." + } + ], + "responses": { + "200": { + "description": "Matching Proposition records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Propositions retrieved successfully", + "request_url": "https://api.moalmanac.org/propositions", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Proposition" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/search": { + "get": { + "tags": [ + "Search" + ], + "summary": "Search propositions with statement aggregates", + "description": "Searches Propositions, with aggregated Statement information attached to each.\nWhich propositions are returned is filtered the same way as /propositions\n(proposition_id, biomarker, biomarker_type, gene, disease, therapy,\ntherapy_type). document, indication, and agent_id instead narrow each\nproposition's Statement aggregates, without changing which propositions are\nreturned; those aggregates only count Active statements. include_empty=true\nalso returns propositions with zero matching statements.", + "operationId": "get_search_search_get", + "parameters": [ + { + "name": "proposition_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the proposition with this id.", + "title": "Proposition Id", + "type": "string" + }, + "description": "Return only the proposition with this id." + }, + { + "name": "include_empty", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "description": "Also return propositions with zero matching statements.", + "default": false, + "title": "Include Empty" + }, + "description": "Also return propositions with zero matching statements." + }, + { + "name": "biomarker", + "in": "query", + "required": false, + "schema": { + "description": "Biomarker name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "BRAF p.V600E" + ] + ], + "title": "Biomarker", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Biomarker name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "biomarker_type", + "in": "query", + "required": false, + "schema": { + "description": "Biomarker type. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Somatic variant" + ] + ], + "title": "Biomarker Type", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Biomarker type. Repeatable; matches any of the given values (OR)." + }, + { + "name": "gene", + "in": "query", + "required": false, + "schema": { + "description": "Gene symbol, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "BRAF" + ] + ], + "title": "Gene", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Gene symbol, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "disease", + "in": "query", + "required": false, + "schema": { + "description": "Disease name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Melanoma" + ] + ], + "title": "Disease", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Disease name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "therapy", + "in": "query", + "required": false, + "schema": { + "description": "Therapy name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Dabrafenib" + ] + ], + "title": "Therapy", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Therapy name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "therapy_type", + "in": "query", + "required": false, + "schema": { + "description": "Therapy type. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Targeted therapy" + ] + ], + "title": "Therapy Type", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Therapy type. Repeatable; matches any of the given values (OR)." + }, + { + "name": "document", + "in": "query", + "required": false, + "schema": { + "description": "Document id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "doc:fda:verzenio" + ] + ], + "title": "Document", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Document id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "indication", + "in": "query", + "required": false, + "schema": { + "description": "Indication id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "ind:fda:verzenio:0" + ] + ], + "title": "Indication", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Indication id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "schema": { + "description": "Agent id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "agent:user:vanallenlab" + ] + ], + "title": "Agent Id", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent id. Repeatable; matches any of the given values (OR)." + } + ], + "responses": { + "200": { + "description": "Matching SearchResult records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Search results by Proposition retrieved successfully", + "request_url": "https://api.moalmanac.org/search", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SearchResult" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/sequence_locations": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List sequence locations", + "description": "Retrieves Sequence Locations from the database.", + "operationId": "get_sequence_locations_sequence_locations_get", + "parameters": [ + { + "name": "sequence_location_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the sequence location with this id.", + "title": "Sequence Location Id", + "type": "string" + }, + "description": "Return only the sequence location with this id." + } + ], + "responses": { + "200": { + "description": "Matching SequenceLocation records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Sequence locations retrieved successfully", + "request_url": "https://api.moalmanac.org/sequence_locations", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SequenceLocation" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/sequence_references": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List sequence references", + "description": "Retrieves Sequence References from the database.", + "operationId": "get_sequence_references_sequence_references_get", + "parameters": [ + { + "name": "sequence_reference_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the sequence reference with this id.", + "title": "Sequence Reference Id", + "type": "string" + }, + "description": "Return only the sequence reference with this id." + } + ], + "responses": { + "200": { + "description": "Matching SequenceReference records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Sequence references retrieved successfully", + "request_url": "https://api.moalmanac.org/sequence_references", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SequenceReference" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/statements": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List statements", + "description": "Retrieves Statements from the database. This endpoint essentially fetches the\nentire database, and will take several seconds to complete. Filters by\nstatement_id, proposition_id, biomarker, biomarker_type, gene, disease,\ntherapy, therapy_type, document, agent, agent_id, indication, and\ncontribution. Only Active statements are returned, unless\ninclude_deprecated=true, which also returns Superseded and Deprecated\nstatements. Superseded and Deprecated statements are always returned when\nrequested by statement_id.", + "operationId": "get_statements_statements_get", + "parameters": [ + { + "name": "statement_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the statement with this id.", + "title": "Statement Id", + "type": "string" + }, + "description": "Return only the statement with this id." + }, + { + "name": "include_deprecated", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "description": "Also return deprecated records. Ignored when requesting a single record by id, which is always returned.", + "default": false, + "title": "Include Deprecated" + }, + "description": "Also return deprecated records. Ignored when requesting a single record by id, which is always returned." + }, + { + "name": "proposition_id", + "in": "query", + "required": false, + "schema": { + "description": "Proposition id. Repeatable; matches any of the given values (OR).", + "title": "Proposition Id", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Proposition id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "biomarker", + "in": "query", + "required": false, + "schema": { + "description": "Biomarker name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "BRAF p.V600E" + ] + ], + "title": "Biomarker", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Biomarker name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "biomarker_type", + "in": "query", + "required": false, + "schema": { + "description": "Biomarker type. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Somatic variant" + ] + ], + "title": "Biomarker Type", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Biomarker type. Repeatable; matches any of the given values (OR)." + }, + { + "name": "gene", + "in": "query", + "required": false, + "schema": { + "description": "Gene symbol, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "BRAF" + ] + ], + "title": "Gene", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Gene symbol, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "disease", + "in": "query", + "required": false, + "schema": { + "description": "Disease name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Melanoma" + ] + ], + "title": "Disease", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Disease name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "therapy", + "in": "query", + "required": false, + "schema": { + "description": "Therapy name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Dabrafenib" + ] + ], + "title": "Therapy", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Therapy name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "therapy_type", + "in": "query", + "required": false, + "schema": { + "description": "Therapy type. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Targeted therapy" + ] + ], + "title": "Therapy Type", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Therapy type. Repeatable; matches any of the given values (OR)." + }, + { + "name": "document", + "in": "query", + "required": false, + "schema": { + "description": "Document id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "doc:fda:verzenio" + ] + ], + "title": "Document", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Document id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent", + "in": "query", + "required": false, + "schema": { + "description": "Agent name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Van Allen lab" + ] + ], + "title": "Agent", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "schema": { + "description": "Agent id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "agent:user:vanallenlab" + ] + ], + "title": "Agent Id", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Agent id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "indication", + "in": "query", + "required": false, + "schema": { + "description": "Indication id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "ind:fda:verzenio:0" + ] + ], + "title": "Indication", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Indication id. Repeatable; matches any of the given values (OR)." + }, + { + "name": "contribution", + "in": "query", + "required": false, + "schema": { + "description": "Contribution id. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "ctrb:vanallenlab:2024-10-30:0" + ] + ], + "title": "Contribution", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Contribution id. Repeatable; matches any of the given values (OR)." + } + ], + "responses": { + "200": { + "description": "Matching Statement records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Statements retrieved successfully", + "request_url": "https://api.moalmanac.org/statements", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Statement" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/strengths": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List strengths", + "description": "Retrieves Strengths from the database. Filters by strength_name, which is\nmatched case-insensitively.", + "operationId": "get_strengths_strengths_get", + "parameters": [ + { + "name": "strength_name", + "in": "query", + "required": false, + "schema": { + "description": "Return strength records with this name, ignoring case.", + "title": "Strength Name", + "type": "string" + }, + "description": "Return strength records with this name, ignoring case." + } + ], + "responses": { + "200": { + "description": "Matching Strength records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Strengths retrieved successfully", + "request_url": "https://api.moalmanac.org/strengths", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Strength" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/therapies": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List therapies", + "description": "Retrieves Therapies from the database. Filters by therapy_id, therapy_name,\nand therapy_type. therapy_name is matched case-insensitively.", + "operationId": "get_therapies_therapies_get", + "parameters": [ + { + "name": "therapy_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the therapy with this id.", + "title": "Therapy Id", + "type": "string" + }, + "description": "Return only the therapy with this id." + }, + { + "name": "therapy_name", + "in": "query", + "required": false, + "schema": { + "description": "Return therapy records with this name, ignoring case.", + "examples": [ + "Dabrafenib" + ], + "title": "Therapy Name", + "type": "string" + }, + "description": "Return therapy records with this name, ignoring case." + }, + { + "name": "therapy", + "in": "query", + "required": false, + "schema": { + "description": "Therapy name, matched exactly. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Dabrafenib" + ] + ], + "title": "Therapy", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Therapy name, matched exactly. Repeatable; matches any of the given values (OR)." + }, + { + "name": "therapy_type", + "in": "query", + "required": false, + "schema": { + "description": "Therapy type. Repeatable; matches any of the given values (OR).", + "examples": [ + [ + "Targeted therapy" + ] + ], + "title": "Therapy Type", + "type": "array", + "items": { + "type": "string" + } + }, + "description": "Therapy type. Repeatable; matches any of the given values (OR)." + } + ], + "responses": { + "200": { + "description": "Matching Therapy records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Therapies retrieved successfully", + "request_url": "https://api.moalmanac.org/therapies", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Therapy" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/therapy_groups": { + "get": { + "tags": [ + "Entities" + ], + "summary": "List therapy groups", + "description": "Retrieves Therapy Groups from the database.", + "operationId": "get_therapy_groups_therapy_groups_get", + "parameters": [ + { + "name": "therapy_group_id", + "in": "query", + "required": false, + "schema": { + "description": "Return only the therapy group with this id.", + "title": "Therapy Group Id", + "type": "string" + }, + "description": "Return only the therapy group with this id." + } + ], + "responses": { + "200": { + "description": "Matching TherapyGroup records.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "meta", + "service", + "data" + ], + "properties": { + "meta": { + "$ref": "#/components/schemas/Meta", + "examples": [ + { + "data_length": 1, + "message": "Therapy groups retrieved successfully", + "request_url": "https://api.moalmanac.org/therapy_groups", + "status": "success", + "status_code": 200, + "timestamp_elapsed": 0.012345, + "timestamp_received": "2026-10-16T14:03:12.123456Z", + "timestamp_returned": "2026-10-16T14:03:12.135801Z", + "trace_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ] + }, + "service": { + "$ref": "#/components/schemas/About", + "description": "Service and database release metadata." + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TherapyGroup" + } + } + }, + "additionalProperties": false + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "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" + }, + "Agent": { + "title": "Agent", + "description": "An organization or person that publishes documents or contributes to records.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^agent:(org|user):[a-z0-9]+$", + "examples": [ + "agent:string" + ] + }, + "type": { + "const": "Agent" + }, + "agentType": { + "enum": [ + "organization", + "contributor" + ] + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "last_updated" + }, + "value": { + "type": "string" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "url" + }, + "value": { + "type": "string" + } + } + } + ] + } + } + }, + "required": [ + "id", + "type", + "agentType", + "name", + "description" + ], + "additionalProperties": false, + "examples": [ + { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States.", + "extensions": [ + { + "name": "last_updated", + "value": "2026-05-07", + "description": "" + }, + { + "name": "url", + "value": "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm", + "description": "" + } + ] + } + ] + }, + "Allele": { + "title": "Allele", + "description": "A VRS Allele with its SequenceLocation embedded. The referenced `hgvs.*` keys become `expressions` and the `state_*` keys become `state`.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^ga4gh:VA\\.[A-Za-z0-9_-]{32}$", + "examples": [ + "ga4gh:VA.string" + ] + }, + "type": { + "const": "Allele" + }, + "name": { + "type": "string" + }, + "aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "type": "string" + }, + "digest": { + "type": "string" + }, + "expressions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "syntax": { + "enum": [ + "hgvs.g", + "hgvs.c", + "hgvs.p" + ] + }, + "value": { + "type": "string" + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "hgvs.c_short" + }, + "value": { + "type": "string" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "hgvs.p_short" + }, + "value": { + "type": "string" + } + } + } + ] + } + } + }, + "required": [ + "syntax", + "value" + ], + "additionalProperties": false + } + }, + "location": { + "$ref": "#/components/schemas/SequenceLocation" + }, + "state": { + "description": "The allele's state, one of the VRS state types defined in `$defs`, selected by `type`.", + "oneOf": [ + { + "$ref": "#/components/schemas/Allele.LiteralSequenceExpression" + }, + { + "$ref": "#/components/schemas/Allele.ReferenceLengthExpression" + } + ] + } + }, + "required": [ + "id", + "type", + "name", + "aliases", + "description", + "digest", + "expressions", + "location", + "state" + ], + "additionalProperties": false, + "examples": [ + { + "id": "ga4gh:VA.j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "type": "Allele", + "name": "NP_004324.2:p.Val600Glu", + "aliases": [ + "NP_004324.2:p.V600E", + "BRAF p.V600E" + ], + "description": "VRS variation of NP_004324.2:p.Val600Glu", + "digest": "j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "expressions": [ + { + "syntax": "hgvs.p", + "value": "NP_004324.2:p.Val600Glu", + "extensions": [ + { + "name": "hgvs.p_short", + "value": "p.V600E" + } + ] + } + ], + "location": { + "id": "ga4gh:SL.t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Amino acid position 600 of the Refseq protein NP_004324.2, which is the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6).", + "digest": "t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 599, + "end": 600, + "sequence": "V" + }, + "state": { + "type": "LiteralSequenceExpression", + "sequence": "E" + } + } + ] + }, + "Allele.LiteralSequenceExpression": { + "description": "A state given as a literal sequence.", + "type": "object", + "properties": { + "type": { + "const": "LiteralSequenceExpression" + }, + "sequence": { + "type": "string" + } + }, + "required": [ + "type", + "sequence" + ], + "additionalProperties": false + }, + "Allele.ReferenceLengthExpression": { + "description": "A state given as a length relative to the reference, e.g. a repeat expansion or deletion.", + "type": "object", + "properties": { + "type": { + "const": "ReferenceLengthExpression" + }, + "sequence": { + "type": "string" + }, + "length": { + "type": "integer", + "minimum": 0 + }, + "repeatSubunitLength": { + "type": "integer", + "minimum": 0 + } + }, + "required": [ + "type", + "sequence", + "length", + "repeatSubunitLength" + ], + "additionalProperties": false + }, + "BiomarkerCriterion": { + "title": "BiomarkerCriterion", + "description": "Interim link between a proposition and a biomarker (a draft Cat-VRS categorical variant criterion), with the biomarker embedded as `subject`.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^bmkr\\.criterion:\\d+$", + "examples": [ + "bmkr.criterion:string" + ] + }, + "present": { + "type": "boolean" + }, + "subject": { + "$ref": "#/components/schemas/Biomarker" + } + }, + "required": [ + "id", + "present", + "subject" + ], + "additionalProperties": false, + "examples": [ + { + "id": "bmkr.criterion:16", + "present": true, + "subject": { + "id": "bmkr:16", + "type": "CategoricalVariant", + "name": "BRAF p.V600E", + "constraints": [ + { + "type": "DefiningAlleleConstraint", + "allele": { + "id": "ga4gh:VA.j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "type": "Allele", + "name": "NP_004324.2:p.Val600Glu", + "aliases": [ + "NP_004324.2:p.V600E", + "BRAF p.V600E" + ], + "description": "VRS variation of NP_004324.2:p.Val600Glu", + "digest": "j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "expressions": [ + { + "syntax": "hgvs.p", + "value": "NP_004324.2:p.Val600Glu", + "extensions": [ + { + "name": "hgvs.p_short", + "value": "p.V600E" + } + ] + } + ], + "location": { + "id": "ga4gh:SL.t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Amino acid position 600 of the Refseq protein NP_004324.2, which is the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6).", + "digest": "t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 599, + "end": 600, + "sequence": "V" + }, + "state": { + "type": "LiteralSequenceExpression", + "sequence": "E" + } + }, + "relations": [] + }, + { + "type": "FeatureContextConstraint", + "featureContext": { + "id": "gene:hgnc:1097", + "conceptType": "Gene", + "name": "BRAF", + "primaryCoding": { + "id": "coding:hgnc:1097", + "code": "HGNC:1097", + "system": "https://genenames.org", + "iris": [ + "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:1097" + ] + }, + "mappings": [ + { + "relation": "exactMatch", + "coding": { + "id": "coding:ensembl:ensg00000157764", + "code": "ENSG00000157764", + "system": "https://www.ensembl.org", + "iris": [ + "https://www.ensembl.org/id/ENSG00000157764" + ] + } + }, + { + "relation": "exactMatch", + "coding": { + "id": "coding:ncbi:673", + "code": "673", + "system": "https://www.ncbi.nlm.nih.gov/gene", + "iris": [ + "https://www.ncbi.nlm.nih.gov/gene/673" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:refseq:NM_004333.6", + "code": "NM_004333.6", + "system": "https://www.ncbi.nlm.nih.gov/nuccore", + "iris": [ + "https://www.ncbi.nlm.nih.gov/nuccore/NM_004333.6" + ] + } + } + ] + } + } + ], + "extensions": [ + { + "name": "biomarker_type", + "value": "Somatic variant" + }, + { + "name": "chromosome", + "value": "7" + }, + { + "name": "start_position", + "value": 140453136 + }, + { + "name": "end_position", + "value": 140453136 + }, + { + "name": "reference_allele", + "value": "A" + }, + { + "name": "alternate_allele", + "value": "T" + }, + { + "name": "cdna_change", + "value": "c.1799T>A" + }, + { + "name": "protein_change", + "value": "p.V600E" + }, + { + "name": "variant_annotation", + "value": "Missense" + }, + { + "name": "exon", + "value": 15 + }, + { + "name": "rsid", + "value": "rs113488022" + }, + { + "name": "hgvsg", + "value": "7:g.140453136A>T" + }, + { + "name": "hgvsc", + "value": "ENST00000288602.6:c.1799T>A" + } + ] + } + } + ] + }, + "Biomarker": { + "title": "Biomarker", + "description": "A Cat-VRS CategoricalVariant whose allele, location, genes, function, and copy change are shaped into `constraints`. Root type `Biomarker` with one subtype per `biomarker_type` extension value.", + "$ref": "#/components/schemas/Biomarker.Biomarker", + "allOf": [ + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Copy number" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.CopyNumber" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Copy number (arm level)" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.CopyNumberArmLevel" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Gene fusion" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.GeneFusion" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Germline variant" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.GermlineVariant" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Haplotype genotype" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.HaplotypeGenotype" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Homologous recombination" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.HomologousRecombination" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Microsatellite stability" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.MicrosatelliteStability" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Mismatch repair" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.MismatchRepair" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Protein expression" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.ProteinExpression" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Rearrangement" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.Rearrangement" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Translocation" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.Translocation" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Somatic variant" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.SomaticVariant" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Tumor mutational burden" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.TumorMutationalBurden" + } + }, + { + "if": { + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "contains": { + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Wild type" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + }, + "then": { + "$ref": "#/components/schemas/Biomarker.WildType" + } + } + ], + "unevaluatedProperties": false, + "examples": [ + { + "id": "bmkr:16", + "type": "CategoricalVariant", + "name": "BRAF p.V600E", + "constraints": [ + { + "type": "DefiningAlleleConstraint", + "allele": { + "id": "ga4gh:VA.j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "type": "Allele", + "name": "NP_004324.2:p.Val600Glu", + "aliases": [ + "NP_004324.2:p.V600E", + "BRAF p.V600E" + ], + "description": "VRS variation of NP_004324.2:p.Val600Glu", + "digest": "j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "expressions": [ + { + "syntax": "hgvs.p", + "value": "NP_004324.2:p.Val600Glu", + "extensions": [ + { + "name": "hgvs.p_short", + "value": "p.V600E" + } + ] + } + ], + "location": { + "id": "ga4gh:SL.t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Amino acid position 600 of the Refseq protein NP_004324.2, which is the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6).", + "digest": "t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 599, + "end": 600, + "sequence": "V" + }, + "state": { + "type": "LiteralSequenceExpression", + "sequence": "E" + } + }, + "relations": [] + }, + { + "type": "FeatureContextConstraint", + "featureContext": { + "id": "gene:hgnc:1097", + "conceptType": "Gene", + "name": "BRAF", + "primaryCoding": { + "id": "coding:hgnc:1097", + "code": "HGNC:1097", + "system": "https://genenames.org", + "iris": [ + "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:1097" + ] + }, + "mappings": [ + { + "relation": "exactMatch", + "coding": { + "id": "coding:ensembl:ensg00000157764", + "code": "ENSG00000157764", + "system": "https://www.ensembl.org", + "iris": [ + "https://www.ensembl.org/id/ENSG00000157764" + ] + } + }, + { + "relation": "exactMatch", + "coding": { + "id": "coding:ncbi:673", + "code": "673", + "system": "https://www.ncbi.nlm.nih.gov/gene", + "iris": [ + "https://www.ncbi.nlm.nih.gov/gene/673" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:refseq:NM_004333.6", + "code": "NM_004333.6", + "system": "https://www.ncbi.nlm.nih.gov/nuccore", + "iris": [ + "https://www.ncbi.nlm.nih.gov/nuccore/NM_004333.6" + ] + } + } + ] + } + } + ], + "extensions": [ + { + "name": "biomarker_type", + "value": "Somatic variant" + }, + { + "name": "chromosome", + "value": "7" + }, + { + "name": "start_position", + "value": 140453136 + }, + { + "name": "end_position", + "value": 140453136 + }, + { + "name": "reference_allele", + "value": "A" + }, + { + "name": "alternate_allele", + "value": "T" + }, + { + "name": "cdna_change", + "value": "c.1799T>A" + }, + { + "name": "protein_change", + "value": "p.V600E" + }, + { + "name": "variant_annotation", + "value": "Missense" + }, + { + "name": "exon", + "value": 15 + }, + { + "name": "rsid", + "value": "rs113488022" + }, + { + "name": "hgvsg", + "value": "7:g.140453136A>T" + }, + { + "name": "hgvsc", + "value": "ENST00000288602.6:c.1799T>A" + } + ] + } + ] + }, + "Biomarker.Biomarker": { + "description": "Root type shared by every biomarker. Subtypes below are selected by the `biomarker_type` extension; the top-level schema closes the record.", + "type": "object", + "required": [ + "id", + "type", + "name", + "constraints", + "extensions" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^bmkr:\\d+$", + "examples": [ + "bmkr:string" + ] + }, + "type": { + "const": "CategoricalVariant" + }, + "name": { + "type": "string" + }, + "constraints": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/Biomarker.DefiningAlleleConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.DefiningLocationConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.FeatureContextConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.AdjacencyConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.FunctionConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.CopyChangeConstraint" + } + ] + } + }, + "extensions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Extension" + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "enum": [ + "Copy number", + "Copy number (arm level)", + "Gene fusion", + "Germline variant", + "Haplotype genotype", + "Homologous recombination", + "Microsatellite stability", + "Mismatch repair", + "Protein expression", + "Rearrangement", + "Somatic variant", + "Translocation", + "Tumor mutational burden", + "Wild type" + ] + } + } + } + } + ] + } + } + }, + "Biomarker.DefiningAlleleConstraint": { + "type": "object", + "properties": { + "type": { + "const": "DefiningAlleleConstraint" + }, + "allele": { + "$ref": "#/components/schemas/Allele" + }, + "relations": { + "type": "array", + "items": {} + } + }, + "required": [ + "type", + "allele", + "relations" + ], + "additionalProperties": false + }, + "Biomarker.DefiningLocationConstraint": { + "type": "object", + "properties": { + "type": { + "const": "DefiningLocationConstraint" + }, + "location": { + "$ref": "#/components/schemas/SequenceLocation" + }, + "relations": { + "type": "array", + "items": {} + }, + "matchCharacteristic": { + "type": "object", + "properties": { + "primaryCoding": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "system": { + "type": "string" + } + }, + "required": [ + "code", + "system" + ], + "additionalProperties": false + } + }, + "required": [ + "primaryCoding" + ], + "additionalProperties": false + } + }, + "required": [ + "type", + "location", + "relations", + "matchCharacteristic" + ], + "additionalProperties": false + }, + "Biomarker.FeatureContextConstraint": { + "type": "object", + "properties": { + "type": { + "const": "FeatureContextConstraint" + }, + "featureContext": { + "$ref": "#/components/schemas/Gene.Gene", + "not": { + "required": [ + "extensions" + ] + } + } + }, + "required": [ + "type", + "featureContext" + ], + "additionalProperties": false + }, + "Biomarker.AdjacencyConstraint": { + "type": "object", + "properties": { + "type": { + "const": "AdjacencyConstraint" + }, + "orderKnown": { + "type": "boolean", + "description": "True only when both partners are known." + }, + "adjoinedElements": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Gene.Gene", + "not": { + "required": [ + "extensions" + ] + } + }, + { + "$ref": "#/components/schemas/Biomarker.UnspecifiedElement" + } + ] + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": [ + "type", + "orderKnown", + "adjoinedElements" + ], + "additionalProperties": false + }, + "Biomarker.FunctionConstraint": { + "type": "object", + "properties": { + "type": { + "const": "FunctionConstraint" + }, + "functionConsequence": { + "$ref": "#/components/schemas/FunctionConsequence" + } + }, + "required": [ + "type", + "functionConsequence" + ], + "additionalProperties": false + }, + "Biomarker.CopyChangeConstraint": { + "type": "object", + "properties": { + "type": { + "const": "CopyChangeConstraint" + }, + "copyChange": { + "type": "string" + } + }, + "required": [ + "type", + "copyChange" + ], + "additionalProperties": false + }, + "Biomarker.UnspecifiedElement": { + "type": "object", + "properties": { + "type": { + "const": "UnspecifiedElement" + } + }, + "required": [ + "type" + ], + "additionalProperties": false + }, + "Biomarker.CopyNumber": { + "description": "Gene-level copy number change: a gene and a copy change.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Copy number" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "cytoband" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Copy number" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "cytoband" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Biomarker.FeatureContextConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.CopyChangeConstraint" + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Biomarker.FeatureContextConstraint" + }, + "minContains": 1, + "maxContains": 1 + }, + { + "contains": { + "$ref": "#/components/schemas/Biomarker.CopyChangeConstraint" + }, + "minContains": 1, + "maxContains": 1 + } + ] + } + } + } + ] + }, + "Biomarker.CopyNumberArmLevel": { + "description": "Arm-level copy number change: a location and a copy change.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Copy number (arm level)" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "chromosome" + }, + "value": { + "type": "string" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "arm" + }, + "value": { + "enum": [ + "p", + "q" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Copy number (arm level)" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "chromosome" + }, + "value": { + "type": "string" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "arm" + }, + "value": { + "enum": [ + "p", + "q" + ] + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Biomarker.DefiningLocationConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.CopyChangeConstraint" + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Biomarker.DefiningLocationConstraint" + }, + "minContains": 1, + "maxContains": 1 + }, + { + "contains": { + "$ref": "#/components/schemas/Biomarker.CopyChangeConstraint" + }, + "minContains": 1, + "maxContains": 1 + } + ] + } + } + } + ] + }, + "Biomarker.GeneFusion": { + "description": "Gene fusion, represented by a single AdjacencyConstraint. A fusion with one known partner has an UnspecifiedElement for the other.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Gene fusion" + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Gene fusion" + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { + "$ref": "#/components/schemas/Biomarker.AdjacencyConstraint" + } + } + } + } + ] + }, + "Biomarker.GermlineVariant": { + "description": "Germline variant: a location and a FeatureContextConstraint.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Germline variant" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "chromosome" + }, + "value": { + "type": "string" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "start_position" + }, + "value": { + "type": [ + "integer", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "end_position" + }, + "value": { + "type": [ + "integer", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "reference_allele" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "alternate_allele" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "cdna_change" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "protein_change" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "variant_annotation" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "exon" + }, + "value": { + "type": [ + "integer", + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "rsid" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "hgvsg" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "hgvsc" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "requires_pathogenic" + }, + "value": { + "type": "boolean" + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Germline variant" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "chromosome" + }, + "value": { + "type": "string" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "start_position" + }, + "value": { + "type": [ + "integer", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "end_position" + }, + "value": { + "type": [ + "integer", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "reference_allele" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "alternate_allele" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "cdna_change" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "protein_change" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "variant_annotation" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "exon" + }, + "value": { + "type": [ + "integer", + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "rsid" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "hgvsg" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "hgvsc" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "requires_pathogenic" + }, + "value": { + "type": "boolean" + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Biomarker.DefiningLocationConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.FeatureContextConstraint" + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Biomarker.DefiningLocationConstraint" + }, + "minContains": 1, + "maxContains": 1 + }, + { + "contains": { + "$ref": "#/components/schemas/Biomarker.FeatureContextConstraint" + }, + "minContains": 1, + "maxContains": 1 + } + ] + } + } + } + ] + }, + "Biomarker.HaplotypeGenotype": { + "description": "Haplotype genotype. No constraints.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Haplotype genotype" + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Haplotype genotype" + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "maxItems": 0 + } + } + } + ] + }, + "Biomarker.HomologousRecombination": { + "description": "Homologous recombination status. No constraints.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Homologous recombination" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "type": "string" + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Homologous recombination" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "type": "string" + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "maxItems": 0 + } + } + } + ] + }, + "Biomarker.MicrosatelliteStability": { + "description": "Microsatellite instability status. No constraints.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Microsatellite stability" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Microsatellite instability-high (MSI-H)", + "Microsatellite instability-low (MSI-L)", + "Microsatellite stable (MSS)" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Microsatellite stability" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Microsatellite instability-high (MSI-H)", + "Microsatellite instability-low (MSI-L)", + "Microsatellite stable (MSS)" + ] + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "maxItems": 0 + } + } + } + ] + }, + "Biomarker.MismatchRepair": { + "description": "Mismatch repair status. No constraints.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Mismatch repair" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Deficient", + "Proficient" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Mismatch repair" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Deficient", + "Proficient" + ] + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "maxItems": 0 + } + } + } + ] + }, + "Biomarker.NonFusionRearrangement": { + "description": "Structural shape shared by `Rearrangement` and `Translocation`: a gene fusion's genes collapse into a single AdjacencyConstraint, while these use one FeatureContextConstraint per gene instead. A `Translocation` may also carry a `DefiningLocationConstraint` per chromosome when it's named by cytogenetic band rather than gene (`Rearrangement`'s `location` is always empty, so it can never actually produce one).", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "constraints": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Biomarker.FeatureContextConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.DefiningLocationConstraint" + } + ] + } + } + } + } + ] + }, + "Biomarker.ProteinExpression": { + "description": "Protein expression, e.g. PD-L1 TPS >= 1%. No constraints.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Protein expression" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "marker" + }, + "value": { + "type": "string" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "unit" + }, + "value": { + "type": "string" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "equality" + }, + "value": { + "enum": [ + "=", + ">=", + "<=", + "<", + ">" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "value" + }, + "value": { + "type": [ + "number", + "string" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Protein expression" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "marker" + }, + "value": { + "type": "string" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "unit" + }, + "value": { + "type": "string" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "equality" + }, + "value": { + "enum": [ + "=", + ">=", + "<=", + "<", + ">" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "value" + }, + "value": { + "type": [ + "number", + "string" + ] + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "maxItems": 0 + } + } + } + ] + }, + "Biomarker.Rearrangement": { + "description": "Chromosomal rearrangement that is neither a gene fusion nor a translocation (see `Gene fusion`, `Translocation`). Shares `NonFusionRearrangement`'s shape.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.NonFusionRearrangement" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Rearrangement" + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Rearrangement" + } + } + } + } + ] + } + } + } + ] + }, + "Biomarker.Translocation": { + "description": "Chromosomal translocation between one or two partner genes, or between one or two chromosomes. Shares `NonFusionRearrangement`'s shape, but also allows a `DefiningLocationConstraint` per chromosome when the translocation is named by cytogenetic band rather than gene.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.NonFusionRearrangement" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Translocation" + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Translocation" + } + } + } + } + ] + } + } + } + ] + }, + "Biomarker.SomaticVariant": { + "description": "Somatic variant: a FeatureContextConstraint, plus an allele or location and optionally a function.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Somatic variant" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "chromosome" + }, + "value": { + "type": "string" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "start_position" + }, + "value": { + "type": [ + "integer", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "end_position" + }, + "value": { + "type": [ + "integer", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "reference_allele" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "alternate_allele" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "cdna_change" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "protein_change" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "variant_annotation" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "exon" + }, + "value": { + "type": [ + "integer", + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "hgvsg" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "hgvsc" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "rsid" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "requires_oncogenic" + }, + "value": { + "type": "boolean" + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Somatic variant" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "chromosome" + }, + "value": { + "type": "string" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "start_position" + }, + "value": { + "type": [ + "integer", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "end_position" + }, + "value": { + "type": [ + "integer", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "reference_allele" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "alternate_allele" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "cdna_change" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "protein_change" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "variant_annotation" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "exon" + }, + "value": { + "type": [ + "integer", + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "hgvsg" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "hgvsc" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Biomarker.DefiningAlleleConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.DefiningLocationConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.FeatureContextConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.FunctionConstraint" + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Biomarker.FeatureContextConstraint" + }, + "minContains": 1, + "maxContains": 1 + } + ] + } + } + } + ] + }, + "Biomarker.TumorMutationalBurden": { + "description": "Tumor mutational burden classification. No constraints.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Tumor mutational burden" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "classification" + }, + "value": { + "type": "string" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "minimum_mutations" + }, + "value": { + "type": [ + "number", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "minimum_mutations_per_megabase" + }, + "value": { + "type": [ + "number", + "null" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Tumor mutational burden" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "classification" + }, + "value": { + "type": "string" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "minimum_mutations" + }, + "value": { + "type": [ + "number", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "minimum_mutations_per_megabase" + }, + "value": { + "type": [ + "number", + "null" + ] + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "maxItems": 0 + } + } + } + ] + }, + "Biomarker.WildType": { + "description": "Absence of variants in a gene: a location and a gene.", + "allOf": [ + { + "$ref": "#/components/schemas/Biomarker.Biomarker" + }, + { + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Wild type" + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarker_type" + }, + "value": { + "const": "Wild type" + } + } + } + } + ] + }, + "constraints": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Biomarker.DefiningLocationConstraint" + }, + { + "$ref": "#/components/schemas/Biomarker.FeatureContextConstraint" + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Biomarker.DefiningLocationConstraint" + }, + "minContains": 1, + "maxContains": 1 + }, + { + "contains": { + "$ref": "#/components/schemas/Biomarker.FeatureContextConstraint" + }, + "minContains": 1, + "maxContains": 1 + } + ] + } + } + } + ] + }, + "Coding": { + "title": "Coding", + "description": "A code within a coding system, e.g. `oncotree:BRCA` or `ncit:C97660`.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^coding:[a-z]+:.+$", + "examples": [ + "coding:string" + ] + }, + "code": { + "type": "string" + }, + "name": { + "type": "string" + }, + "system": { + "type": "string" + }, + "systemVersion": { + "type": "string" + }, + "iris": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + } + } + }, + "required": [ + "id", + "code", + "system", + "iris" + ], + "additionalProperties": false, + "examples": [ + { + "id": "coding:hgnc:1097", + "code": "HGNC:1097", + "system": "https://genenames.org", + "iris": [ + "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:1097" + ] + } + ] + }, + "Contribution": { + "title": "Contribution", + "description": "A dated contribution by an agent, with the agent embedded as `contributor`.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^ctrb:[a-z]+:\\d{4}-\\d{2}-\\d{2}:\\d+$", + "examples": [ + "ctrb:string" + ] + }, + "type": { + "const": "Contribution" + }, + "description": { + "type": "string" + }, + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "contributor": { + "$ref": "#/components/schemas/Agent", + "not": { + "required": [ + "extensions" + ] + } + } + }, + "required": [ + "id", + "type", + "description", + "date", + "contributor" + ], + "additionalProperties": false, + "examples": [ + { + "id": "ctrb:fda:2013-05-29:0", + "type": "Contribution", + "description": "Indication received traditional approval.", + "date": "2013-05-29", + "contributor": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + } + } + ] + }, + "CopyChange": { + "title": "CopyChange", + "description": "A copy change term, e.g. gain or loss.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^copy_change:efo:\\d+$", + "examples": [ + "copy_change:efo:string" + ] + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false, + "examples": [ + { + "id": "copy_change:efo:0030067", + "name": "loss" + } + ] + }, + "Disease": { + "title": "Disease", + "description": "A cancer type concept with its primary coding and mappings embedded.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^dis:(oncotree|ncit):.+$", + "examples": [ + "dis:string" + ] + }, + "conceptType": { + "const": "Disease" + }, + "name": { + "type": "string" + }, + "primaryCoding": { + "$ref": "#/components/schemas/Coding" + }, + "mappings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Mapping.ConceptMapping" + } + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "solid_tumor" + }, + "value": { + "type": "boolean" + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "solid_tumor" + }, + "value": { + "type": "boolean" + } + } + } + } + ] + } + }, + "required": [ + "id", + "conceptType", + "name", + "primaryCoding", + "mappings", + "extensions" + ], + "additionalProperties": false, + "examples": [ + { + "id": "dis:ncit:C3224", + "conceptType": "Disease", + "name": "Melanoma", + "mappings": [ + { + "relation": "exactMatch", + "coding": { + "id": "coding:oncotree:MEL", + "code": "MEL", + "name": "Melanoma", + "system": "https://oncotree.mskcc.org", + "systemVersion": "oncotree_2025_10_03", + "iris": [ + "https://oncotree.mskcc.org/?version=oncotree_2025_10_03&field=NAME&search=Melanoma+%28MEL%29" + ] + } + } + ], + "extensions": [ + { + "name": "solid_tumor", + "value": true, + "description": "Boolean value for if this tumor type is categorized as a solid tumor." + } + ], + "primaryCoding": { + "id": "coding:ncit:C3224", + "code": "C3224", + "name": "Melanoma", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C3224" + ] + } + } + ] + }, + "Document": { + "title": "Document", + "description": "A source document. Publisher, company, drug names, dates, and status are extensions; urls are plain strings.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^doc:(fda|ema|hse|hc|hpra):.+$", + "examples": [ + "doc:string" + ] + }, + "type": { + "const": "Document" + }, + "documentType": { + "enum": [ + "Regulatory approval" + ] + }, + "name": { + "type": "string" + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "type": "string" + }, + "urls": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + } + }, + "doi": { + "type": [ + "string", + "null" + ] + }, + "pmid": { + "type": [ + "string", + "null" + ] + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "agent" + }, + "value": { + "$ref": "#/components/schemas/Agent", + "not": { + "required": [ + "extensions" + ] + } + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "company" + }, + "value": { + "type": "string" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "drug_name_brand" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "drug_name_generic" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "first_publication_date" + }, + "value": { + "$ref": "#/components/schemas/Document.IsoDateOrNull" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "identification_number" + }, + "value": { + "type": [ + "integer", + "string", + "null" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "publication_date" + }, + "value": { + "$ref": "#/components/schemas/Document.IsoDateOrNull" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Active", + "Deprecated" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "agent" + }, + "value": { + "$ref": "#/components/schemas/Agent", + "not": { + "required": [ + "extensions" + ] + } + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "company" + }, + "value": { + "type": "string" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "drug_name_brand" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "drug_name_generic" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "first_publication_date" + }, + "value": { + "$ref": "#/components/schemas/Document.IsoDateOrNull" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "identification_number" + }, + "value": { + "type": [ + "integer", + "string", + "null" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "publication_date" + }, + "value": { + "$ref": "#/components/schemas/Document.IsoDateOrNull" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Active", + "Deprecated" + ] + } + } + } + } + ] + } + }, + "required": [ + "id", + "type", + "documentType", + "name", + "title", + "aliases", + "description", + "urls", + "doi", + "pmid", + "extensions" + ], + "additionalProperties": false, + "examples": [ + { + "id": "doc:fda:tafinlar", + "type": "Document", + "documentType": "Regulatory approval", + "name": "Tafinlar (dabrafenib) [package insert]. FDA.", + "title": null, + "aliases": [], + "description": "Novartis Pharmaceuticals Corporation. Tafinlar (dabrafenib) [package insert]. U.S. Food and Drug Administration website. https://www.accessdata.fda.gov/drugsatfda_docs/label/2024/202806s030lbl.pdf. Revised March 2024. Accessed October 30, 2024.", + "urls": [ + "https://www.accessdata.fda.gov/drugsatfda_docs/label/2024/202806s030lbl.pdf", + "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=202806" + ], + "doi": null, + "pmid": null, + "extensions": [ + { + "name": "agent", + "value": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + }, + "description": "The organization that published this document." + }, + { + "name": "company", + "value": "Novartis Pharmaceuticals Corporation.", + "description": "The company that manufactures the cancer drug. Only applicable to market authorization documents." + }, + { + "name": "drug_name_brand", + "value": "Tafinlar", + "description": "The brand name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "drug_name_generic", + "value": "dabrafenib", + "description": "The generic name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "first_publication_date", + "value": null, + "description": "The publication date for the initial version of this document." + }, + { + "name": "identification_number", + "value": 202806, + "description": "Identification number used by the publishing organization." + }, + { + "name": "publication_date", + "value": "2024-03-29", + "description": "The publication date for the document." + }, + { + "name": "status", + "value": "Active", + "description": "Whether this document is Active or Deprecated within moalmanac-db." + } + ] + } + ] + }, + "Document.IsoDateOrNull": { + "description": "An ISO 8601 date (YYYY-MM-DD) or null.", + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "format": "date" + } + ] + }, + "Extension": { + "title": "Extension", + "description": "A GKS Core extension: a name/value pair for information the underlying specification does not directly support. `value` may be any JSON type.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": {}, + "description": { + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false + }, + "FunctionConsequence": { + "title": "FunctionConsequence", + "description": "The functional consequence of a variant, with its primary coding embedded.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^func:so:\\d+$", + "examples": [ + "func:so:string" + ] + }, + "name": { + "type": "string" + }, + "primaryCoding": { + "$ref": "#/components/schemas/Coding" + } + }, + "required": [ + "id", + "name", + "primaryCoding" + ], + "additionalProperties": false, + "examples": [ + { + "id": "func:so:0001786", + "name": "Loss of heterozygosity", + "primaryCoding": { + "id": "coding:so:0001786", + "name": "loss_of_heterozygosity", + "system": "https://www.ebi.ac.uk/ols4/ontologies/so", + "code": "SO:0001786", + "iris": [ + "https://www.ebi.ac.uk/ols4/ontologies/so/classes/http%253A%252F%252Fpurl.obolibrary.org%252Fobo%252FSO_0001786" + ] + } + } + ] + }, + "Gene": { + "title": "Gene", + "description": "A gene concept. Standalone genes carry the gene's sequence locations in `extensions`; genes embedded in a biomarker have `extensions` stripped (`$defs/Gene` without `extensions`).", + "$ref": "#/components/schemas/Gene.Gene", + "required": [ + "extensions" + ], + "properties": { + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "cds_start" + }, + "value": { + "type": "integer", + "minimum": 0 + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "location" + }, + "value": { + "type": "string" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "location_sortable" + }, + "value": { + "type": "string" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "protein_product" + }, + "value": { + "$ref": "#/components/schemas/SequenceLocation" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "protein_product_exons" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SequenceLocation" + } + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "transcript" + }, + "value": { + "$ref": "#/components/schemas/SequenceLocation" + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "transcript_exons" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SequenceLocation" + } + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "cds_start" + }, + "value": { + "type": "integer", + "minimum": 0 + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "location" + }, + "value": { + "type": "string" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "location_sortable" + }, + "value": { + "type": "string" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "protein_product" + }, + "value": { + "$ref": "#/components/schemas/SequenceLocation" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "protein_product_exons" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SequenceLocation" + } + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "transcript" + }, + "value": { + "$ref": "#/components/schemas/SequenceLocation" + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "transcript_exons" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SequenceLocation" + } + } + } + } + } + ] + } + }, + "examples": [ + { + "id": "gene:hgnc:1097", + "conceptType": "Gene", + "name": "BRAF", + "primaryCoding": { + "id": "coding:hgnc:1097", + "code": "HGNC:1097", + "system": "https://genenames.org", + "iris": [ + "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:1097" + ] + }, + "mappings": [ + { + "relation": "exactMatch", + "coding": { + "id": "coding:ensembl:ensg00000157764", + "code": "ENSG00000157764", + "system": "https://www.ensembl.org", + "iris": [ + "https://www.ensembl.org/id/ENSG00000157764" + ] + } + }, + { + "relation": "exactMatch", + "coding": { + "id": "coding:ncbi:673", + "code": "673", + "system": "https://www.ncbi.nlm.nih.gov/gene", + "iris": [ + "https://www.ncbi.nlm.nih.gov/gene/673" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:refseq:NM_004333.6", + "code": "NM_004333.6", + "system": "https://www.ncbi.nlm.nih.gov/nuccore", + "iris": [ + "https://www.ncbi.nlm.nih.gov/nuccore/NM_004333.6" + ] + } + } + ], + "extensions": [ + { + "name": "cds_start", + "value": 226 + }, + { + "name": "location", + "value": "7q34" + }, + { + "name": "location_sortable", + "value": "07q34" + }, + { + "name": "protein_product", + "value": { + "id": "ga4gh:SL.GyZjLKMYAGTYzPBu6QnOWQ7yPzCmiDHX", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence spanning the length of refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6).", + "digest": "GyZjLKMYAGTYzPBu6QnOWQ7yPzCmiDHX", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 0, + "end": 766, + "sequence": null + } + }, + { + "name": "protein_product_exons", + "value": [ + { + "id": "ga4gh:SL.hOL8WaahYSFFYZueqxoOoxbJ7pIuQvTn", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 1.", + "digest": "hOL8WaahYSFFYZueqxoOoxbJ7pIuQvTn", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 0, + "end": 46, + "sequence": null + }, + { + "id": "ga4gh:SL.7_goR_Oultxkg0mXCkwlXmINl-XQDhHE", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 2.", + "digest": "7_goR_Oultxkg0mXCkwlXmINl-XQDhHE", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 46, + "end": 80, + "sequence": null + }, + { + "id": "ga4gh:SL.CS1pe7zSaG1e50vpe4vWc7AKIk1fxr87", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 3.", + "digest": "CS1pe7zSaG1e50vpe4vWc7AKIk1fxr87", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 80, + "end": 168, + "sequence": null + }, + { + "id": "ga4gh:SL.5yUJi9Qo1iL2QHp6uZNCFwOhBUtRQ40e", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 4. This exon's protein location may share a codon boundary with the adjacent exon's protein location.", + "digest": "5yUJi9Qo1iL2QHp6uZNCFwOhBUtRQ40e", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 168, + "end": 203, + "sequence": null + }, + { + "id": "ga4gh:SL.O6UpevcZQs-ROXsfAljQ9qPlYxtxSqeh", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 5. This exon's protein location may share a codon boundary with the adjacent exon's protein location.", + "digest": "O6UpevcZQs-ROXsfAljQ9qPlYxtxSqeh", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 202, + "end": 237, + "sequence": null + }, + { + "id": "ga4gh:SL.UOm9kpL4EqQfjENxbvQFISS0N6xQLJD7", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 6. This exon's protein location may share a codon boundary with the adjacent exon's protein location.", + "digest": "UOm9kpL4EqQfjENxbvQFISS0N6xQLJD7", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 237, + "end": 287, + "sequence": null + }, + { + "id": "ga4gh:SL.O5aoKYgGQeQxty8mMZ2v0FDapGZdKc-D", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 7. This exon's protein location shares a codon boundary with the adjacent exons on both sides.", + "digest": "O5aoKYgGQeQxty8mMZ2v0FDapGZdKc-D", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 286, + "end": 327, + "sequence": null + }, + { + "id": "ga4gh:SL.fFssoKwZLVckbEC8fUrPMNCtBPnNMXgJ", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 8. This exon's protein location may share a codon boundary with the adjacent exon's protein location.", + "digest": "fFssoKwZLVckbEC8fUrPMNCtBPnNMXgJ", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 326, + "end": 380, + "sequence": null + }, + { + "id": "ga4gh:SL.U__fUwoAIJcsdY5hmAmavUUuO4CC8pk0", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 9. This exon's protein location may share a codon boundary with the adjacent exon's protein location.", + "digest": "U__fUwoAIJcsdY5hmAmavUUuO4CC8pk0", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 380, + "end": 393, + "sequence": null + }, + { + "id": "ga4gh:SL.-K392L7HXLsNWM4ufXNfgoG7GIfQVarD", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 10. This exon's protein location may share a codon boundary with the adjacent exon's protein location.", + "digest": "-K392L7HXLsNWM4ufXNfgoG7GIfQVarD", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 392, + "end": 438, + "sequence": null + }, + { + "id": "ga4gh:SL.eCxrSQh4fL3MKPnUBLUv9KNfO98RKuMV", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 11. This exon's protein location may share a codon boundary with the adjacent exon's protein location.", + "digest": "eCxrSQh4fL3MKPnUBLUv9KNfO98RKuMV", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 438, + "end": 478, + "sequence": null + }, + { + "id": "ga4gh:SL.w3Z4K3BnaFT6T91kNNpUh7RCoSoMahn1", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 12. This exon's protein location shares a codon boundary with the adjacent exons on both sides.", + "digest": "w3Z4K3BnaFT6T91kNNpUh7RCoSoMahn1", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 477, + "end": 506, + "sequence": null + }, + { + "id": "ga4gh:SL.2qOEw44VleMXnVH-BgtC2CQ7qyw3Xsae", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 13. This exon's protein location shares a codon boundary with the adjacent exons on both sides.", + "digest": "2qOEw44VleMXnVH-BgtC2CQ7qyw3Xsae", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 505, + "end": 565, + "sequence": null + }, + { + "id": "ga4gh:SL.bdvKTqoNhYd6NS8rYw73wKhrJQly7I1Y", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 14. This exon's protein location shares a codon boundary with the adjacent exons on both sides.", + "digest": "bdvKTqoNhYd6NS8rYw73wKhrJQly7I1Y", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 564, + "end": 581, + "sequence": null + }, + { + "id": "ga4gh:SL.6XQV2D1tqwsE1vZHUy9aYIs6hI5nH94s", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 15. This exon's protein location may share a codon boundary with the adjacent exon's protein location.", + "digest": "6XQV2D1tqwsE1vZHUy9aYIs6hI5nH94s", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 580, + "end": 620, + "sequence": null + }, + { + "id": "ga4gh:SL.UPsLeAWsaAKh-Fp0flSsgG8179uub4hZ", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 16.", + "digest": "UPsLeAWsaAKh-Fp0flSsgG8179uub4hZ", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 620, + "end": 664, + "sequence": null + }, + { + "id": "ga4gh:SL.nc355SUTUMrJVgug-WSzOJctq4MoNNYB", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 17.", + "digest": "nc355SUTUMrJVgug-WSzOJctq4MoNNYB", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 664, + "end": 709, + "sequence": null + }, + { + "id": "ga4gh:SL.AIk_69IB5TFjrSrtgzSg6lMfyxYRLmGJ", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NP_004324.2, the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to Exon 18.", + "digest": "AIk_69IB5TFjrSrtgzSg6lMfyxYRLmGJ", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 709, + "end": 766, + "sequence": null + } + ] + }, + { + "name": "transcript", + "value": { + "id": "ga4gh:SL.5DaQm7UICclYaDk1ZwJXVyZgRCqIjWOC", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence spanning the length of refseq:NM_004333.6, the MANE Select coding transcript for BRAF.", + "digest": "5DaQm7UICclYaDk1ZwJXVyZgRCqIjWOC", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 0, + "end": 6459, + "sequence": null + } + }, + { + "name": "transcript_exons", + "value": [ + { + "id": "ga4gh:SL.NkKLnr1SEzKfAAiRnemhTlozP0rfW3Gs", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 1.", + "digest": "NkKLnr1SEzKfAAiRnemhTlozP0rfW3Gs", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 0, + "end": 364, + "sequence": null + }, + { + "id": "ga4gh:SL.vD8ErVLM_zSuQvjszFVy62_a0bw1S4er", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 2.", + "digest": "vD8ErVLM_zSuQvjszFVy62_a0bw1S4er", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 364, + "end": 466, + "sequence": null + }, + { + "id": "ga4gh:SL.5KxB3y0QHdBzi3tzRNkfvT8uLRTt9ts5", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 3.", + "digest": "5KxB3y0QHdBzi3tzRNkfvT8uLRTt9ts5", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 466, + "end": 730, + "sequence": null + }, + { + "id": "ga4gh:SL.p4Y8oVln7WJ0UYUe5pxvoQWVSHWpJDf8", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 4.", + "digest": "p4Y8oVln7WJ0UYUe5pxvoQWVSHWpJDf8", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 730, + "end": 834, + "sequence": null + }, + { + "id": "ga4gh:SL.vpskSU0K3SFOs3EZIieH-fWURMwKZhQz", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 5.", + "digest": "vpskSU0K3SFOs3EZIieH-fWURMwKZhQz", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 834, + "end": 937, + "sequence": null + }, + { + "id": "ga4gh:SL.9sCT0A0ANw9rx2A08OtiVwMNH1NRN9sW", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 6.", + "digest": "9sCT0A0ANw9rx2A08OtiVwMNH1NRN9sW", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 937, + "end": 1086, + "sequence": null + }, + { + "id": "ga4gh:SL.yAvyZYBfIIMMqyeEIIaUgglnGKgcLeJZ", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 7.", + "digest": "yAvyZYBfIIMMqyeEIIaUgglnGKgcLeJZ", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 1086, + "end": 1206, + "sequence": null + }, + { + "id": "ga4gh:SL.NYhcSsAWc-JY-Vn53DWm8Tu48WXXq-hW", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 8.", + "digest": "NYhcSsAWc-JY-Vn53DWm8Tu48WXXq-hW", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 1206, + "end": 1366, + "sequence": null + }, + { + "id": "ga4gh:SL.6EBIS7HvFmpxVgkTRoLdMjvVF8EWUAGC", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 9.", + "digest": "6EBIS7HvFmpxVgkTRoLdMjvVF8EWUAGC", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 1366, + "end": 1403, + "sequence": null + }, + { + "id": "ga4gh:SL.UTwkUqGHMu0dYAIgLM7F5pdC-sY6aUQA", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 10.", + "digest": "UTwkUqGHMu0dYAIgLM7F5pdC-sY6aUQA", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 1403, + "end": 1540, + "sequence": null + }, + { + "id": "ga4gh:SL.jLKvZLq-ngqr4x7brIW6vLXDS_3fd5Ob", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 11.", + "digest": "jLKvZLq-ngqr4x7brIW6vLXDS_3fd5Ob", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 1540, + "end": 1658, + "sequence": null + }, + { + "id": "ga4gh:SL.u46iGdWJkKaGiKk7hOYPjitzfrMaqF0-", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 12.", + "digest": "u46iGdWJkKaGiKk7hOYPjitzfrMaqF0-", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 1658, + "end": 1743, + "sequence": null + }, + { + "id": "ga4gh:SL.9dXtdcHkRExYIMZyxIAseZiCw5hLlpEs", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 13.", + "digest": "9dXtdcHkRExYIMZyxIAseZiCw5hLlpEs", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 1743, + "end": 1920, + "sequence": null + }, + { + "id": "ga4gh:SL.R20uLka3zT6NvHaHQwfzrHZydZh6yGYc", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 14.", + "digest": "R20uLka3zT6NvHaHQwfzrHZydZh6yGYc", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 1920, + "end": 1967, + "sequence": null + }, + { + "id": "ga4gh:SL.X2boAR9YrGSdN5P63-H1RozJVZ-dVXYN", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 15.", + "digest": "X2boAR9YrGSdN5P63-H1RozJVZ-dVXYN", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 1967, + "end": 2086, + "sequence": null + }, + { + "id": "ga4gh:SL.qSUaujsu7DQyZWQpQaDpOEZI54aXGj3x", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 16.", + "digest": "qSUaujsu7DQyZWQpQaDpOEZI54aXGj3x", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 2086, + "end": 2218, + "sequence": null + }, + { + "id": "ga4gh:SL.vHos-yjEx-SGyjV4IXbx10u3e4udZEXD", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 17.", + "digest": "vHos-yjEx-SGyjV4IXbx10u3e4udZEXD", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 2218, + "end": 2353, + "sequence": null + }, + { + "id": "ga4gh:SL.hLqg47i3Eb9SJSGmzv-iimV0l_Wwbukv", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Sequence within refseq:NM_004333.6, the MANE Select coding transcript for BRAF, corresponding to Exon 18.", + "digest": "hLqg47i3Eb9SJSGmzv-iimV0l_Wwbukv", + "sequenceReference": { + "id": "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "type": "SequenceReference", + "name": "NM_004333.6", + "aliases": [ + "ga4gh:SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "refseq:NM_004333.6" + ], + "description": "The MANE Select coding transcript for BRAF, corresponding to the Refseq transcript accession NM_004333.6.", + "moleculeType": "mRNA", + "refgetAccession": "SQ.aKMPEJgmlZXt_F6gRY5cUG3THH2n-GUa", + "residueAlphabet": "na" + }, + "start": 2353, + "end": 6459, + "sequence": null + } + ] + } + ] + } + ] + }, + "Gene.Gene": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^gene:hgnc:\\d+$", + "examples": [ + "gene:hgnc:string" + ] + }, + "conceptType": { + "const": "Gene" + }, + "name": { + "type": "string" + }, + "primaryCoding": { + "$ref": "#/components/schemas/Coding" + }, + "mappings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Mapping.ConceptMapping" + } + }, + "extensions": { + "type": "array" + } + }, + "required": [ + "id", + "conceptType", + "name", + "primaryCoding", + "mappings" + ], + "additionalProperties": false + }, + "Indication": { + "title": "Indication", + "description": "Regulatory approval text and its source, with contributions and documents embedded. Root type `Indication` with one subtype per organization, selected by the id prefix `ind:{org}:`. `status` is an extension; HSE indications additionally carry `reimbursement_scheme` and `reimbursement_comment` extensions.", + "$ref": "#/components/schemas/Indication.Indication", + "allOf": [ + { + "if": { + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^ind:fda:", + "examples": [ + "ind:fda:string" + ] + } + } + }, + "then": { + "$ref": "#/components/schemas/Indication.FDAIndication" + } + }, + { + "if": { + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^ind:ema:", + "examples": [ + "ind:ema:string" + ] + } + } + }, + "then": { + "$ref": "#/components/schemas/Indication.EMAIndication" + } + }, + { + "if": { + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^ind:hc:", + "examples": [ + "ind:hc:string" + ] + } + } + }, + "then": { + "$ref": "#/components/schemas/Indication.HCIndication" + } + }, + { + "if": { + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^ind:hpra:", + "examples": [ + "ind:hpra:string" + ] + } + } + }, + "then": { + "$ref": "#/components/schemas/Indication.HPRAIndication" + } + }, + { + "if": { + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^ind:hse:", + "examples": [ + "ind:hse:string" + ] + } + } + }, + "then": { + "$ref": "#/components/schemas/Indication.HSEIndication" + } + } + ], + "unevaluatedProperties": false, + "examples": [ + { + "id": "ind:fda:tafinlar:0", + "type": "Indication", + "description": "TAFINLAR is a kinase inhibitor indicated as a single agent for the treatment of patients with unresectable or metastatic melanoma with BRAF V600E mutation as detected by an FDA-approved test.", + "contributions": [ + { + "id": "ctrb:vanallenlab:2024-10-30:0", + "type": "Contribution", + "description": "Initial access of FDA approvals", + "date": "2024-10-30", + "contributor": { + "id": "agent:user:vanallenlab", + "type": "Agent", + "agentType": "contributor", + "name": "Van Allen lab", + "description": "Van Allen lab, Dana-Farber Cancer Institute" + } + }, + { + "id": "ctrb:fda:2013-05-29:0", + "type": "Contribution", + "description": "Indication received traditional approval.", + "date": "2013-05-29", + "contributor": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + } + } + ], + "reportedIn": [ + { + "id": "doc:fda:tafinlar", + "type": "Document", + "documentType": "Regulatory approval", + "name": "Tafinlar (dabrafenib) [package insert]. FDA.", + "title": null, + "aliases": [], + "description": "Novartis Pharmaceuticals Corporation. Tafinlar (dabrafenib) [package insert]. U.S. Food and Drug Administration website. https://www.accessdata.fda.gov/drugsatfda_docs/label/2024/202806s030lbl.pdf. Revised March 2024. Accessed October 30, 2024.", + "urls": [ + "https://www.accessdata.fda.gov/drugsatfda_docs/label/2024/202806s030lbl.pdf", + "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=202806" + ], + "doi": null, + "pmid": null, + "extensions": [ + { + "name": "agent", + "value": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + }, + "description": "The organization that published this document." + }, + { + "name": "company", + "value": "Novartis Pharmaceuticals Corporation.", + "description": "The company that manufactures the cancer drug. Only applicable to market authorization documents." + }, + { + "name": "drug_name_brand", + "value": "Tafinlar", + "description": "The brand name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "drug_name_generic", + "value": "dabrafenib", + "description": "The generic name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "first_publication_date", + "value": null, + "description": "The publication date for the initial version of this document." + }, + { + "name": "identification_number", + "value": 202806, + "description": "Identification number used by the publishing organization." + }, + { + "name": "publication_date", + "value": "2024-03-29", + "description": "The publication date for the document." + }, + { + "name": "status", + "value": "Active", + "description": "Whether this document is Active or Deprecated within moalmanac-db." + } + ] + }, + { + "id": "doc:fda:tafinlar:2013-05-29", + "type": "Document", + "documentType": "Regulatory approval", + "name": "Tafinlar (dabrafenib) [package insert]. FDA.", + "title": null, + "aliases": [], + "description": "Novartis Pharmaceuticals Corporation. Tafinlar (dabrafenib) [package insert]. U.S. Food and Drug Administration website. https://www.accessdata.fda.gov/drugsatfda_docs/label/2013/202806s000lbl.pdf. Revised May 2013. Accessed October 6, 2026.", + "urls": [ + "https://www.accessdata.fda.gov/drugsatfda_docs/label/2013/202806s000lbl.pdf", + "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=202806" + ], + "doi": null, + "pmid": null, + "extensions": [ + { + "name": "agent", + "value": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + }, + "description": "The organization that published this document." + }, + { + "name": "company", + "value": "Novartis Pharmaceuticals Corporation.", + "description": "The company that manufactures the cancer drug. Only applicable to market authorization documents." + }, + { + "name": "drug_name_brand", + "value": "Tafinlar", + "description": "The brand name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "drug_name_generic", + "value": "dabrafenib", + "description": "The generic name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "first_publication_date", + "value": null, + "description": "The publication date for the initial version of this document." + }, + { + "name": "identification_number", + "value": 202806, + "description": "Identification number used by the publishing organization." + }, + { + "name": "publication_date", + "value": "2013-05-29", + "description": "The publication date for the document." + }, + { + "name": "status", + "value": "Deprecated", + "description": "Whether this document is Active or Deprecated within moalmanac-db." + } + ] + } + ], + "extensions": [ + { + "name": "status", + "value": "Approved", + "description": "Current approval status." + } + ] + } + ] + }, + "Indication.Indication": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^ind:(fda|ema|hse|hc|hpra):.+$", + "examples": [ + "ind:string" + ] + }, + "type": { + "const": "Indication" + }, + "description": { + "type": "string", + "description": "Regulatory approval text, verbatim." + }, + "contributions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Contribution" + } + }, + "reportedIn": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Document" + } + }, + "extensions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Extension" + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Approved", + "Accelerated", + "Superseded", + "Withdrawn" + ] + } + } + } + } + ] + } + }, + "required": [ + "id", + "type", + "description", + "contributions", + "reportedIn", + "extensions" + ], + "description": "Root type shared by every organization. Organization-specific types below extend it; the top-level schema closes the record with unevaluatedProperties." + }, + "Indication.FDAIndication": { + "description": "Indication from the organization `fda`. `reportedIn` lists the evergreen FDA document (`doc:fda:{drug}`) first, followed by the dated, Deprecated FDA document (`doc:fda:{drug}:{YYYY-MM-DD}`) for the label in which the indication was initially approved.", + "allOf": [ + { + "$ref": "#/components/schemas/Indication.Indication" + }, + { + "properties": { + "id": { + "pattern": "^ind:fda:", + "examples": [ + "ind:fda:string" + ] + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Approved", + "Accelerated", + "Superseded", + "Withdrawn" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Approved", + "Accelerated", + "Superseded", + "Withdrawn" + ] + } + } + } + } + ] + }, + "reportedIn": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "prefixItems": [ + { + "$ref": "#/components/schemas/Document", + "properties": { + "id": { + "pattern": "^doc:fda:[^:]+$", + "examples": [ + "doc:fda:string" + ] + } + } + }, + { + "$ref": "#/components/schemas/Document", + "properties": { + "id": { + "pattern": "^doc:fda:[^:]+:\\d{4}-\\d{2}-\\d{2}$", + "examples": [ + "doc:fda:string" + ] + }, + "extensions": { + "contains": { + "type": "object", + "properties": { + "name": { + "const": "status" + }, + "value": { + "const": "Deprecated" + } + }, + "required": [ + "name", + "value" + ] + } + } + } + } + ], + "description": "The evergreen document, then the dated document for the initial approval." + } + } + } + ] + }, + "Indication.EMAIndication": { + "description": "Indication from the organization `ema`.", + "allOf": [ + { + "$ref": "#/components/schemas/Indication.Indication" + }, + { + "properties": { + "id": { + "pattern": "^ind:ema:", + "examples": [ + "ind:ema:string" + ] + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Approved", + "Accelerated", + "Superseded", + "Withdrawn" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Approved", + "Accelerated", + "Superseded", + "Withdrawn" + ] + } + } + } + } + ] + } + } + } + ] + }, + "Indication.HCIndication": { + "description": "Indication from the organization `hc`.", + "allOf": [ + { + "$ref": "#/components/schemas/Indication.Indication" + }, + { + "properties": { + "id": { + "pattern": "^ind:hc:", + "examples": [ + "ind:hc:string" + ] + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Approved", + "Accelerated", + "Superseded", + "Withdrawn" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Approved", + "Accelerated", + "Superseded", + "Withdrawn" + ] + } + } + } + } + ] + } + } + } + ] + }, + "Indication.HPRAIndication": { + "description": "Indication from the organization `hpra`.", + "allOf": [ + { + "$ref": "#/components/schemas/Indication.Indication" + }, + { + "properties": { + "id": { + "pattern": "^ind:hpra:", + "examples": [ + "ind:hpra:string" + ] + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Approved", + "Accelerated", + "Superseded", + "Withdrawn" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Approved", + "Accelerated", + "Superseded", + "Withdrawn" + ] + } + } + } + } + ] + } + } + } + ] + }, + "Indication.HSEIndication": { + "description": "Indication from the Health Service Executive (HSE). Unlike other organizations, carries reimbursement information as extensions.", + "allOf": [ + { + "$ref": "#/components/schemas/Indication.Indication" + }, + { + "properties": { + "id": { + "pattern": "^ind:hse:", + "examples": [ + "ind:hse:string" + ] + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Approved", + "Accelerated", + "Superseded", + "Withdrawn" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "reimbursement_scheme" + }, + "value": { + "enum": [ + "CDS", + "ODMS", + "Incomplete Reimbursement", + "Hospital", + "N/A", + "Hybrid" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "reimbursement_comment" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Approved", + "Accelerated", + "Superseded", + "Withdrawn" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "reimbursement_scheme" + }, + "value": { + "enum": [ + "CDS", + "ODMS", + "Incomplete Reimbursement", + "Hospital", + "N/A", + "Hybrid" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "reimbursement_comment" + }, + "value": { + "type": [ + "string", + "null" + ] + } + } + } + } + ] + } + } + } + ] + }, + "Mapping": { + "title": "Mapping", + "description": "A concept mapping as stored in a mappings file: a coding plus a SKOS relation, with the join record's `id`. Embedded in concepts as `ConceptMapping` (no `id`).", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^map:.+::.+$", + "examples": [ + "map:string" + ] + }, + "relation": { + "enum": [ + "broadMatch", + "closeMatch", + "exactMatch", + "narrowMatch", + "relatedMatch" + ] + }, + "coding": { + "$ref": "#/components/schemas/Coding" + } + }, + "required": [ + "id", + "relation", + "coding" + ], + "additionalProperties": false, + "examples": [ + { + "id": "map:hgnc:1097::ncbi:673", + "relation": "exactMatch", + "coding": { + "id": "coding:ncbi:673", + "code": "673", + "system": "https://www.ncbi.nlm.nih.gov/gene", + "iris": [ + "https://www.ncbi.nlm.nih.gov/gene/673" + ] + } + } + ] + }, + "Mapping.ConceptMapping": { + "type": "object", + "properties": { + "relation": { + "enum": [ + "broadMatch", + "closeMatch", + "exactMatch", + "narrowMatch", + "relatedMatch" + ] + }, + "coding": { + "$ref": "#/components/schemas/Coding" + } + }, + "required": [ + "relation", + "coding" + ], + "additionalProperties": false, + "description": "Mapping as embedded within a concept's `mappings` list." + }, + "Proposition": { + "title": "Proposition", + "description": "A VariantTherapeuticResponseProposition. Because Cat-VRS does not yet support sets of categorical variants, `subjectVariant` is a placeholder and the biomarker criteria are held in the `biomarkers` extension.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^prop:vtxr:\\d+$", + "examples": [ + "prop:vtxr:string" + ] + }, + "type": { + "const": "VariantTherapeuticResponseProposition" + }, + "predicate": { + "enum": [ + "predictsSensitivityTo", + "predictsResistanceTo" + ] + }, + "subjectVariant": { + "type": "object", + "properties": { + "type": { + "const": "CategoricalVariant" + }, + "description": { + "type": "string" + } + }, + "required": [ + "type", + "description" + ], + "additionalProperties": false + }, + "conditionQualifier": { + "$ref": "#/components/schemas/Disease" + }, + "objectTherapeutic": { + "oneOf": [ + { + "$ref": "#/components/schemas/Therapy" + }, + { + "$ref": "#/components/schemas/TherapyGroup" + } + ] + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarkers" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BiomarkerCriterion" + }, + "minItems": 1 + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarkers" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BiomarkerCriterion" + }, + "minItems": 1 + } + } + } + } + ] + } + }, + "required": [ + "id", + "type", + "predicate", + "subjectVariant", + "conditionQualifier", + "objectTherapeutic", + "extensions" + ], + "additionalProperties": false, + "examples": [ + { + "id": "prop:vtxr:88", + "type": "VariantTherapeuticResponseProposition", + "predicate": "predictsSensitivityTo", + "subjectVariant": { + "type": "CategoricalVariant", + "description": "Placeholder. Cat-VRS does not yet support sets of categorical variants. See the 'biomarkers' extension for biomarkers associated with this Proposition." + }, + "conditionQualifier": { + "id": "dis:ncit:C3224", + "conceptType": "Disease", + "name": "Melanoma", + "mappings": [ + { + "relation": "exactMatch", + "coding": { + "id": "coding:oncotree:MEL", + "code": "MEL", + "name": "Melanoma", + "system": "https://oncotree.mskcc.org", + "systemVersion": "oncotree_2025_10_03", + "iris": [ + "https://oncotree.mskcc.org/?version=oncotree_2025_10_03&field=NAME&search=Melanoma+%28MEL%29" + ] + } + } + ], + "extensions": [ + { + "name": "solid_tumor", + "value": true, + "description": "Boolean value for if this tumor type is categorized as a solid tumor." + } + ], + "primaryCoding": { + "id": "coding:ncit:C3224", + "code": "C3224", + "name": "Melanoma", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C3224" + ] + } + }, + "objectTherapeutic": { + "id": "tx:ncit:C82386", + "conceptType": "Therapy", + "name": "Dabrafenib", + "mappings": [ + { + "relation": "relatedMatch", + "coding": { + "id": "coding:rxcui:1424911", + "code": "1424911", + "name": "dabrafenib", + "system": "RxNorm", + "systemVersion": "02-Mar-2026", + "iris": [ + "https://mor.nlm.nih.gov/RxNav/search?searchBy=RXCUI&searchTerm=1424911" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:omop:43532299", + "code": "43532299", + "name": "dabrafenib", + "system": "OMOP", + "systemVersion": "v20260227", + "iris": [ + "https://athena.ohdsi.org/search-terms/terms/43532299" + ] + } + } + ], + "extensions": [ + { + "name": "therapy_strategy", + "value": [ + "B-RAF inhibition" + ], + "description": "Associated therapeutic strategy or mechanism of action of the therapy." + }, + { + "name": "therapy_type", + "value": "Targeted therapy", + "description": "Type of cancer treatment from cancer.gov: https://www.cancer.gov/about-cancer/treatment/types" + } + ], + "primaryCoding": { + "id": "coding:ncit:C82386", + "code": "C82386", + "name": "Dabrafenib", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C82386" + ] + } + }, + "extensions": [ + { + "name": "biomarkers", + "value": [ + { + "id": "bmkr.criterion:16", + "present": true, + "subject": { + "id": "bmkr:16", + "type": "CategoricalVariant", + "name": "BRAF p.V600E", + "constraints": [ + { + "type": "DefiningAlleleConstraint", + "allele": { + "id": "ga4gh:VA.j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "type": "Allele", + "name": "NP_004324.2:p.Val600Glu", + "aliases": [ + "NP_004324.2:p.V600E", + "BRAF p.V600E" + ], + "description": "VRS variation of NP_004324.2:p.Val600Glu", + "digest": "j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "expressions": [ + { + "syntax": "hgvs.p", + "value": "NP_004324.2:p.Val600Glu", + "extensions": [ + { + "name": "hgvs.p_short", + "value": "p.V600E" + } + ] + } + ], + "location": { + "id": "ga4gh:SL.t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Amino acid position 600 of the Refseq protein NP_004324.2, which is the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6).", + "digest": "t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 599, + "end": 600, + "sequence": "V" + }, + "state": { + "type": "LiteralSequenceExpression", + "sequence": "E" + } + }, + "relations": [] + }, + { + "type": "FeatureContextConstraint", + "featureContext": { + "id": "gene:hgnc:1097", + "conceptType": "Gene", + "name": "BRAF", + "primaryCoding": { + "id": "coding:hgnc:1097", + "code": "HGNC:1097", + "system": "https://genenames.org", + "iris": [ + "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:1097" + ] + }, + "mappings": [ + { + "relation": "exactMatch", + "coding": { + "id": "coding:ensembl:ensg00000157764", + "code": "ENSG00000157764", + "system": "https://www.ensembl.org", + "iris": [ + "https://www.ensembl.org/id/ENSG00000157764" + ] + } + }, + { + "relation": "exactMatch", + "coding": { + "id": "coding:ncbi:673", + "code": "673", + "system": "https://www.ncbi.nlm.nih.gov/gene", + "iris": [ + "https://www.ncbi.nlm.nih.gov/gene/673" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:refseq:NM_004333.6", + "code": "NM_004333.6", + "system": "https://www.ncbi.nlm.nih.gov/nuccore", + "iris": [ + "https://www.ncbi.nlm.nih.gov/nuccore/NM_004333.6" + ] + } + } + ] + } + } + ], + "extensions": [ + { + "name": "biomarker_type", + "value": "Somatic variant" + }, + { + "name": "chromosome", + "value": "7" + }, + { + "name": "start_position", + "value": 140453136 + }, + { + "name": "end_position", + "value": 140453136 + }, + { + "name": "reference_allele", + "value": "A" + }, + { + "name": "alternate_allele", + "value": "T" + }, + { + "name": "cdna_change", + "value": "c.1799T>A" + }, + { + "name": "protein_change", + "value": "p.V600E" + }, + { + "name": "variant_annotation", + "value": "Missense" + }, + { + "name": "exon", + "value": 15 + }, + { + "name": "rsid", + "value": "rs113488022" + }, + { + "name": "hgvsg", + "value": "7:g.140453136A>T" + }, + { + "name": "hgvsc", + "value": "ENST00000288602.6:c.1799T>A" + } + ] + } + } + ], + "description": "The biomarkers associated with this Proposition, each with a `present` flag indicating if the biomarker is present (true) or absent (false). Multiple biomarkers are combined with implied AND logic." + } + ] + } + ] + }, + "SequenceLocation": { + "title": "SequenceLocation", + "description": "A VRS SequenceLocation with its SequenceReference embedded.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^ga4gh:SL\\.[A-Za-z0-9_-]{32}$", + "examples": [ + "ga4gh:SL.string" + ] + }, + "type": { + "const": "SequenceLocation" + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "type": "string" + }, + "digest": { + "type": "string" + }, + "sequenceReference": { + "$ref": "#/components/schemas/SequenceReference" + }, + "start": { + "type": "integer", + "minimum": 0 + }, + "end": { + "type": "integer", + "minimum": 0 + }, + "sequence": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "type", + "name", + "aliases", + "description", + "digest", + "sequenceReference", + "start", + "end", + "sequence" + ], + "additionalProperties": false, + "examples": [ + { + "id": "ga4gh:SL.t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Amino acid position 600 of the Refseq protein NP_004324.2, which is the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6).", + "digest": "t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 599, + "end": 600, + "sequence": "V" + } + ] + }, + "SequenceReference": { + "title": "SequenceReference", + "description": "A VRS SequenceReference: a reference sequence (protein, transcript, or chromosome).", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^ga4gh:SQ\\.[A-Za-z0-9_-]{32}$", + "examples": [ + "ga4gh:SQ.string" + ] + }, + "type": { + "const": "SequenceReference" + }, + "name": { + "type": "string" + }, + "aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "type": "string" + }, + "moleculeType": { + "enum": [ + "protein", + "mRNA", + "genomic" + ] + }, + "refgetAccession": { + "type": "string", + "pattern": "^SQ\\.[A-Za-z0-9_-]{32}$", + "examples": [ + "SQ.string" + ] + }, + "residueAlphabet": { + "enum": [ + "aa", + "na" + ] + } + }, + "required": [ + "id", + "type", + "name", + "aliases", + "description", + "moleculeType", + "refgetAccession", + "residueAlphabet" + ], + "additionalProperties": false, + "examples": [ + { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + } + ] + }, + "Statement": { + "title": "Statement", + "description": "A knowledge claim, with contributions, documents, proposition, and strength embedded. `status` and the underlying `indication` are extensions.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^stmt:(fda|ema|hse|hc|hpra):.+$", + "examples": [ + "stmt:string" + ] + }, + "type": { + "const": "Statement" + }, + "description": { + "type": "string" + }, + "contributions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Contribution" + } + }, + "reportedIn": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Document" + } + }, + "direction": { + "enum": [ + "supports", + "disputes", + "neutral" + ] + }, + "proposition": { + "$ref": "#/components/schemas/Proposition" + }, + "strength": { + "$ref": "#/components/schemas/Strength" + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Active", + "Superseded", + "Deprecated" + ] + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "indication" + }, + "value": { + "$ref": "#/components/schemas/Indication" + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "status" + }, + "value": { + "enum": [ + "Active", + "Superseded", + "Deprecated" + ] + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "indication" + }, + "value": { + "$ref": "#/components/schemas/Indication" + } + } + } + } + ] + } + }, + "required": [ + "id", + "type", + "description", + "contributions", + "reportedIn", + "direction", + "proposition", + "strength", + "extensions" + ], + "additionalProperties": false, + "examples": [ + { + "id": "stmt:fda:tafinlar:0:0", + "type": "Statement", + "description": "The U.S. Food and Drug Administration granted approval to dabrafenib for the treatment of patients with unresectable or metastatic melanoma with BRAF V600E mutation, as detected by an FDA-approved test.", + "contributions": [ + { + "id": "ctrb:vanallenlab:2024-10-30:0", + "type": "Contribution", + "description": "Initial access of FDA approvals", + "date": "2024-10-30", + "contributor": { + "id": "agent:user:vanallenlab", + "type": "Agent", + "agentType": "contributor", + "name": "Van Allen lab", + "description": "Van Allen lab, Dana-Farber Cancer Institute" + } + }, + { + "id": "ctrb:fda:2013-05-29:0", + "type": "Contribution", + "description": "Indication received traditional approval.", + "date": "2013-05-29", + "contributor": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + } + } + ], + "reportedIn": [ + { + "id": "doc:fda:tafinlar", + "type": "Document", + "documentType": "Regulatory approval", + "name": "Tafinlar (dabrafenib) [package insert]. FDA.", + "title": null, + "aliases": [], + "description": "Novartis Pharmaceuticals Corporation. Tafinlar (dabrafenib) [package insert]. U.S. Food and Drug Administration website. https://www.accessdata.fda.gov/drugsatfda_docs/label/2024/202806s030lbl.pdf. Revised March 2024. Accessed October 30, 2024.", + "urls": [ + "https://www.accessdata.fda.gov/drugsatfda_docs/label/2024/202806s030lbl.pdf", + "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=202806" + ], + "doi": null, + "pmid": null, + "extensions": [ + { + "name": "agent", + "value": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + }, + "description": "The organization that published this document." + }, + { + "name": "company", + "value": "Novartis Pharmaceuticals Corporation.", + "description": "The company that manufactures the cancer drug. Only applicable to market authorization documents." + }, + { + "name": "drug_name_brand", + "value": "Tafinlar", + "description": "The brand name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "drug_name_generic", + "value": "dabrafenib", + "description": "The generic name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "first_publication_date", + "value": null, + "description": "The publication date for the initial version of this document." + }, + { + "name": "identification_number", + "value": 202806, + "description": "Identification number used by the publishing organization." + }, + { + "name": "publication_date", + "value": "2024-03-29", + "description": "The publication date for the document." + }, + { + "name": "status", + "value": "Active", + "description": "Whether this document is Active or Deprecated within moalmanac-db." + } + ] + }, + { + "id": "doc:fda:tafinlar:2013-05-29", + "type": "Document", + "documentType": "Regulatory approval", + "name": "Tafinlar (dabrafenib) [package insert]. FDA.", + "title": null, + "aliases": [], + "description": "Novartis Pharmaceuticals Corporation. Tafinlar (dabrafenib) [package insert]. U.S. Food and Drug Administration website. https://www.accessdata.fda.gov/drugsatfda_docs/label/2013/202806s000lbl.pdf. Revised May 2013. Accessed October 6, 2026.", + "urls": [ + "https://www.accessdata.fda.gov/drugsatfda_docs/label/2013/202806s000lbl.pdf", + "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=202806" + ], + "doi": null, + "pmid": null, + "extensions": [ + { + "name": "agent", + "value": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + }, + "description": "The organization that published this document." + }, + { + "name": "company", + "value": "Novartis Pharmaceuticals Corporation.", + "description": "The company that manufactures the cancer drug. Only applicable to market authorization documents." + }, + { + "name": "drug_name_brand", + "value": "Tafinlar", + "description": "The brand name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "drug_name_generic", + "value": "dabrafenib", + "description": "The generic name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "first_publication_date", + "value": null, + "description": "The publication date for the initial version of this document." + }, + { + "name": "identification_number", + "value": 202806, + "description": "Identification number used by the publishing organization." + }, + { + "name": "publication_date", + "value": "2013-05-29", + "description": "The publication date for the document." + }, + { + "name": "status", + "value": "Deprecated", + "description": "Whether this document is Active or Deprecated within moalmanac-db." + } + ] + } + ], + "direction": "supports", + "proposition": { + "id": "prop:vtxr:88", + "type": "VariantTherapeuticResponseProposition", + "predicate": "predictsSensitivityTo", + "subjectVariant": { + "type": "CategoricalVariant", + "description": "Placeholder. Cat-VRS does not yet support sets of categorical variants. See the 'biomarkers' extension for biomarkers associated with this Proposition." + }, + "conditionQualifier": { + "id": "dis:ncit:C3224", + "conceptType": "Disease", + "name": "Melanoma", + "mappings": [ + { + "relation": "exactMatch", + "coding": { + "id": "coding:oncotree:MEL", + "code": "MEL", + "name": "Melanoma", + "system": "https://oncotree.mskcc.org", + "systemVersion": "oncotree_2025_10_03", + "iris": [ + "https://oncotree.mskcc.org/?version=oncotree_2025_10_03&field=NAME&search=Melanoma+%28MEL%29" + ] + } + } + ], + "extensions": [ + { + "name": "solid_tumor", + "value": true, + "description": "Boolean value for if this tumor type is categorized as a solid tumor." + } + ], + "primaryCoding": { + "id": "coding:ncit:C3224", + "code": "C3224", + "name": "Melanoma", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C3224" + ] + } + }, + "objectTherapeutic": { + "id": "tx:ncit:C82386", + "conceptType": "Therapy", + "name": "Dabrafenib", + "mappings": [ + { + "relation": "relatedMatch", + "coding": { + "id": "coding:rxcui:1424911", + "code": "1424911", + "name": "dabrafenib", + "system": "RxNorm", + "systemVersion": "02-Mar-2026", + "iris": [ + "https://mor.nlm.nih.gov/RxNav/search?searchBy=RXCUI&searchTerm=1424911" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:omop:43532299", + "code": "43532299", + "name": "dabrafenib", + "system": "OMOP", + "systemVersion": "v20260227", + "iris": [ + "https://athena.ohdsi.org/search-terms/terms/43532299" + ] + } + } + ], + "extensions": [ + { + "name": "therapy_strategy", + "value": [ + "B-RAF inhibition" + ], + "description": "Associated therapeutic strategy or mechanism of action of the therapy." + }, + { + "name": "therapy_type", + "value": "Targeted therapy", + "description": "Type of cancer treatment from cancer.gov: https://www.cancer.gov/about-cancer/treatment/types" + } + ], + "primaryCoding": { + "id": "coding:ncit:C82386", + "code": "C82386", + "name": "Dabrafenib", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C82386" + ] + } + }, + "extensions": [ + { + "name": "biomarkers", + "value": [ + { + "id": "bmkr.criterion:16", + "present": true, + "subject": { + "id": "bmkr:16", + "type": "CategoricalVariant", + "name": "BRAF p.V600E", + "constraints": [ + { + "type": "DefiningAlleleConstraint", + "allele": { + "id": "ga4gh:VA.j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "type": "Allele", + "name": "NP_004324.2:p.Val600Glu", + "aliases": [ + "NP_004324.2:p.V600E", + "BRAF p.V600E" + ], + "description": "VRS variation of NP_004324.2:p.Val600Glu", + "digest": "j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "expressions": [ + { + "syntax": "hgvs.p", + "value": "NP_004324.2:p.Val600Glu", + "extensions": [ + { + "name": "hgvs.p_short", + "value": "p.V600E" + } + ] + } + ], + "location": { + "id": "ga4gh:SL.t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Amino acid position 600 of the Refseq protein NP_004324.2, which is the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6).", + "digest": "t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 599, + "end": 600, + "sequence": "V" + }, + "state": { + "type": "LiteralSequenceExpression", + "sequence": "E" + } + }, + "relations": [] + }, + { + "type": "FeatureContextConstraint", + "featureContext": { + "id": "gene:hgnc:1097", + "conceptType": "Gene", + "name": "BRAF", + "primaryCoding": { + "id": "coding:hgnc:1097", + "code": "HGNC:1097", + "system": "https://genenames.org", + "iris": [ + "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:1097" + ] + }, + "mappings": [ + { + "relation": "exactMatch", + "coding": { + "id": "coding:ensembl:ensg00000157764", + "code": "ENSG00000157764", + "system": "https://www.ensembl.org", + "iris": [ + "https://www.ensembl.org/id/ENSG00000157764" + ] + } + }, + { + "relation": "exactMatch", + "coding": { + "id": "coding:ncbi:673", + "code": "673", + "system": "https://www.ncbi.nlm.nih.gov/gene", + "iris": [ + "https://www.ncbi.nlm.nih.gov/gene/673" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:refseq:NM_004333.6", + "code": "NM_004333.6", + "system": "https://www.ncbi.nlm.nih.gov/nuccore", + "iris": [ + "https://www.ncbi.nlm.nih.gov/nuccore/NM_004333.6" + ] + } + } + ] + } + } + ], + "extensions": [ + { + "name": "biomarker_type", + "value": "Somatic variant" + }, + { + "name": "chromosome", + "value": "7" + }, + { + "name": "start_position", + "value": 140453136 + }, + { + "name": "end_position", + "value": 140453136 + }, + { + "name": "reference_allele", + "value": "A" + }, + { + "name": "alternate_allele", + "value": "T" + }, + { + "name": "cdna_change", + "value": "c.1799T>A" + }, + { + "name": "protein_change", + "value": "p.V600E" + }, + { + "name": "variant_annotation", + "value": "Missense" + }, + { + "name": "exon", + "value": 15 + }, + { + "name": "rsid", + "value": "rs113488022" + }, + { + "name": "hgvsg", + "value": "7:g.140453136A>T" + }, + { + "name": "hgvsc", + "value": "ENST00000288602.6:c.1799T>A" + } + ] + } + } + ], + "description": "The biomarkers associated with this Proposition, each with a `present` flag indicating if the biomarker is present (true) or absent (false). Multiple biomarkers are combined with implied AND logic." + } + ] + }, + "strength": { + "id": "str:ncit:C25425", + "conceptType": "Evidence", + "name": "Approval", + "mappings": [], + "primaryCoding": { + "id": "coding:ncit:C25425", + "code": "C25425", + "name": "Approval", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C25425" + ] + } + }, + "extensions": [ + { + "name": "status", + "value": "Active", + "description": "Whether this Statement is Active, Superseded, or Deprecated within moalmanac-db." + }, + { + "name": "indication", + "value": { + "id": "ind:fda:tafinlar:0", + "type": "Indication", + "description": "TAFINLAR is a kinase inhibitor indicated as a single agent for the treatment of patients with unresectable or metastatic melanoma with BRAF V600E mutation as detected by an FDA-approved test.", + "contributions": [ + { + "id": "ctrb:vanallenlab:2024-10-30:0", + "type": "Contribution", + "description": "Initial access of FDA approvals", + "date": "2024-10-30", + "contributor": { + "id": "agent:user:vanallenlab", + "type": "Agent", + "agentType": "contributor", + "name": "Van Allen lab", + "description": "Van Allen lab, Dana-Farber Cancer Institute" + } + }, + { + "id": "ctrb:fda:2013-05-29:0", + "type": "Contribution", + "description": "Indication received traditional approval.", + "date": "2013-05-29", + "contributor": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + } + } + ], + "reportedIn": [ + { + "id": "doc:fda:tafinlar", + "type": "Document", + "documentType": "Regulatory approval", + "name": "Tafinlar (dabrafenib) [package insert]. FDA.", + "title": null, + "aliases": [], + "description": "Novartis Pharmaceuticals Corporation. Tafinlar (dabrafenib) [package insert]. U.S. Food and Drug Administration website. https://www.accessdata.fda.gov/drugsatfda_docs/label/2024/202806s030lbl.pdf. Revised March 2024. Accessed October 30, 2024.", + "urls": [ + "https://www.accessdata.fda.gov/drugsatfda_docs/label/2024/202806s030lbl.pdf", + "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=202806" + ], + "doi": null, + "pmid": null, + "extensions": [ + { + "name": "agent", + "value": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + }, + "description": "The organization that published this document." + }, + { + "name": "company", + "value": "Novartis Pharmaceuticals Corporation.", + "description": "The company that manufactures the cancer drug. Only applicable to market authorization documents." + }, + { + "name": "drug_name_brand", + "value": "Tafinlar", + "description": "The brand name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "drug_name_generic", + "value": "dabrafenib", + "description": "The generic name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "first_publication_date", + "value": null, + "description": "The publication date for the initial version of this document." + }, + { + "name": "identification_number", + "value": 202806, + "description": "Identification number used by the publishing organization." + }, + { + "name": "publication_date", + "value": "2024-03-29", + "description": "The publication date for the document." + }, + { + "name": "status", + "value": "Active", + "description": "Whether this document is Active or Deprecated within moalmanac-db." + } + ] + }, + { + "id": "doc:fda:tafinlar:2013-05-29", + "type": "Document", + "documentType": "Regulatory approval", + "name": "Tafinlar (dabrafenib) [package insert]. FDA.", + "title": null, + "aliases": [], + "description": "Novartis Pharmaceuticals Corporation. Tafinlar (dabrafenib) [package insert]. U.S. Food and Drug Administration website. https://www.accessdata.fda.gov/drugsatfda_docs/label/2013/202806s000lbl.pdf. Revised May 2013. Accessed October 6, 2026.", + "urls": [ + "https://www.accessdata.fda.gov/drugsatfda_docs/label/2013/202806s000lbl.pdf", + "https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=202806" + ], + "doi": null, + "pmid": null, + "extensions": [ + { + "name": "agent", + "value": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + }, + "description": "The organization that published this document." + }, + { + "name": "company", + "value": "Novartis Pharmaceuticals Corporation.", + "description": "The company that manufactures the cancer drug. Only applicable to market authorization documents." + }, + { + "name": "drug_name_brand", + "value": "Tafinlar", + "description": "The brand name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "drug_name_generic", + "value": "dabrafenib", + "description": "The generic name of the cancer drug, per this document. Only applicable to market authorization documents." + }, + { + "name": "first_publication_date", + "value": null, + "description": "The publication date for the initial version of this document." + }, + { + "name": "identification_number", + "value": 202806, + "description": "Identification number used by the publishing organization." + }, + { + "name": "publication_date", + "value": "2013-05-29", + "description": "The publication date for the document." + }, + { + "name": "status", + "value": "Deprecated", + "description": "Whether this document is Active or Deprecated within moalmanac-db." + } + ] + } + ], + "extensions": [ + { + "name": "status", + "value": "Approved", + "description": "Current approval status." + } + ] + }, + "description": "The underlying Indication supporting this Statement." + } + ] + } + ] + }, + "Strength": { + "title": "Strength", + "description": "The category of evidence supporting a statement, with its primary coding embedded.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^str:ncit:C\\d+$", + "examples": [ + "str:ncit:Cstring" + ] + }, + "conceptType": { + "const": "Evidence" + }, + "name": { + "type": "string" + }, + "primaryCoding": { + "$ref": "#/components/schemas/Coding" + }, + "mappings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Mapping.ConceptMapping" + } + } + }, + "required": [ + "id", + "conceptType", + "name", + "primaryCoding", + "mappings" + ], + "additionalProperties": false, + "examples": [ + { + "id": "str:ncit:C25425", + "conceptType": "Evidence", + "name": "Approval", + "mappings": [], + "primaryCoding": { + "id": "coding:ncit:C25425", + "code": "C25425", + "name": "Approval", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C25425" + ] + } + } + ] + }, + "Therapy": { + "title": "Therapy", + "description": "A therapeutic agent concept with its primary coding and mappings embedded.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^tx:ncit:C\\d+$", + "examples": [ + "tx:ncit:Cstring" + ] + }, + "conceptType": { + "const": "Therapy" + }, + "name": { + "type": "string" + }, + "primaryCoding": { + "$ref": "#/components/schemas/Coding" + }, + "mappings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Mapping.ConceptMapping" + } + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "therapy_strategy" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "therapy_type" + }, + "value": { + "type": "string" + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "therapy_strategy" + }, + "value": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "therapy_type" + }, + "value": { + "type": "string" + } + } + } + } + ] + } + }, + "required": [ + "id", + "conceptType", + "name", + "primaryCoding", + "mappings", + "extensions" + ], + "additionalProperties": false, + "examples": [ + { + "id": "tx:ncit:C82386", + "conceptType": "Therapy", + "name": "Dabrafenib", + "mappings": [ + { + "relation": "relatedMatch", + "coding": { + "id": "coding:rxcui:1424911", + "code": "1424911", + "name": "dabrafenib", + "system": "RxNorm", + "systemVersion": "02-Mar-2026", + "iris": [ + "https://mor.nlm.nih.gov/RxNav/search?searchBy=RXCUI&searchTerm=1424911" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:omop:43532299", + "code": "43532299", + "name": "dabrafenib", + "system": "OMOP", + "systemVersion": "v20260227", + "iris": [ + "https://athena.ohdsi.org/search-terms/terms/43532299" + ] + } + } + ], + "extensions": [ + { + "name": "therapy_strategy", + "value": [ + "B-RAF inhibition" + ], + "description": "Associated therapeutic strategy or mechanism of action of the therapy." + }, + { + "name": "therapy_type", + "value": "Targeted therapy", + "description": "Type of cancer treatment from cancer.gov: https://www.cancer.gov/about-cancer/treatment/types" + } + ], + "primaryCoding": { + "id": "coding:ncit:C82386", + "code": "C82386", + "name": "Dabrafenib", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C82386" + ] + } + } + ] + }, + "TherapyGroup": { + "title": "TherapyGroup", + "description": "A set of therapies administered together, with each therapy embedded.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^txgrp:\\d+$", + "examples": [ + "txgrp:string" + ] + }, + "membershipOperator": { + "enum": [ + "AND", + "OR" + ] + }, + "therapies": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Therapy" + }, + "minItems": 1 + } + }, + "required": [ + "id", + "membershipOperator", + "therapies" + ], + "additionalProperties": false, + "examples": [ + { + "id": "txgrp:18", + "membershipOperator": "AND", + "therapies": [ + { + "id": "tx:ncit:C82386", + "conceptType": "Therapy", + "name": "Dabrafenib", + "mappings": [ + { + "relation": "relatedMatch", + "coding": { + "id": "coding:rxcui:1424911", + "code": "1424911", + "name": "dabrafenib", + "system": "RxNorm", + "systemVersion": "02-Mar-2026", + "iris": [ + "https://mor.nlm.nih.gov/RxNav/search?searchBy=RXCUI&searchTerm=1424911" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:omop:43532299", + "code": "43532299", + "name": "dabrafenib", + "system": "OMOP", + "systemVersion": "v20260227", + "iris": [ + "https://athena.ohdsi.org/search-terms/terms/43532299" + ] + } + } + ], + "extensions": [ + { + "name": "therapy_strategy", + "value": [ + "B-RAF inhibition" + ], + "description": "Associated therapeutic strategy or mechanism of action of the therapy." + }, + { + "name": "therapy_type", + "value": "Targeted therapy", + "description": "Type of cancer treatment from cancer.gov: https://www.cancer.gov/about-cancer/treatment/types" + } + ], + "primaryCoding": { + "id": "coding:ncit:C82386", + "code": "C82386", + "name": "Dabrafenib", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C82386" + ] + } + }, + { + "id": "tx:ncit:C77908", + "conceptType": "Therapy", + "name": "Trametinib", + "mappings": [ + { + "relation": "relatedMatch", + "coding": { + "id": "coding:rxcui:1425099", + "code": "1425099", + "name": "trametinib", + "system": "RxNorm", + "systemVersion": "02-Mar-2026", + "iris": [ + "https://mor.nlm.nih.gov/RxNav/search?searchBy=RXCUI&searchTerm=1425099" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:omop:43532497", + "code": "43532497", + "name": "trametinib", + "system": "OMOP", + "systemVersion": "v20260227", + "iris": [ + "https://athena.ohdsi.org/search-terms/terms/43532497" + ] + } + } + ], + "extensions": [ + { + "name": "therapy_strategy", + "value": [ + "MEK inhibition" + ], + "description": "Associated therapeutic strategy or mechanism of action of the therapy." + }, + { + "name": "therapy_type", + "value": "Targeted therapy", + "description": "Type of cancer treatment from cancer.gov: https://www.cancer.gov/about-cancer/treatment/types" + } + ], + "primaryCoding": { + "id": "coding:ncit:C77908", + "code": "C77908", + "name": "Trametinib", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C77908" + ] + } + } + ] + } + ] + }, + "About": { + "title": "About", + "description": "Database metadata from about.json. Unlike every other referenced file, this is a single object, and it becomes the root `about` key of the dereferenced database.", + "type": "object", + "properties": { + "github": { + "type": "string", + "format": "uri" + }, + "name": { + "type": "string" + }, + "license": { + "type": "string" + }, + "release": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "last_updated": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + } + }, + "required": [ + "github", + "name", + "license", + "release", + "url", + "last_updated" + ], + "additionalProperties": false, + "examples": [ + { + "github": "https://github.com/vanallenlab/moalmanac-db", + "name": "Molecular Oncology Almanac", + "license": "GPL-2.0", + "release": "draft", + "url": "https://moalmanac.org", + "last_updated": "2026-08-02" + } + ] + }, + "SearchResult": { + "title": "SearchResult", + "description": "A Proposition with aggregated information about the statements made about it.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^prop:vtxr:\\d+$", + "examples": [ + "prop:vtxr:string" + ] + }, + "type": { + "const": "VariantTherapeuticResponseProposition" + }, + "predicate": { + "enum": [ + "predictsSensitivityTo", + "predictsResistanceTo" + ] + }, + "subjectVariant": { + "type": "object", + "properties": { + "type": { + "const": "CategoricalVariant" + }, + "description": { + "type": "string" + } + }, + "required": [ + "type", + "description" + ], + "additionalProperties": false + }, + "conditionQualifier": { + "$ref": "#/components/schemas/Disease" + }, + "objectTherapeutic": { + "oneOf": [ + { + "$ref": "#/components/schemas/Therapy" + }, + { + "$ref": "#/components/schemas/TherapyGroup" + } + ] + }, + "extensions": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarkers" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BiomarkerCriterion" + }, + "minItems": 1 + } + } + } + ] + }, + "allOf": [ + { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "biomarkers" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BiomarkerCriterion" + }, + "minItems": 1 + } + } + } + } + ] + }, + "aggregates": { + "title": "Search aggregates", + "description": "Counts of Active statements made about this proposition, narrowed by the `document`, `indication`, and `agent_id` filters.", + "type": "object", + "required": [ + "statement_count", + "by_direction", + "by_document", + "by_agent", + "by_strength" + ], + "properties": { + "statement_count": { + "type": "integer" + }, + "by_direction": { + "type": "array", + "items": { + "type": "object", + "required": [ + "direction", + "count" + ], + "properties": { + "direction": { + "type": [ + "string", + "null" + ] + }, + "count": { + "type": "integer" + } + }, + "additionalProperties": false + } + }, + "by_document": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "count" + ], + "properties": { + "id": { + "type": "string", + "description": "Document id." + }, + "count": { + "type": "integer" + } + }, + "additionalProperties": false + } + }, + "by_agent": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "count" + ], + "properties": { + "id": { + "type": "string", + "description": "Agent id." + }, + "count": { + "type": "integer" + } + }, + "additionalProperties": false + } + }, + "by_strength": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "count" + ], + "properties": { + "id": { + "type": "string", + "description": "Strength id." + }, + "count": { + "type": "integer" + } + }, + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "required": [ + "id", + "type", + "predicate", + "subjectVariant", + "conditionQualifier", + "objectTherapeutic", + "extensions", + "aggregates" + ], + "additionalProperties": false, + "examples": [ + { + "id": "prop:vtxr:88", + "type": "VariantTherapeuticResponseProposition", + "predicate": "predictsSensitivityTo", + "subjectVariant": { + "type": "CategoricalVariant", + "description": "Placeholder. Cat-VRS does not yet support sets of categorical variants. See the 'biomarkers' extension for biomarkers associated with this Proposition." + }, + "conditionQualifier": { + "id": "dis:ncit:C3224", + "conceptType": "Disease", + "name": "Melanoma", + "mappings": [ + { + "relation": "exactMatch", + "coding": { + "id": "coding:oncotree:MEL", + "code": "MEL", + "name": "Melanoma", + "system": "https://oncotree.mskcc.org", + "systemVersion": "oncotree_2025_10_03", + "iris": [ + "https://oncotree.mskcc.org/?version=oncotree_2025_10_03&field=NAME&search=Melanoma+%28MEL%29" + ] + } + } + ], + "extensions": [ + { + "name": "solid_tumor", + "value": true, + "description": "Boolean value for if this tumor type is categorized as a solid tumor." + } + ], + "primaryCoding": { + "id": "coding:ncit:C3224", + "code": "C3224", + "name": "Melanoma", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C3224" + ] + } + }, + "objectTherapeutic": { + "id": "tx:ncit:C82386", + "conceptType": "Therapy", + "name": "Dabrafenib", + "mappings": [ + { + "relation": "relatedMatch", + "coding": { + "id": "coding:rxcui:1424911", + "code": "1424911", + "name": "dabrafenib", + "system": "RxNorm", + "systemVersion": "02-Mar-2026", + "iris": [ + "https://mor.nlm.nih.gov/RxNav/search?searchBy=RXCUI&searchTerm=1424911" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:omop:43532299", + "code": "43532299", + "name": "dabrafenib", + "system": "OMOP", + "systemVersion": "v20260227", + "iris": [ + "https://athena.ohdsi.org/search-terms/terms/43532299" + ] + } + } + ], + "extensions": [ + { + "name": "therapy_strategy", + "value": [ + "B-RAF inhibition" + ], + "description": "Associated therapeutic strategy or mechanism of action of the therapy." + }, + { + "name": "therapy_type", + "value": "Targeted therapy", + "description": "Type of cancer treatment from cancer.gov: https://www.cancer.gov/about-cancer/treatment/types" + } + ], + "primaryCoding": { + "id": "coding:ncit:C82386", + "code": "C82386", + "name": "Dabrafenib", + "system": "https://evsexplore.semantics.cancer.gov", + "systemVersion": "26.08e", + "iris": [ + "https://evsexplore.semantics.cancer.gov/evsexplore/concept/ncit/C82386" + ] + } + }, + "extensions": [ + { + "name": "biomarkers", + "value": [ + { + "id": "bmkr.criterion:16", + "present": true, + "subject": { + "id": "bmkr:16", + "type": "CategoricalVariant", + "name": "BRAF p.V600E", + "constraints": [ + { + "type": "DefiningAlleleConstraint", + "allele": { + "id": "ga4gh:VA.j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "type": "Allele", + "name": "NP_004324.2:p.Val600Glu", + "aliases": [ + "NP_004324.2:p.V600E", + "BRAF p.V600E" + ], + "description": "VRS variation of NP_004324.2:p.Val600Glu", + "digest": "j4XnsLZcdzDIYa5pvvXM7t1wn9OITr0L", + "expressions": [ + { + "syntax": "hgvs.p", + "value": "NP_004324.2:p.Val600Glu", + "extensions": [ + { + "name": "hgvs.p_short", + "value": "p.V600E" + } + ] + } + ], + "location": { + "id": "ga4gh:SL.t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "type": "SequenceLocation", + "name": null, + "aliases": [], + "description": "Amino acid position 600 of the Refseq protein NP_004324.2, which is the protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6).", + "digest": "t-3DrWALhgLdXHsupI-e-M00aL3HgK3y", + "sequenceReference": { + "id": "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "type": "SequenceReference", + "name": "NP_004324.2", + "aliases": [ + "ensembl:ENSP00000288602.6", + "ga4gh:SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "refseq:NP_004324.2" + ], + "description": "The protein product of the MANE Select coding transcript for BRAF (refseq:NM_004333.6), corresponding to the Refseq protein accession NP_004324.2.", + "moleculeType": "protein", + "refgetAccession": "SQ.cQvw4UsHHRRlogxbWCB8W-mKD4AraM9y", + "residueAlphabet": "aa" + }, + "start": 599, + "end": 600, + "sequence": "V" + }, + "state": { + "type": "LiteralSequenceExpression", + "sequence": "E" + } + }, + "relations": [] + }, + { + "type": "FeatureContextConstraint", + "featureContext": { + "id": "gene:hgnc:1097", + "conceptType": "Gene", + "name": "BRAF", + "primaryCoding": { + "id": "coding:hgnc:1097", + "code": "HGNC:1097", + "system": "https://genenames.org", + "iris": [ + "https://www.genenames.org/data/gene-symbol-report/#!/hgnc_id/HGNC:1097" + ] + }, + "mappings": [ + { + "relation": "exactMatch", + "coding": { + "id": "coding:ensembl:ensg00000157764", + "code": "ENSG00000157764", + "system": "https://www.ensembl.org", + "iris": [ + "https://www.ensembl.org/id/ENSG00000157764" + ] + } + }, + { + "relation": "exactMatch", + "coding": { + "id": "coding:ncbi:673", + "code": "673", + "system": "https://www.ncbi.nlm.nih.gov/gene", + "iris": [ + "https://www.ncbi.nlm.nih.gov/gene/673" + ] + } + }, + { + "relation": "relatedMatch", + "coding": { + "id": "coding:refseq:NM_004333.6", + "code": "NM_004333.6", + "system": "https://www.ncbi.nlm.nih.gov/nuccore", + "iris": [ + "https://www.ncbi.nlm.nih.gov/nuccore/NM_004333.6" + ] + } + } + ] + } + } + ], + "extensions": [ + { + "name": "biomarker_type", + "value": "Somatic variant" + }, + { + "name": "chromosome", + "value": "7" + }, + { + "name": "start_position", + "value": 140453136 + }, + { + "name": "end_position", + "value": 140453136 + }, + { + "name": "reference_allele", + "value": "A" + }, + { + "name": "alternate_allele", + "value": "T" + }, + { + "name": "cdna_change", + "value": "c.1799T>A" + }, + { + "name": "protein_change", + "value": "p.V600E" + }, + { + "name": "variant_annotation", + "value": "Missense" + }, + { + "name": "exon", + "value": 15 + }, + { + "name": "rsid", + "value": "rs113488022" + }, + { + "name": "hgvsg", + "value": "7:g.140453136A>T" + }, + { + "name": "hgvsc", + "value": "ENST00000288602.6:c.1799T>A" + } + ] + } + } + ], + "description": "The biomarkers associated with this Proposition, each with a `present` flag indicating if the biomarker is present (true) or absent (false). Multiple biomarkers are combined with implied AND logic." + } + ], + "aggregates": { + "statement_count": 1, + "by_direction": [ + { + "direction": "supports", + "count": 1 + } + ], + "by_document": [ + { + "id": "doc:fda:tafinlar", + "count": 1 + }, + { + "id": "doc:fda:tafinlar:2013-05-29", + "count": 1 + } + ], + "by_agent": [ + { + "id": "agent:org:fda", + "count": 1 + } + ], + "by_strength": [ + { + "id": "str:ncit:C25425", + "count": 1 + } + ] + } + } + ] + }, + "ContributionResult": { + "title": "ContributionResult", + "description": "A Contribution, with a `records` extension when requested with `include_records=true`.", + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^ctrb:[a-z]+:\\d{4}-\\d{2}-\\d{2}:\\d+$", + "examples": [ + "ctrb:string" + ] + }, + "type": { + "const": "Contribution" + }, + "description": { + "type": "string" + }, + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$" + }, + "contributor": { + "$ref": "#/components/schemas/Agent", + "not": { + "required": [ + "extensions" + ] + } + }, + "extensions": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "value", + "description" + ], + "properties": { + "name": { + "const": "records" + }, + "value": { + "type": "array", + "description": "Indications and statements this contribution was made to.", + "items": { + "type": "object", + "required": [ + "id", + "type", + "name", + "description" + ], + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "Indication", + "Statement" + ] + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "description": { + "type": [ + "string", + "null" + ] + } + }, + "additionalProperties": false + } + }, + "description": { + "type": "string" + } + }, + "additionalProperties": false + } + } + }, + "required": [ + "id", + "type", + "description", + "date", + "contributor" + ], + "additionalProperties": false, + "examples": [ + { + "id": "ctrb:fda:2013-05-29:0", + "type": "Contribution", + "description": "Indication received traditional approval.", + "date": "2013-05-29", + "contributor": { + "id": "agent:org:fda", + "type": "Agent", + "agentType": "organization", + "name": "Food and Drug Administration", + "description": "Regulatory agency that approves drugs for use in the United States." + } + } + ] + }, + "Meta": { + "title": "Meta", + "description": "Information about the request and response.", + "type": "object", + "required": [ + "data_length", + "message", + "request_url", + "status", + "status_code", + "timestamp_elapsed", + "timestamp_received", + "timestamp_returned", + "trace_id" + ], + "properties": { + "data_length": { + "type": "integer", + "description": "Number of records in `data`, or 1 for a single object." + }, + "message": { + "type": "string", + "description": "Human-readable status message." + }, + "request_url": { + "type": [ + "string", + "null" + ], + "description": "The full URL of the request." + }, + "status": { + "type": "string", + "enum": [ + "success", + "error" + ] + }, + "status_code": { + "type": "integer", + "examples": [ + 200 + ] + }, + "timestamp_elapsed": { + "type": "number", + "description": "Seconds between receiving the request and returning it." + }, + "timestamp_received": { + "type": "string", + "format": "date-time", + "description": "When the request was received, in UTC.", + "examples": [ + "2026-10-16T14:03:12.123456Z" + ] + }, + "timestamp_returned": { + "type": "string", + "format": "date-time", + "description": "When the response was returned, in UTC.", + "examples": [ + "2026-10-16T14:03:12.123456Z" + ] + }, + "trace_id": { + "type": "string", + "format": "uuid", + "description": "Unique id for this response." + } + }, + "additionalProperties": false + } + } + }, + "tags": [ + { + "name": "Service Info", + "description": "Get metadata about the API service." + }, + { + "name": "Search", + "description": "Search across database records. Primarily uses /propositions endpoint with additional aggregated information." + }, + { + "name": "Entities", + "description": "Access to the database content." + } + ] +} diff --git a/run.py b/run.py index 3ab9fef..676f9d1 100644 --- a/run.py +++ b/run.py @@ -1,5 +1,6 @@ -import dotenv import os + +import dotenv import uvicorn from app.main import create_app diff --git a/scripts/export_openapi.py b/scripts/export_openapi.py new file mode 100644 index 0000000..f04503d --- /dev/null +++ b/scripts/export_openapi.py @@ -0,0 +1,80 @@ +""" +Writes the API's OpenAPI schema to docs/openapi.json. + +The committed docs/openapi.json is what the documentation site renders, so it +must match the code. Regenerate it whenever routes, their docstrings or +parameters, or the moalmanac-db submodule change: + + python scripts/export_openapi.py + +With `--check`, nothing is written; the script exits with status 1 if the +committed file is out of date. CI runs it this way. +""" + +import argparse +import importlib +import json +import os +import pathlib +import sys + +REPOSITORY_ROOT = pathlib.Path(__file__).resolve().parents[1] +OUTPUT_PATH = REPOSITORY_ROOT / "docs" / "openapi.json" + + +def main() -> int: + """ + Generates the OpenAPI schema and writes it, or checks it against the + committed file. + + Returns: + int: The exit status: 0 on success, 1 if `--check` found the committed + file out of date. + """ + parser = argparse.ArgumentParser(description=__doc__.strip().splitlines()[0]) + parser.add_argument( + "--check", + action="store_true", + help="Exit with status 1 if docs/openapi.json is out of date.", + ) + arguments = parser.parse_args() + + serialized = render_schema() + current = OUTPUT_PATH.read_text() if OUTPUT_PATH.exists() else None + + if arguments.check: + if serialized != current: + print( + f"{OUTPUT_PATH.relative_to(REPOSITORY_ROOT)} is out of date. Run " + "`python scripts/export_openapi.py` and commit the result.", + file=sys.stderr, + ) + return 1 + print(f"{OUTPUT_PATH.relative_to(REPOSITORY_ROOT)} is up to date.") + return 0 + + OUTPUT_PATH.parent.mkdir(parents=True, exist_ok=True) + OUTPUT_PATH.write_text(serialized) + print(f"Wrote {OUTPUT_PATH.relative_to(REPOSITORY_ROOT)}.") + return 0 + + +def render_schema() -> str: + """ + Builds the application and serializes its OpenAPI schema. + + `app.main` creates the application when imported, reading `config.ini` from + the working directory, so this runs from the repository root. + + Returns: + str: The schema as indented JSON, ending with a newline. + """ + os.chdir(REPOSITORY_ROOT) + if str(REPOSITORY_ROOT) not in sys.path: + sys.path.insert(0, str(REPOSITORY_ROOT)) + application = importlib.import_module("app.main").app + return json.dumps(application.openapi(), indent=2, ensure_ascii=False) + "\n" + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/update_submodule_to_commit.sh b/update_submodule_to_commit.sh index 4c072b3..dd13c17 100644 --- a/update_submodule_to_commit.sh +++ b/update_submodule_to_commit.sh @@ -2,6 +2,16 @@ SUBMODULE_PATH=moalmanac-db COMMIT_HASH=$1 +# The Python used to regenerate docs/openapi.json; it needs this repo's requirements. +PYTHON=${PYTHON:-python} + +# docs/openapi.json is generated from the working tree, so uncommitted changes in +# app/ would end up in the committed spec without the code that produced them. +if [[ -n "$(git status --porcelain -- app/)" ]]; then + echo "app/ has uncommitted changes. Commit or stash them first, so docs/openapi.json" + echo "matches the committed code." + exit 1 +fi # Navigate to the submodule directory cd "$SUBMODULE_PATH" || { echo "Submodule path not found"; exit 1; } @@ -18,8 +28,16 @@ fi # Navigate back to the main repository cd - || exit -# Stage the submodule change -git add "$SUBMODULE_PATH" +# Regenerate the OpenAPI schema, whose response schemas and examples come from +# moalmanac-db, so it is committed together with the submodule update +"$PYTHON" scripts/export_openapi.py || { + echo "Failed to export docs/openapi.json; nothing was committed. $SUBMODULE_PATH is" + echo "checked out at the new commit but not staged. Fix the error and rerun." + exit 1 +} + +# Stage the submodule change and the regenerated schema +git add "$SUBMODULE_PATH" docs/openapi.json # Commit the change if [[ -n "$COMMIT_HASH" ]]; then From d85659c1cc7759ea9d630aa630a1a383886a357f Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 11:16:04 -0400 Subject: [PATCH 08/14] Updated scripts/ to utils/ --- .github/workflows/ci.yml | 4 +- .vscode/settings.json | 1 - README.md | 38 +++++++++++++-- app/dereferenced.py | 2 + update_submodule_to_commit.sh | 2 +- utils/export_openapi.py | 89 +++++++++++++++++++++++++++++++++++ 6 files changed, 129 insertions(+), 7 deletions(-) create mode 100644 utils/export_openapi.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ce5b2df..51328dc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,10 +31,10 @@ jobs: pip install -r requirements.txt - name: Lint - run: ruff check app scripts tests run.py + run: ruff check app utils tests run.py - name: Check docs/openapi.json is up to date - run: python scripts/export_openapi.py --check + run: python utils/export_openapi.py --check tests: name: Tests diff --git a/.vscode/settings.json b/.vscode/settings.json index 27480c0..44d539a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,7 +9,6 @@ "python.defaultInterpreterPath": "/opt/miniconda3/envs/moalmanac-api/bin/python", "python-envs.defaultEnvManager": "ms-python.python:conda", "python-envs.defaultPackageManager": "ms-python.python:conda", - "python-envs.pythonProjects": [], "[python]": { "editor.defaultFormatter": "charliermarsh.ruff" }, diff --git a/README.md b/README.md index 1fe9e5f..281e6e3 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ API for the [moalmanac-db](https://github.com/vanallenlab/moalmanac-db) and [moa This repository can be downloaded through GitHub by either using the website or terminal. To download on the website, navigate to the top of this page, click the green `Clone or download` button, and select `Download ZIP` to download this repository in a compressed format. To install using GitHub on terminal, type: ```bash -git clone https://github.com/vanallenlab/moalmanac-api.git --recursive-submodules +git clone https://github.com/vanallenlab/moalmanac-api.git --recurse-submodules cd moalmanac-api ``` @@ -20,15 +20,17 @@ git submodule update --init --recursive To update moalmanac-db to the latest commit, use [update_submodule_to_commit.sh](update_submodule_to_commit.sh): ```bash -bash update_submodule_to_commit +bash update_submodule_to_commit.sh ``` Alternatively, to update moalmanac-db to a specific commit: ```bash -bash update_submodule_to_commit +bash update_submodule_to_commit.sh ``` +The script also regenerates [docs/openapi.json](docs/openapi.json) (see [OpenAPI schema](#openapi-schema)) and commits it together with the submodule update, so run it with this repository's Python environment activated, or point `PYTHON` at it (e.g. `PYTHON=/path/to/python bash update_submodule_to_commit.sh`). It refuses to run while `app/` has uncommitted changes, so the committed schema matches the committed code, and it commits nothing if regenerating the schema fails. + ### Python dependencies This repository uses Python 3.12. We recommend using a [virtual environment](https://docs.python.org/3/tutorial/venv.html) and running Python with either [Anaconda](https://www.anaconda.com/download/) or [Miniconda](https://conda.io/miniconda.html). @@ -95,6 +97,36 @@ Gunicorn is launched using the provided `ExecStart` command: Systemd and Gunicorn manage launching the application for production using the [service/moalmanac-api.service](service/moalmanac-api.service) file, so there is no need to run `python run.py` for production use. +## Development + +### OpenAPI schema + +The API's interactive documentation is served at [https://api.moalmanac.org](https://api.moalmanac.org). A copy of its OpenAPI schema is committed at [docs/openapi.json](docs/openapi.json), which the [documentation site](https://docs.moalmanac.org) renders. Response schemas and examples in it are built from moalmanac-db's JSON Schemas and records (see [app/schemas.py](app/schemas.py)). + +Regenerate it whenever [app/routers/main/routes.py](./app/routers/main/routes.py) changes (routes, their parameters, or docstrings) or moalmanac-db is updated, and commit it with the change: + +```bash +python utils/export_openapi.py +``` + +[update_submodule_to_commit.sh](update_submodule_to_commit.sh) does this automatically when updating moalmanac-db. + +### Continuous integration + +[GitHub Actions](.github/workflows/ci.yml) runs on every pull request and every push to `main`: + +- `ruff check app utils tests run.py` +- `python utils/export_openapi.py --check`, which fails if [docs/openapi.json](docs/openapi.json) is out of date +- `python -m pytest` + +To run the same checks locally before pushing: + +```bash +ruff check app utils tests run.py +python utils/export_openapi.py --check +python -m pytest +``` + ## Citation If you find this tool or any code herein useful, please cite: diff --git a/app/dereferenced.py b/app/dereferenced.py index 3929e62..95c516c 100644 --- a/app/dereferenced.py +++ b/app/dereferenced.py @@ -33,6 +33,8 @@ if str(_MOALMANAC_DB_ROOT) not in sys.path: sys.path.insert(0, str(_MOALMANAC_DB_ROOT)) +# This repository's own utils/ has no __init__.py, so moalmanac-db's utils package, +# which does, is always the one imported here. from utils import dereference # noqa: E402 (needs moalmanac-db on sys.path first) # Every table `dereference.Database` needs to resolve foreign keys, keyed by the diff --git a/update_submodule_to_commit.sh b/update_submodule_to_commit.sh index dd13c17..4d62d46 100644 --- a/update_submodule_to_commit.sh +++ b/update_submodule_to_commit.sh @@ -30,7 +30,7 @@ cd - || exit # Regenerate the OpenAPI schema, whose response schemas and examples come from # moalmanac-db, so it is committed together with the submodule update -"$PYTHON" scripts/export_openapi.py || { +"$PYTHON" utils/export_openapi.py || { echo "Failed to export docs/openapi.json; nothing was committed. $SUBMODULE_PATH is" echo "checked out at the new commit but not staged. Fix the error and rerun." exit 1 diff --git a/utils/export_openapi.py b/utils/export_openapi.py new file mode 100644 index 0000000..cb3ea2a --- /dev/null +++ b/utils/export_openapi.py @@ -0,0 +1,89 @@ +""" +Writes the API's OpenAPI schema to docs/openapi.json. + +The committed docs/openapi.json is what the documentation site renders, so it +must match the code. Regenerate it whenever routes, their docstrings or +parameters, or the moalmanac-db submodule change: + + python utils/export_openapi.py + +With `--check`, nothing is written; the script exits with status 1 if the +committed file is out of date. CI runs it this way. +""" + +import argparse +import importlib +import json +import os +import pathlib +import sys + +REPOSITORY_ROOT = pathlib.Path(__file__).resolve().parents[1] +OUTPUT_PATH = REPOSITORY_ROOT / "docs" / "openapi.json" + + +def main() -> int: + """ + Generates the OpenAPI schema and writes it, or checks it against the + committed file. + + Returns: + int: The exit status: 0 on success, 1 if `--check` found the committed + file out of date. + """ + parser = argparse.ArgumentParser(description=__doc__.strip().splitlines()[0]) + parser.add_argument( + "--check", + action="store_true", + help="Exit with status 1 if docs/openapi.json is out of date.", + ) + arguments = parser.parse_args() + + # Run as `python -m utils.export_openapi`, this repository's utils/ is imported + # as `utils` and hides moalmanac-db's utils package, which the app imports. + if __package__: + print( + "Run this as `python utils/export_openapi.py`, not with `python -m`.", + file=sys.stderr, + ) + return 2 + + serialized = render_schema() + current = OUTPUT_PATH.read_text() if OUTPUT_PATH.exists() else None + + if arguments.check: + if serialized != current: + print( + f"{OUTPUT_PATH.relative_to(REPOSITORY_ROOT)} is out of date. Run " + "`python utils/export_openapi.py` and commit the result.", + file=sys.stderr, + ) + return 1 + print(f"{OUTPUT_PATH.relative_to(REPOSITORY_ROOT)} is up to date.") + return 0 + + OUTPUT_PATH.parent.mkdir(parents=True, exist_ok=True) + OUTPUT_PATH.write_text(serialized) + print(f"Wrote {OUTPUT_PATH.relative_to(REPOSITORY_ROOT)}.") + return 0 + + +def render_schema() -> str: + """ + Builds the application and serializes its OpenAPI schema. + + `app.main` creates the application when imported, reading `config.ini` from + the working directory, so this runs from the repository root. + + Returns: + str: The schema as indented JSON, ending with a newline. + """ + os.chdir(REPOSITORY_ROOT) + if str(REPOSITORY_ROOT) not in sys.path: + sys.path.insert(0, str(REPOSITORY_ROOT)) + application = importlib.import_module("app.main").app + return json.dumps(application.openapi(), indent=2, ensure_ascii=False) + "\n" + + +if __name__ == "__main__": + sys.exit(main()) From 38e42090f60b56140e48fc227004cee6bf448832 Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 11:23:06 -0400 Subject: [PATCH 09/14] Incorporating schema updates --- app/models.py | 9 ++- app/referenced.py | 2 +- docs/openapi.json | 139 ++++++++++++++++++++++++++++------------------ 3 files changed, 91 insertions(+), 59 deletions(-) diff --git a/app/models.py b/app/models.py index 4c2ae73..52f39f8 100644 --- a/app/models.py +++ b/app/models.py @@ -543,17 +543,16 @@ class Documents(Base): nullable=True, ) ) - # Integer or string (or null) per the schema, so stored as JSON - identification_number = sqlalchemy.Column( - sqlalchemy.JSON, - nullable=True, - ) publication_date: sqlalchemy.orm.Mapped[datetime.date | None] = ( sqlalchemy.orm.mapped_column( sqlalchemy.Date, nullable=True, ) ) + regulatory_identifier = sqlalchemy.Column( + sqlalchemy.String, + nullable=True, + ) status = sqlalchemy.Column( sqlalchemy.String, nullable=False, diff --git a/app/referenced.py b/app/referenced.py index c9d4873..00be891 100644 --- a/app/referenced.py +++ b/app/referenced.py @@ -320,8 +320,8 @@ def _mappings(association: type[models.Base], owner: str) -> ListField: "drug_name_brand", "drug_name_generic", "first_publication_date", - "identification_number", "publication_date", + "regulatory_identifier", "status", ), lists={ diff --git a/docs/openapi.json b/docs/openapi.json index 7070df3..41e7b5a 100644 --- a/docs/openapi.json +++ b/docs/openapi.json @@ -2876,7 +2876,7 @@ "extensions": [ { "name": "last_updated", - "value": "2026-05-07", + "value": "2026-06-24", "description": "" }, { @@ -6428,14 +6428,10 @@ "$ref": "#/components/schemas/Extension", "properties": { "name": { - "const": "identification_number" + "const": "publication_date" }, "value": { - "type": [ - "integer", - "string", - "null" - ] + "$ref": "#/components/schemas/Document.IsoDateOrNull" } } }, @@ -6443,10 +6439,13 @@ "$ref": "#/components/schemas/Extension", "properties": { "name": { - "const": "publication_date" + "const": "regulatory_identifier" }, "value": { - "$ref": "#/components/schemas/Document.IsoDateOrNull" + "type": [ + "string", + "null" + ] } } }, @@ -6548,14 +6547,10 @@ "$ref": "#/components/schemas/Extension", "properties": { "name": { - "const": "identification_number" + "const": "publication_date" }, "value": { - "type": [ - "integer", - "string", - "null" - ] + "$ref": "#/components/schemas/Document.IsoDateOrNull" } } } @@ -6565,10 +6560,13 @@ "$ref": "#/components/schemas/Extension", "properties": { "name": { - "const": "publication_date" + "const": "regulatory_identifier" }, "value": { - "$ref": "#/components/schemas/Document.IsoDateOrNull" + "type": [ + "string", + "null" + ] } } } @@ -6606,6 +6604,41 @@ "extensions" ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "id" + ], + "properties": { + "id": { + "pattern": "^doc:fda:", + "examples": [ + "doc:fda:string" + ] + } + } + }, + "then": { + "properties": { + "extensions": { + "contains": { + "$ref": "#/components/schemas/Extension", + "properties": { + "name": { + "const": "regulatory_identifier" + }, + "value": { + "type": "string", + "pattern": "^(BLA|NDA)[0-9]{6}$" + } + } + } + } + } + } + } + ], "examples": [ { "id": "doc:fda:tafinlar", @@ -6653,16 +6686,16 @@ "value": null, "description": "The publication date for the initial version of this document." }, - { - "name": "identification_number", - "value": 202806, - "description": "Identification number used by the publishing organization." - }, { "name": "publication_date", "value": "2024-03-29", "description": "The publication date for the document." }, + { + "name": "regulatory_identifier", + "value": "NDA202806", + "description": "Identifier assigned by the regulatory agency, such as an FDA application number (e.g. NDA208716, BLA125427) or an EMA product number (e.g. EMEA/H/C/006184)." + }, { "name": "status", "value": "Active", @@ -8171,16 +8204,16 @@ "value": null, "description": "The publication date for the initial version of this document." }, - { - "name": "identification_number", - "value": 202806, - "description": "Identification number used by the publishing organization." - }, { "name": "publication_date", "value": "2024-03-29", "description": "The publication date for the document." }, + { + "name": "regulatory_identifier", + "value": "NDA202806", + "description": "Identifier assigned by the regulatory agency, such as an FDA application number (e.g. NDA208716, BLA125427) or an EMA product number (e.g. EMEA/H/C/006184)." + }, { "name": "status", "value": "Active", @@ -8234,16 +8267,16 @@ "value": null, "description": "The publication date for the initial version of this document." }, - { - "name": "identification_number", - "value": 202806, - "description": "Identification number used by the publishing organization." - }, { "name": "publication_date", "value": "2013-05-29", "description": "The publication date for the document." }, + { + "name": "regulatory_identifier", + "value": "NDA202806", + "description": "Identifier assigned by the regulatory agency, such as an FDA application number (e.g. NDA208716, BLA125427) or an EMA product number (e.g. EMEA/H/C/006184)." + }, { "name": "status", "value": "Deprecated", @@ -9574,16 +9607,16 @@ "value": null, "description": "The publication date for the initial version of this document." }, - { - "name": "identification_number", - "value": 202806, - "description": "Identification number used by the publishing organization." - }, { "name": "publication_date", "value": "2024-03-29", "description": "The publication date for the document." }, + { + "name": "regulatory_identifier", + "value": "NDA202806", + "description": "Identifier assigned by the regulatory agency, such as an FDA application number (e.g. NDA208716, BLA125427) or an EMA product number (e.g. EMEA/H/C/006184)." + }, { "name": "status", "value": "Active", @@ -9637,16 +9670,16 @@ "value": null, "description": "The publication date for the initial version of this document." }, - { - "name": "identification_number", - "value": 202806, - "description": "Identification number used by the publishing organization." - }, { "name": "publication_date", "value": "2013-05-29", "description": "The publication date for the document." }, + { + "name": "regulatory_identifier", + "value": "NDA202806", + "description": "Identifier assigned by the regulatory agency, such as an FDA application number (e.g. NDA208716, BLA125427) or an EMA product number (e.g. EMEA/H/C/006184)." + }, { "name": "status", "value": "Deprecated", @@ -10042,16 +10075,16 @@ "value": null, "description": "The publication date for the initial version of this document." }, - { - "name": "identification_number", - "value": 202806, - "description": "Identification number used by the publishing organization." - }, { "name": "publication_date", "value": "2024-03-29", "description": "The publication date for the document." }, + { + "name": "regulatory_identifier", + "value": "NDA202806", + "description": "Identifier assigned by the regulatory agency, such as an FDA application number (e.g. NDA208716, BLA125427) or an EMA product number (e.g. EMEA/H/C/006184)." + }, { "name": "status", "value": "Active", @@ -10105,16 +10138,16 @@ "value": null, "description": "The publication date for the initial version of this document." }, - { - "name": "identification_number", - "value": 202806, - "description": "Identification number used by the publishing organization." - }, { "name": "publication_date", "value": "2013-05-29", "description": "The publication date for the document." }, + { + "name": "regulatory_identifier", + "value": "NDA202806", + "description": "Identifier assigned by the regulatory agency, such as an FDA application number (e.g. NDA208716, BLA125427) or an EMA product number (e.g. EMEA/H/C/006184)." + }, { "name": "status", "value": "Deprecated", @@ -10550,7 +10583,7 @@ "license": "GPL-2.0", "release": "draft", "url": "https://moalmanac.org", - "last_updated": "2026-08-02" + "last_updated": "2026-10-08" } ] }, From ca49428b7b7ff145cb10c7993a33e368f88af86c Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 11:23:19 -0400 Subject: [PATCH 10/14] Removed old folder --- scripts/export_openapi.py | 80 --------------------------------------- 1 file changed, 80 deletions(-) delete mode 100644 scripts/export_openapi.py diff --git a/scripts/export_openapi.py b/scripts/export_openapi.py deleted file mode 100644 index f04503d..0000000 --- a/scripts/export_openapi.py +++ /dev/null @@ -1,80 +0,0 @@ -""" -Writes the API's OpenAPI schema to docs/openapi.json. - -The committed docs/openapi.json is what the documentation site renders, so it -must match the code. Regenerate it whenever routes, their docstrings or -parameters, or the moalmanac-db submodule change: - - python scripts/export_openapi.py - -With `--check`, nothing is written; the script exits with status 1 if the -committed file is out of date. CI runs it this way. -""" - -import argparse -import importlib -import json -import os -import pathlib -import sys - -REPOSITORY_ROOT = pathlib.Path(__file__).resolve().parents[1] -OUTPUT_PATH = REPOSITORY_ROOT / "docs" / "openapi.json" - - -def main() -> int: - """ - Generates the OpenAPI schema and writes it, or checks it against the - committed file. - - Returns: - int: The exit status: 0 on success, 1 if `--check` found the committed - file out of date. - """ - parser = argparse.ArgumentParser(description=__doc__.strip().splitlines()[0]) - parser.add_argument( - "--check", - action="store_true", - help="Exit with status 1 if docs/openapi.json is out of date.", - ) - arguments = parser.parse_args() - - serialized = render_schema() - current = OUTPUT_PATH.read_text() if OUTPUT_PATH.exists() else None - - if arguments.check: - if serialized != current: - print( - f"{OUTPUT_PATH.relative_to(REPOSITORY_ROOT)} is out of date. Run " - "`python scripts/export_openapi.py` and commit the result.", - file=sys.stderr, - ) - return 1 - print(f"{OUTPUT_PATH.relative_to(REPOSITORY_ROOT)} is up to date.") - return 0 - - OUTPUT_PATH.parent.mkdir(parents=True, exist_ok=True) - OUTPUT_PATH.write_text(serialized) - print(f"Wrote {OUTPUT_PATH.relative_to(REPOSITORY_ROOT)}.") - return 0 - - -def render_schema() -> str: - """ - Builds the application and serializes its OpenAPI schema. - - `app.main` creates the application when imported, reading `config.ini` from - the working directory, so this runs from the repository root. - - Returns: - str: The schema as indented JSON, ending with a newline. - """ - os.chdir(REPOSITORY_ROOT) - if str(REPOSITORY_ROOT) not in sys.path: - sys.path.insert(0, str(REPOSITORY_ROOT)) - application = importlib.import_module("app.main").app - return json.dumps(application.openapi(), indent=2, ensure_ascii=False) + "\n" - - -if __name__ == "__main__": - sys.exit(main()) From 5667aa2066c8f193aa0a379897d29dfc862b74d3 Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 11:23:39 -0400 Subject: [PATCH 11/14] Updated submodule --- moalmanac-db | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moalmanac-db b/moalmanac-db index df7b204..e8179c4 160000 --- a/moalmanac-db +++ b/moalmanac-db @@ -1 +1 @@ -Subproject commit df7b2046423adfbbf23c9d220687b7efd0e94a30 +Subproject commit e8179c4641a1f5c3345e5ec6c6ca6239548605ed From 861a10bac30c9242baae88caffaca9bd2058deef Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 11:32:01 -0400 Subject: [PATCH 12/14] Renamed submodule from moalmanac-db to moalmanac_db --- .gitmodules | 2 +- app/dereferenced.py | 33 +++++++++------------------------ app/main.py | 2 +- app/models.py | 2 +- app/populate_database.py | 2 +- app/routers/main/handlers.py | 5 +++-- app/schemas.py | 2 +- moalmanac-db => moalmanac_db | 0 8 files changed, 17 insertions(+), 31 deletions(-) rename moalmanac-db => moalmanac_db (100%) diff --git a/.gitmodules b/.gitmodules index d17f658..a89c3d3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "moalmanac-db"] - path = moalmanac-db + path = moalmanac_db url = https://github.com/vanallenlab/moalmanac-db diff --git a/app/dereferenced.py b/app/dereferenced.py index 95c516c..07ae0d9 100644 --- a/app/dereferenced.py +++ b/app/dereferenced.py @@ -1,13 +1,13 @@ """ Builds the in-memory cache of dereferenced records served by the API. -The API's SQLite tables mirror moalmanac-db/schemas/referenced (see app.referenced). -Endpoints instead serve records shaped like moalmanac-db/schemas/dereferenced, with +The API's SQLite tables mirror moalmanac_db/schemas/referenced (see app.referenced). +Endpoints instead serve records shaped like moalmanac_db/schemas/dereferenced, with foreign keys resolved to embedded objects. Rather than reimplementing that resolution, this module rebuilds the referenced tables from SQLite (`app.referenced.load_referenced`) and runs them through the moalmanac-db -submodule's own `utils.dereference`, so the submodule stays the single source of -truth for the output shape. +submodule's own `moalmanac_db.utils.dereference`, so the submodule stays the single +source of truth for the output shape. `build_cache` is called once, at startup (see app.main.create_app), and its result is stored on `app.state.dereferenced`. It is a plain read-only dict and is never @@ -15,27 +15,12 @@ """ import copy -import pathlib -import sys import typing import sqlalchemy.orm from app import referenced - -_MOALMANAC_DB_ROOT = ( - pathlib - .Path(__file__) - .resolve() - .parents[1] - / "moalmanac-db" -) -if str(_MOALMANAC_DB_ROOT) not in sys.path: - sys.path.insert(0, str(_MOALMANAC_DB_ROOT)) - -# This repository's own utils/ has no __init__.py, so moalmanac-db's utils package, -# which does, is always the one imported here. -from utils import dereference # noqa: E402 (needs moalmanac-db on sys.path first) +from moalmanac_db.utils import dereference # Every table `dereference.Database` needs to resolve foreign keys, keyed by the # same names as app.referenced.TABLES. `urls` has no entry in _CONCEPT_DIRS (it is @@ -73,16 +58,16 @@ def build_cache(session: sqlalchemy.orm.Session) -> Cache: Rebuilds the referenced tables from SQLite, feeds them into a fresh `dereference.Database`, and dereferences each entity in the same order - `utils.dereference.write_all_concepts` uses. This is the entire dereferencing - logic; the API does not duplicate any of it. + `moalmanac_db.utils.dereference.write_all_concepts` uses. This is the entire + dereferencing logic; the API does not duplicate any of it. Args: session (sqlalchemy.orm.Session): The database session to read from. Returns: Cache: `{entity: {id: record}}` for every entity in - `utils.dereference._CONCEPT_DIRS`, each record equal to its file in - moalmanac-db/dereferenced//. Dict order (both the outer entities and + `moalmanac_db.utils.dereference._CONCEPT_DIRS`, each record equal to its file in + moalmanac_db/dereferenced//. Dict order (both the outer entities and each inner id) matches the referenced source, which callers rely on for deterministic, file-order output. """ diff --git a/app/main.py b/app/main.py index b3880aa..d46f1d2 100644 --- a/app/main.py +++ b/app/main.py @@ -120,7 +120,7 @@ def create_app(config_path: str = "config.ini") -> fastapi.FastAPI: if not os.path.exists(database_path): raise FileNotFoundError( f"{database_path} does not exist. Run " - "`python -m app.populate_database -i moalmanac-db/referenced -c " + "`python -m app.populate_database -i moalmanac_db/referenced -c " f"{config_path}` to create it.", ) diff --git a/app/models.py b/app/models.py index 52f39f8..4601865 100644 --- a/app/models.py +++ b/app/models.py @@ -1,5 +1,5 @@ """ -SQLAlchemy models mirroring moalmanac-db/schemas/referenced. +SQLAlchemy models mirroring moalmanac_db/schemas/referenced. Each entity table has one column per scalar field of its referenced schema, and the column name is the JSON key. Where the JSON key cannot be a Python attribute diff --git a/app/populate_database.py b/app/populate_database.py index fa2479a..2b0bdc3 100644 --- a/app/populate_database.py +++ b/app/populate_database.py @@ -481,7 +481,7 @@ def main(referenced_directory: str, config_path: str = "config.ini") -> None: arg_parser.add_argument( "--input", "-i", - default="moalmanac-db/referenced", + default="moalmanac_db/referenced", help="Directory for referenced moalmanac db json files", ) arg_parser.add_argument( diff --git a/app/routers/main/handlers.py b/app/routers/main/handlers.py index 4089f9d..c24083b 100644 --- a/app/routers/main/handlers.py +++ b/app/routers/main/handlers.py @@ -7,8 +7,9 @@ another entity (for example `?gene=BRAF` on `/propositions`). The route then calls `execute_query` for the matching ids and `serialize` to look them up in `app.state.dereferenced[entity]`. Because that cache already holds fully resolved, -correctly ordered records (built by moalmanac-db's own `utils.dereference`), no -handler builds or reorders a response dictionary itself. +correctly ordered records (built by moalmanac-db's own +`moalmanac_db.utils.dereference`), no handler builds or reorders a response +dictionary itself. """ import typing diff --git a/app/schemas.py b/app/schemas.py index 0540d55..c5957f0 100644 --- a/app/schemas.py +++ b/app/schemas.py @@ -28,7 +28,7 @@ import re import typing -DB_DIRECTORY = pathlib.Path(__file__).parent.parent / "moalmanac-db" +DB_DIRECTORY = pathlib.Path(__file__).parent.parent / "moalmanac_db" DEREFERENCED_DIRECTORY = DB_DIRECTORY / "dereferenced" SCHEMAS_DIRECTORY = DB_DIRECTORY / "schemas" COMPONENTS_PREFIX = "#/components/schemas/" diff --git a/moalmanac-db b/moalmanac_db similarity index 100% rename from moalmanac-db rename to moalmanac_db From ca95e52da294b357cfbd2e1ce44513bb5154c0b5 Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 11:32:39 -0400 Subject: [PATCH 13/14] Finish updates for renaming moalmanac-db to moalmanac_db --- README.md | 2 +- service/README.md | 2 +- tests/conftest.py | 8 ++++---- tests/test_endpoints.py | 4 ++-- tests/test_roundtrip.py | 2 +- update_submodule_to_commit.sh | 2 +- utils/export_openapi.py | 9 --------- 7 files changed, 10 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 281e6e3..f8d17c5 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ ipython kernel install --user --name=moalmanac-api To update the database content from [moalmanac-db](https://github.com/vanallenlab/moalmanac-db): ```bash -rm data/moalmanac.sqlite3; python -m app.populate_database -i moalmanac-db/referenced/ -c config.ini +rm data/moalmanac.sqlite3; python -m app.populate_database -i moalmanac_db/referenced/ -c config.ini ``` ### Environment configuration diff --git a/service/README.md b/service/README.md index 9045661..794b5f2 100644 --- a/service/README.md +++ b/service/README.md @@ -35,7 +35,7 @@ Use `sudo -u moalmanac -H bash -c '...'` for multi-line commands like this one. 2. Create a static ip address to associate with the VM 3. Add A and CNAME to zone under network services > cloud dns > and your zone, if you haven't already created one 4. Create the `moalmanac` account and its conda install, as described in [Service account](#service-account). -5. As `moalmanac` (`sudo -iu moalmanac`), clone this repository with its `moalmanac-db` submodule and build its environment. The application imports `moalmanac-db/utils/dereference.py` directly at every startup to build the dereferenced record cache it serves, so it will fail to start without the submodule checked out. +5. As `moalmanac` (`sudo -iu moalmanac`), clone this repository with its `moalmanac-db` submodule and build its environment. The application imports `moalmanac_db/utils/dereference.py` directly at every startup to build the dereferenced record cache it serves, so it will fail to start without the submodule checked out. ```bash git clone --recurse-submodules https://github.com/vanallenlab/moalmanac-api.git /srv/moalmanac/moalmanac-api diff --git a/tests/conftest.py b/tests/conftest.py index a83e71c..8997076 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -12,7 +12,7 @@ from app.main import create_app REPO_ROOT = pathlib.Path(__file__).resolve().parents[1] -MOALMANAC_DB_ROOT = REPO_ROOT / "moalmanac-db" +MOALMANAC_DB_ROOT = REPO_ROOT / "moalmanac_db" REFERENCED_ROOT = MOALMANAC_DB_ROOT / "referenced" DEREFERENCED_ROOT = MOALMANAC_DB_ROOT / "dereferenced" SCHEMA_ROOT = MOALMANAC_DB_ROOT / "schemas" @@ -35,7 +35,7 @@ def load_json(path: pathlib.Path) -> dict[str, typing.Any]: def config_path(tmp_path_factory: pytest.TempPathFactory) -> str: """ Writes a config file pointing at a SQLite file in a temporary directory, and - populates that database from moalmanac-db/referenced. + populates that database from moalmanac_db/referenced. Args: tmp_path_factory (pytest.TempPathFactory): Pytest's session temp directory factory. @@ -118,10 +118,10 @@ def client(app: fastapi.FastAPI) -> fastapi.testclient.TestClient: def load_dereferenced(entity: str) -> dict[str, dict]: """ - Loads every record for one entity from moalmanac-db/dereferenced, keyed by id. + Loads every record for one entity from moalmanac_db/dereferenced, keyed by id. Args: - entity (str): The entity's directory name under moalmanac-db/dereferenced. + entity (str): The entity's directory name under moalmanac_db/dereferenced. Returns: dict[str, dict]: The entity's records, keyed by `id`, in the same order diff --git a/tests/test_endpoints.py b/tests/test_endpoints.py index 3a75f00..5bbd5c0 100644 --- a/tests/test_endpoints.py +++ b/tests/test_endpoints.py @@ -1,6 +1,6 @@ """ Each entity endpoint's `data` equals the records in -moalmanac-db/dereferenced//*.json exactly, and every record it returns +moalmanac_db/dereferenced//*.json exactly, and every record it returns validates against schemas/dereferenced/.schema.json. This is the plan's definition of done for the migration. """ @@ -65,7 +65,7 @@ def validator(entity: str, registry: Registry) -> jsonschema.Draft202012Validato def test_every_dereferenced_directory_has_an_endpoint(): """ - Ensures every moalmanac-db/dereferenced// directory has a matching + Ensures every moalmanac_db/dereferenced// directory has a matching endpoint, so a new upstream entity is not silently left unserved. """ from tests.conftest import DEREFERENCED_ROOT diff --git a/tests/test_roundtrip.py b/tests/test_roundtrip.py index 606a820..f81c977 100644 --- a/tests/test_roundtrip.py +++ b/tests/test_roundtrip.py @@ -1,5 +1,5 @@ """ -The SQLite database mirrors moalmanac-db/schemas/referenced: rebuilding each table +The SQLite database mirrors moalmanac_db/schemas/referenced: rebuilding each table from the database gives back referenced/.json exactly (record order, list order, values, and which keys are present; dict key order is not compared). """ diff --git a/update_submodule_to_commit.sh b/update_submodule_to_commit.sh index 4d62d46..2b49f11 100644 --- a/update_submodule_to_commit.sh +++ b/update_submodule_to_commit.sh @@ -1,6 +1,6 @@ #!/bin/bash -SUBMODULE_PATH=moalmanac-db +SUBMODULE_PATH=moalmanac_db COMMIT_HASH=$1 # The Python used to regenerate docs/openapi.json; it needs this repo's requirements. PYTHON=${PYTHON:-python} diff --git a/utils/export_openapi.py b/utils/export_openapi.py index cb3ea2a..53336f3 100644 --- a/utils/export_openapi.py +++ b/utils/export_openapi.py @@ -39,15 +39,6 @@ def main() -> int: ) arguments = parser.parse_args() - # Run as `python -m utils.export_openapi`, this repository's utils/ is imported - # as `utils` and hides moalmanac-db's utils package, which the app imports. - if __package__: - print( - "Run this as `python utils/export_openapi.py`, not with `python -m`.", - file=sys.stderr, - ) - return 2 - serialized = render_schema() current = OUTPUT_PATH.read_text() if OUTPUT_PATH.exists() else None From 841c4c807bdc54ff5dbcd8a333621eb73ab2b1b5 Mon Sep 17 00:00:00 2001 From: Brendan Reardon <9423424+brendanreardon@users.noreply.github.com> Date: Fri, 16 Oct 2026 11:33:37 -0400 Subject: [PATCH 14/14] Updated local cache --- data/moalmanac.sqlite3 | Bin 6438912 -> 6508544 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/moalmanac.sqlite3 b/data/moalmanac.sqlite3 index 05446233cad3890513b234bbe01625e35a304d71..301e320b27741431be38beda79d950b24deb3d08 100644 GIT binary patch delta 422496 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 z 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

*l+M($iCiLuM4-!M$F*4qc^9^H! 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

V?%npVSPtzuV|dq}CM$>hf|397|p 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 delta 391882 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¬ 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 bZuJ)N$5S_scjMaZ;c8S`>O#vbZIAz7o%V>c