{
  "openapi": "3.0.0",
  "info": {
    "title": "AI4M API",
    "version": "1",
    "description": "Estimated and forecast malaria risk for every state and LGA in Nigeria. Documentation: https://docs.ai4mproject.com"
  },
  "servers": [
    {
      "url": "https://api.ai4mproject.com"
    }
  ],
  "security": [
    {
      "bearer": []
    }
  ],
  "paths": {
    "/v1/periods": {
      "get": {
        "operationId": "periods",
        "summary": "periods",
        "tags": [
          "v1"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    },
    "/v1/risk/states": {
      "get": {
        "operationId": "risk-states",
        "summary": "risk states",
        "tags": [
          "v1"
        ],
        "parameters": [
          {
            "name": "period",
            "required": false,
            "in": "query",
            "schema": {
              "example": "2026-07",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    },
    "/v1/risk/lgas": {
      "get": {
        "operationId": "risk-lgas",
        "summary": "risk lgas",
        "tags": [
          "v1"
        ],
        "parameters": [
          {
            "name": "state",
            "required": true,
            "in": "query",
            "schema": {
              "example": "KN",
              "type": "string"
            }
          },
          {
            "name": "period",
            "required": false,
            "in": "query",
            "schema": {
              "example": "2026-07",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    },
    "/v1/forecasts/states": {
      "get": {
        "operationId": "forecasts-states",
        "summary": "forecasts states",
        "tags": [
          "v1"
        ],
        "parameters": [
          {
            "name": "months",
            "required": false,
            "in": "query",
            "schema": {
              "example": 3,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    },
    "/v1/forecasts/lgas": {
      "get": {
        "operationId": "forecasts-lgas",
        "summary": "forecasts lgas",
        "tags": [
          "v1"
        ],
        "parameters": [
          {
            "name": "state",
            "required": true,
            "in": "query",
            "schema": {
              "example": "KN",
              "type": "string"
            }
          },
          {
            "name": "months",
            "required": false,
            "in": "query",
            "schema": {
              "example": 3,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    },
    "/v1/boundaries/states": {
      "get": {
        "operationId": "boundaries-states",
        "summary": "boundaries states",
        "tags": [
          "v1"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    },
    "/v1/boundaries/lgas": {
      "get": {
        "operationId": "boundaries-lgas",
        "summary": "boundaries lgas",
        "tags": [
          "v1"
        ],
        "parameters": [
          {
            "name": "state",
            "required": true,
            "in": "query",
            "schema": {
              "example": "KN",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    },
    "/v1/context/states": {
      "get": {
        "operationId": "context-states",
        "summary": "context states",
        "tags": [
          "v1"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    },
    "/v1/context/lgas": {
      "get": {
        "operationId": "context-lgas",
        "summary": "context lgas",
        "tags": [
          "v1"
        ],
        "parameters": [
          {
            "name": "state",
            "required": true,
            "in": "query",
            "schema": {
              "example": "KN",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    },
    "/v1/transmission/states": {
      "get": {
        "operationId": "transmission-states",
        "summary": "transmission states",
        "tags": [
          "v1"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    },
    "/v1/transmission/lgas": {
      "get": {
        "operationId": "transmission-lgas",
        "summary": "transmission lgas",
        "tags": [
          "v1"
        ],
        "parameters": [
          {
            "name": "state",
            "required": true,
            "in": "query",
            "schema": {
              "example": "KN",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    },
    "/v1/transmission/model": {
      "get": {
        "operationId": "transmission-model",
        "summary": "transmission model",
        "tags": [
          "v1"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "The key is missing, wrong, expired or revoked"
          },
          "403": {
            "description": "The key does not include the scope"
          },
          "429": {
            "description": "A limit was reached"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "Your API key"
      }
    }
  }
}
