{
  "openapi": "3.1.1",
  "info": {
    "title": "Difficalcy",
    "version": "v1"
  },
  "paths": {
    "/api/calculators": {
      "get": {
        "tags": [
          "difficalcy"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/CalculatorInfo"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/osu/info": {
      "get": {
        "tags": [
          "osu"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalculatorInfo"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/osu/calculation": {
      "get": {
        "tags": [
          "osu"
        ],
        "parameters": [
          {
            "name": "beatmapId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mods",
            "in": "query",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OsuCalculation"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/osu/batch/calculation": {
      "post": {
        "tags": [
          "osu"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/OsuScore"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OsuCalculation"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/osu/beatmapdetails": {
      "get": {
        "tags": [
          "osu"
        ],
        "parameters": [
          {
            "name": "beatmapId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OsuBeatmapDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/taiko/info": {
      "get": {
        "tags": [
          "taiko"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalculatorInfo"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/taiko/calculation": {
      "get": {
        "tags": [
          "taiko"
        ],
        "parameters": [
          {
            "name": "beatmapId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mods",
            "in": "query",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaikoCalculation"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/taiko/batch/calculation": {
      "post": {
        "tags": [
          "taiko"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TaikoScore"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaikoCalculation"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/taiko/beatmapdetails": {
      "get": {
        "tags": [
          "taiko"
        ],
        "parameters": [
          {
            "name": "beatmapId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaikoBeatmapDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/catch/info": {
      "get": {
        "tags": [
          "catch"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalculatorInfo"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/catch/calculation": {
      "get": {
        "tags": [
          "catch"
        ],
        "parameters": [
          {
            "name": "beatmapId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mods",
            "in": "query",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatchCalculation"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/catch/batch/calculation": {
      "post": {
        "tags": [
          "catch"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CatchScore"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CatchCalculation"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/catch/beatmapdetails": {
      "get": {
        "tags": [
          "catch"
        ],
        "parameters": [
          {
            "name": "beatmapId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatchBeatmapDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/mania/info": {
      "get": {
        "tags": [
          "mania"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalculatorInfo"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/mania/calculation": {
      "get": {
        "tags": [
          "mania"
        ],
        "parameters": [
          {
            "name": "beatmapId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mods",
            "in": "query",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManiaCalculation"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/mania/batch/calculation": {
      "post": {
        "tags": [
          "mania"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ManiaScore"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ManiaCalculation"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculators/mania/beatmapdetails": {
      "get": {
        "tags": [
          "mania"
        ],
        "parameters": [
          {
            "name": "beatmapId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManiaBeatmapDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "CalculatorInfo": {
        "type": "object",
        "properties": {
          "rulesetName": {
            "type": [
              "null",
              "string"
            ]
          },
          "calculatorName": {
            "type": [
              "null",
              "string"
            ]
          },
          "calculatorPackage": {
            "type": [
              "null",
              "string"
            ]
          },
          "calculatorVersion": {
            "type": [
              "null",
              "string"
            ]
          },
          "calculatorUrl": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CatchBeatmapDetails": {
        "type": "object",
        "properties": {
          "fruitCount": {
            "type": "integer",
            "format": "int32"
          },
          "juiceStreamCount": {
            "type": "integer",
            "format": "int32"
          },
          "bananaShowerCount": {
            "type": "integer",
            "format": "int32"
          },
          "circleSize": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "approachRate": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "drainRate": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "artist": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "difficultyName": {
            "type": [
              "null",
              "string"
            ]
          },
          "author": {
            "type": [
              "null",
              "string"
            ]
          },
          "maxCombo": {
            "type": "integer",
            "format": "int32"
          },
          "length": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "minBPM": {
            "type": "integer",
            "format": "int32"
          },
          "maxBPM": {
            "type": "integer",
            "format": "int32"
          },
          "commonBPM": {
            "type": "integer",
            "format": "int32"
          },
          "baseVelocity": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "tickRate": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "CatchCalculation": {
        "type": "object",
        "properties": {
          "accuracy": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "combo": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "difficulty": {
            "$ref": "#/components/schemas/CatchDifficulty"
          },
          "performance": {
            "$ref": "#/components/schemas/CatchPerformance"
          }
        }
      },
      "CatchDifficulty": {
        "type": "object",
        "properties": {
          "total": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "CatchPerformance": {
        "type": "object",
        "properties": {
          "total": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "CatchScore": {
        "required": [
          "beatmapId"
        ],
        "type": "object",
        "properties": {
          "combo": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "misses": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "smallDroplets": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "largeDroplets": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "beatmapId": {
            "type": [
              "null",
              "string"
            ]
          },
          "mods": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/Mod"
            }
          }
        }
      },
      "ErrorResponse": {
        "required": [
          "error"
        ],
        "type": "object",
        "properties": {
          "error": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ManiaBeatmapDetails": {
        "type": "object",
        "properties": {
          "noteCount": {
            "type": "integer",
            "format": "int32"
          },
          "holdNoteCount": {
            "type": "integer",
            "format": "int32"
          },
          "keyCount": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "accuracy": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "drainRate": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "artist": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "difficultyName": {
            "type": [
              "null",
              "string"
            ]
          },
          "author": {
            "type": [
              "null",
              "string"
            ]
          },
          "maxCombo": {
            "type": "integer",
            "format": "int32"
          },
          "length": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "minBPM": {
            "type": "integer",
            "format": "int32"
          },
          "maxBPM": {
            "type": "integer",
            "format": "int32"
          },
          "commonBPM": {
            "type": "integer",
            "format": "int32"
          },
          "baseVelocity": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "tickRate": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "ManiaCalculation": {
        "type": "object",
        "properties": {
          "accuracy": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "difficulty": {
            "$ref": "#/components/schemas/ManiaDifficulty"
          },
          "performance": {
            "$ref": "#/components/schemas/ManiaPerformance"
          }
        }
      },
      "ManiaDifficulty": {
        "type": "object",
        "properties": {
          "total": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "ManiaPerformance": {
        "type": "object",
        "properties": {
          "difficulty": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "total": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "ManiaScore": {
        "required": [
          "beatmapId"
        ],
        "type": "object",
        "properties": {
          "misses": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "mehs": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "oks": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "goods": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "greats": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "beatmapId": {
            "type": [
              "null",
              "string"
            ]
          },
          "mods": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/Mod"
            }
          }
        }
      },
      "Mod": {
        "required": [
          "acronym"
        ],
        "type": "object",
        "properties": {
          "acronym": {
            "type": [
              "null",
              "string"
            ]
          },
          "settings": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "OsuBeatmapDetails": {
        "type": "object",
        "properties": {
          "circleCount": {
            "type": "integer",
            "format": "int32"
          },
          "sliderCount": {
            "type": "integer",
            "format": "int32"
          },
          "spinnerCount": {
            "type": "integer",
            "format": "int32"
          },
          "sliderTickCount": {
            "type": "integer",
            "format": "int32"
          },
          "circleSize": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "approachRate": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "accuracy": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "drainRate": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "artist": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "difficultyName": {
            "type": [
              "null",
              "string"
            ]
          },
          "author": {
            "type": [
              "null",
              "string"
            ]
          },
          "maxCombo": {
            "type": "integer",
            "format": "int32"
          },
          "length": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "minBPM": {
            "type": "integer",
            "format": "int32"
          },
          "maxBPM": {
            "type": "integer",
            "format": "int32"
          },
          "commonBPM": {
            "type": "integer",
            "format": "int32"
          },
          "baseVelocity": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "tickRate": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "OsuCalculation": {
        "type": "object",
        "properties": {
          "accuracy": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "combo": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "difficulty": {
            "$ref": "#/components/schemas/OsuDifficulty"
          },
          "performance": {
            "$ref": "#/components/schemas/OsuPerformance"
          }
        }
      },
      "OsuDifficulty": {
        "type": "object",
        "properties": {
          "aim": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "speed": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "flashlight": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "reading": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "total": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "OsuPerformance": {
        "type": "object",
        "properties": {
          "aim": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "speed": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "accuracy": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "flashlight": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "reading": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "total": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "OsuScore": {
        "required": [
          "beatmapId"
        ],
        "type": "object",
        "properties": {
          "combo": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "misses": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "mehs": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "oks": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "sliderTails": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "sliderTicks": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "beatmapId": {
            "type": [
              "null",
              "string"
            ]
          },
          "mods": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/Mod"
            }
          }
        }
      },
      "TaikoBeatmapDetails": {
        "type": "object",
        "properties": {
          "hitCount": {
            "type": "integer",
            "format": "int32"
          },
          "drumRollCount": {
            "type": "integer",
            "format": "int32"
          },
          "swellCount": {
            "type": "integer",
            "format": "int32"
          },
          "accuracy": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "drainRate": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "artist": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "difficultyName": {
            "type": [
              "null",
              "string"
            ]
          },
          "author": {
            "type": [
              "null",
              "string"
            ]
          },
          "maxCombo": {
            "type": "integer",
            "format": "int32"
          },
          "length": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "minBPM": {
            "type": "integer",
            "format": "int32"
          },
          "maxBPM": {
            "type": "integer",
            "format": "int32"
          },
          "commonBPM": {
            "type": "integer",
            "format": "int32"
          },
          "baseVelocity": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "tickRate": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "TaikoCalculation": {
        "type": "object",
        "properties": {
          "accuracy": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "combo": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "difficulty": {
            "$ref": "#/components/schemas/TaikoDifficulty"
          },
          "performance": {
            "$ref": "#/components/schemas/TaikoPerformance"
          }
        }
      },
      "TaikoDifficulty": {
        "type": "object",
        "properties": {
          "stamina": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "rhythm": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "colour": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "total": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "TaikoPerformance": {
        "type": "object",
        "properties": {
          "difficulty": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "accuracy": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          },
          "total": {
            "type": "object",
            "anyOf": [
              {
                "type": "number"
              },
              {
                "enum": [
                  "NaN",
                  "Infinity",
                  "-Infinity"
                ]
              }
            ],
            "format": "double"
          }
        }
      },
      "TaikoScore": {
        "required": [
          "beatmapId"
        ],
        "type": "object",
        "properties": {
          "combo": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "misses": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "oks": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "beatmapId": {
            "type": [
              "null",
              "string"
            ]
          },
          "mods": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/Mod"
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "difficalcy"
    },
    {
      "name": "osu"
    },
    {
      "name": "taiko"
    },
    {
      "name": "catch"
    },
    {
      "name": "mania"
    }
  ]
}