{
  "openapi": "3.0.3",
  "info": {
    "title": "net.info API",
    "version": "3.6.6",
    "description": "\nEnable location-based experiences, security and analytics with city-level ip geolocation information, \nincluding latitude, longitude, time zone, postal code, and more.\n\nFree IP geolocation. No API key is required. Legacy API-key headers are ignored.\n\n[Sources and Licenses](/docs/sources/) explains the data providers, attribution requirements, and our work on geo-db.org.\n\nTo learn more about this service visit [net.info](https://net.info)\n"
  },
  "components": {
    "schemas": {}
  },
  "paths": {
    "/ip": {
      "get": {
        "summary": "get your ip info",
        "tags": [
          "ip address"
        ],
        "responses": {
          "200": {
            "description": "Successfully got user IP info",
            "headers": {
              "X-Cache": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "HIT",
                    "MISS"
                  ]
                },
                "description": "The cache status of the response."
              },
              "X-RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                },
                "description": "The size of the caller's budget."
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "What remains of the caller's budget."
              },
              "X-RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds until the caller's budget is restored."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Successfully got user IP info",
                  "properties": {
                    "ip": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "private",
                        "public"
                      ],
                      "description": "`private` for private and other special-purpose addresses, which have no public location; otherwise `public`."
                    },
                    "location": {
                      "type": "object",
                      "properties": {
                        "country": {
                          "type": "string"
                        },
                        "region": {
                          "type": "string"
                        },
                        "city": {
                          "type": "string"
                        },
                        "lat": {
                          "type": "number"
                        },
                        "lng": {
                          "type": "number"
                        },
                        "postalCode": {
                          "type": "string"
                        },
                        "timezone": {
                          "type": "string"
                        },
                        "geonameId": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "country",
                        "region",
                        "city",
                        "lat",
                        "lng",
                        "postalCode",
                        "timezone",
                        "geonameId"
                      ]
                    }
                  },
                  "required": [
                    "ip",
                    "type"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Bad Request",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        400
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Bad Request"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 400,
                    "error": "Bad Request",
                    "message": "Invalid IP Address"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Not Found",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        404
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Not Found"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 404,
                    "error": "Not Found",
                    "message": "IP Address not found: ::1"
                  },
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests: the caller's budget cannot afford it",
            "headers": {
              "X-RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                },
                "description": "The size of the caller's budget."
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "What remains of the caller's budget."
              },
              "X-RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds until the caller's budget is restored."
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait before retrying."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Too Many Requests: the caller's budget cannot afford it",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        429
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Too Many Requests"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 429,
                    "error": "Too Many Requests",
                    "message": "Lookup quota exceeded: the request costs 3; retry after 2s"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Internal Server Error",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        500
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Internal Server Error"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 500,
                    "error": "Internal Server Error",
                    "message": "Unable to lookup Ip: ::1"
                  },
                  "type": "object"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable: the lookup quota cannot be checked",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Service Unavailable: the lookup quota cannot be checked",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        503
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Service Unavailable"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 503,
                    "error": "Service Unavailable",
                    "message": "The lookup quota is unavailable"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "get bulk ip info",
        "tags": [
          "ip address"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "The IP address."
                },
                "uniqueItems": true,
                "minItems": 1,
                "maxItems": 100
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully get bulk IP info",
            "headers": {
              "X-RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                },
                "description": "The size of the caller's budget."
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "What remains of the caller's budget."
              },
              "X-RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds until the caller's budget is restored."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Successfully get bulk IP info",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "object",
                            "properties": {
                              "ip": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "private",
                                  "public"
                                ],
                                "description": "`private` for private and other special-purpose addresses, which have no public location; otherwise `public`."
                              },
                              "location": {
                                "type": "object",
                                "properties": {
                                  "country": {
                                    "type": "string"
                                  },
                                  "region": {
                                    "type": "string"
                                  },
                                  "city": {
                                    "type": "string"
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "postalCode": {
                                    "type": "string"
                                  },
                                  "timezone": {
                                    "type": "string"
                                  },
                                  "geonameId": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "country",
                                  "region",
                                  "city",
                                  "lat",
                                  "lng",
                                  "postalCode",
                                  "timezone",
                                  "geonameId"
                                ]
                              }
                            },
                            "required": [
                              "ip",
                              "type"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "ip": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "error"
                                ]
                              },
                              "errorMessage": {
                                "type": "string",
                                "description": "Error message"
                              }
                            },
                            "required": [
                              "ip",
                              "type",
                              "errorMessage"
                            ]
                          }
                        ]
                      }
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Bad Request",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        400
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Bad Request"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 400,
                    "error": "Bad Request",
                    "message": "Invalid IP Address"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests: the caller's budget cannot afford it",
            "headers": {
              "X-RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                },
                "description": "The size of the caller's budget."
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "What remains of the caller's budget."
              },
              "X-RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds until the caller's budget is restored."
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait before retrying."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Too Many Requests: the caller's budget cannot afford it",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        429
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Too Many Requests"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 429,
                    "error": "Too Many Requests",
                    "message": "Lookup quota exceeded: the request costs 3; retry after 2s"
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable: the lookup quota cannot be checked",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Service Unavailable: the lookup quota cannot be checked",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        503
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Service Unavailable"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 503,
                    "error": "Service Unavailable",
                    "message": "The lookup quota is unavailable"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ip/{ipAddress}": {
      "get": {
        "summary": "get ip info",
        "tags": [
          "ip address"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string"
            },
            "in": "path",
            "name": "ipAddress",
            "required": true,
            "description": "The IP address."
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully got IP info",
            "headers": {
              "X-Cache": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "HIT",
                    "MISS"
                  ]
                },
                "description": "The cache status of the response."
              },
              "X-RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                },
                "description": "The size of the caller's budget."
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "What remains of the caller's budget."
              },
              "X-RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds until the caller's budget is restored."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Successfully got IP info",
                  "properties": {
                    "ip": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "private",
                        "public"
                      ],
                      "description": "`private` for private and other special-purpose addresses, which have no public location; otherwise `public`."
                    },
                    "location": {
                      "type": "object",
                      "properties": {
                        "country": {
                          "type": "string"
                        },
                        "region": {
                          "type": "string"
                        },
                        "city": {
                          "type": "string"
                        },
                        "lat": {
                          "type": "number"
                        },
                        "lng": {
                          "type": "number"
                        },
                        "postalCode": {
                          "type": "string"
                        },
                        "timezone": {
                          "type": "string"
                        },
                        "geonameId": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "country",
                        "region",
                        "city",
                        "lat",
                        "lng",
                        "postalCode",
                        "timezone",
                        "geonameId"
                      ]
                    }
                  },
                  "required": [
                    "ip",
                    "type"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Bad Request",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        400
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Bad Request"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 400,
                    "error": "Bad Request",
                    "message": "Invalid IP Address"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Not Found",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        404
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Not Found"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 404,
                    "error": "Not Found",
                    "message": "IP Address not found: ::1"
                  },
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests: the caller's budget cannot afford it",
            "headers": {
              "X-RateLimit-Limit": {
                "schema": {
                  "type": "integer"
                },
                "description": "The size of the caller's budget."
              },
              "X-RateLimit-Remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "What remains of the caller's budget."
              },
              "X-RateLimit-Reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds until the caller's budget is restored."
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait before retrying."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Too Many Requests: the caller's budget cannot afford it",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        429
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Too Many Requests"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 429,
                    "error": "Too Many Requests",
                    "message": "Lookup quota exceeded: the request costs 3; retry after 2s"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Internal Server Error",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        500
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Internal Server Error"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 500,
                    "error": "Internal Server Error",
                    "message": "Unable to lookup Ip: ::1"
                  },
                  "type": "object"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable: the lookup quota cannot be checked",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Service Unavailable: the lookup quota cannot be checked",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "enum": [
                        503
                      ]
                    },
                    "error": {
                      "type": "string",
                      "enum": [
                        "Service Unavailable"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "description": "The error message."
                    }
                  },
                  "example": {
                    "statusCode": 503,
                    "error": "Service Unavailable",
                    "message": "The lookup quota is unavailable"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/speedtest/ping": {
      "get": {
        "summary": "speed test latency probe",
        "tags": [
          "speed test"
        ],
        "description": "Lightweight endpoint for measuring latency and jitter, at rest and while a transfer loads the link. A failed probe is a failed HTTP request, not a lost packet.",
        "security": [],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "t": {
                      "type": "number",
                      "description": "Server epoch time in milliseconds."
                    }
                  },
                  "required": [
                    "t"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/speedtest/download": {
      "get": {
        "summary": "speed test download payload",
        "tags": [
          "speed test"
        ],
        "description": "Streams incompressible random data for measuring download throughput.",
        "parameters": [
          {
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 104857600
            },
            "in": "query",
            "name": "bytes",
            "required": false,
            "description": "Number of bytes to stream."
          }
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Default Response"
          }
        }
      }
    },
    "/speedtest/upload": {
      "post": {
        "summary": "speed test upload sink",
        "tags": [
          "speed test"
        ],
        "description": "Accepts and discards an octet-stream body, returning the number of bytes received.",
        "security": [],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "bytes": {
                      "type": "number",
                      "description": "Number of bytes received."
                    }
                  },
                  "required": [
                    "bytes"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/speedtest/whoami": {
      "get": {
        "summary": "speed test connection info",
        "tags": [
          "speed test"
        ],
        "description": "Returns the caller's own IP geolocation and ISP/ASN for the speed test UI.",
        "security": [],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ip": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "private",
                        "public"
                      ]
                    },
                    "location": {
                      "type": "object",
                      "properties": {
                        "country": {
                          "type": "string"
                        },
                        "region": {
                          "type": "string"
                        },
                        "city": {
                          "type": "string"
                        },
                        "lat": {
                          "type": "number"
                        },
                        "lng": {
                          "type": "number"
                        },
                        "postalCode": {
                          "type": "string"
                        },
                        "timezone": {
                          "type": "string"
                        }
                      }
                    },
                    "dataVersion": {
                      "type": "string"
                    },
                    "confirmations": {
                      "type": "object",
                      "properties": {
                        "retentionDays": {
                          "type": "integer"
                        }
                      }
                    },
                    "isp": {
                      "type": "object",
                      "properties": {
                        "asn": {
                          "type": "number"
                        },
                        "asnOrg": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "required": [
                    "ip",
                    "type"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/speedtest/location-suggestion": {
      "post": {
        "summary": "submit a location correction",
        "tags": [
          "speed test"
        ],
        "description": "Records a user-suggested correction to their detected location.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "detected",
                  "suggested"
                ],
                "properties": {
                  "detected": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "country": {
                        "type": "string"
                      },
                      "region": {
                        "type": "string"
                      },
                      "city": {
                        "type": "string"
                      },
                      "lat": {
                        "type": "number"
                      },
                      "lng": {
                        "type": "number"
                      },
                      "postalCode": {
                        "type": "string"
                      }
                    }
                  },
                  "suggested": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "country": {
                        "type": "string"
                      },
                      "region": {
                        "type": "string"
                      },
                      "city": {
                        "type": "string"
                      },
                      "lat": {
                        "type": "number"
                      },
                      "lng": {
                        "type": "number"
                      },
                      "postalCode": {
                        "type": "string"
                      }
                    }
                  },
                  "browserLocation": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "lat": {
                        "type": "number",
                        "minimum": -90,
                        "maximum": 90
                      },
                      "lng": {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180
                      },
                      "accuracy": {
                        "type": "number",
                        "minimum": 0
                      }
                    },
                    "required": [
                      "lat",
                      "lng"
                    ]
                  }
                }
              }
            }
          }
        },
        "security": [],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/speedtest/location-confirmation": {
      "post": {
        "summary": "confirm the detected location",
        "tags": [
          "speed test"
        ],
        "description": "Records that the location detected for the caller's address is right. The service detects the location again and records it with the version of the data it came from, keeping the record for the number of days whoami reports. If that location or data version no longer matches the one confirmed, nothing is recorded and the answer is 409. While confirmations are not recorded, the answer is 404.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "id",
                  "dataVersion",
                  "purposeVersion",
                  "detected"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
                  },
                  "dataVersion": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "purposeVersion": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9._-]{1,64}$"
                  },
                  "detected": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "country",
                      "region",
                      "city"
                    ],
                    "properties": {
                      "country": {
                        "type": "string"
                      },
                      "region": {
                        "type": "string"
                      },
                      "city": {
                        "type": "string"
                      }
                    }
                  },
                  "browserLocation": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "lat": {
                        "type": "number",
                        "minimum": -90,
                        "maximum": 90
                      },
                      "lng": {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180
                      },
                      "accuracy": {
                        "type": "number",
                        "minimum": 0
                      }
                    },
                    "required": [
                      "lat",
                      "lng"
                    ]
                  }
                }
              }
            }
          }
        },
        "security": [],
        "responses": {
          "200": {
            "description": "Default Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "status"
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "https://net.info",
      "description": "Public API"
    }
  ]
}