{
  "x-generator": "NSwag v14.7.1.0 (NJsonSchema v11.6.1.0 (Newtonsoft.Json v13.0.0.0))",
  "openapi": "3.0.0",
  "info": {
    "title": "My Title",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.poolmathapp.com"
    }
  ],
  "paths": {
    "/auth": {
      "post": {
        "tags": [
          "Auth"
        ],
        "operationId": "Auth_Post",
        "requestBody": {
          "x-name": "body",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthRequestBody"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/auth/token": {
      "post": {
        "tags": [
          "Auth"
        ],
        "operationId": "Auth_Post2",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "userId": {
                    "type": "string",
                    "nullable": true
                  },
                  "authToken": {
                    "type": "string",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/backup/export": {
      "get": {
        "tags": [
          "Backup"
        ],
        "operationId": "Backup_Export",
        "parameters": [
          {
            "name": "updatedSince",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BackupV2"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/backup/export/logs": {
      "get": {
        "tags": [
          "Backup"
        ],
        "operationId": "Backup_ExportLogs",
        "parameters": [
          {
            "name": "poolId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "updatedSince",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Log"
                  }
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/backup/import/logs": {
      "post": {
        "tags": [
          "Backup"
        ],
        "operationId": "Backup_ImportLogs",
        "requestBody": {
          "x-name": "logs",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Log"
                }
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": ""
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/backup/import": {
      "post": {
        "tags": [
          "Backup"
        ],
        "operationId": "Backup_ImportJson",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BackupV2"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/backup/import/csv": {
      "post": {
        "tags": [
          "Backup"
        ],
        "operationId": "Backup_ImportCsv",
        "requestBody": {
          "x-name": "data",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": ""
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/chemlogs": {
      "post": {
        "tags": [
          "ChemicalLogs"
        ],
        "operationId": "ChemicalLogs_Post",
        "requestBody": {
          "x-name": "log",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChemicalLog"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChemicalLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/chemlogs/{id}": {
      "delete": {
        "tags": [
          "ChemicalLogs"
        ],
        "operationId": "ChemicalLogs_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChemicalLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/costlogs": {
      "post": {
        "tags": [
          "CostLogs"
        ],
        "operationId": "CostLogs_Post",
        "requestBody": {
          "x-name": "log",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CostLog"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/costlogs/{id}": {
      "delete": {
        "tags": [
          "CostLogs"
        ],
        "operationId": "CostLogs_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CostLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/dataprivacy/requestdelete": {
      "post": {
        "tags": [
          "DataPrivacy"
        ],
        "operationId": "DataPrivacy_RequestDelete",
        "parameters": [
          {
            "name": "emailNotify",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountDeleteRequestResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/dataprivacy/export": {
      "get": {
        "tags": [
          "DataPrivacy"
        ],
        "operationId": "DataPrivacy_Export",
        "responses": {
          "200": {
            "description": ""
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/datatypes/swgtypes": {
      "get": {
        "tags": [
          "DataTypes"
        ],
        "operationId": "DataTypes_GetSwgTypesGET",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SwgModel"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "DataTypes"
        ],
        "operationId": "DataTypes_GetSwgTypesPOST",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SwgModel"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/datatypes/costtypes": {
      "get": {
        "tags": [
          "DataTypes"
        ],
        "operationId": "DataTypes_GetCostTypesGET",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CostType"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "DataTypes"
        ],
        "operationId": "DataTypes_GetCostTypesPOST",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CostType"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/datatypes": {
      "get": {
        "tags": [
          "DataTypes"
        ],
        "operationId": "DataTypes_GetTsvData",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "dataType",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/deletes/list": {
      "post": {
        "tags": [
          "Deletes"
        ],
        "operationId": "Deletes_ListPOST",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "continuationToken": {
                    "type": "string",
                    "nullable": true
                  },
                  "updatedSince": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeletedDocument"
                  }
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      },
      "get": {
        "tags": [
          "Deletes"
        ],
        "operationId": "Deletes_ListGET",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "continuationToken": {
                    "type": "string",
                    "nullable": true
                  },
                  "updatedSince": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeletedDocument"
                  }
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/deletes": {
      "get": {
        "tags": [
          "Deletes"
        ],
        "operationId": "Deletes_Get",
        "parameters": [
          {
            "name": "continuationToken",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "updatedSince",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeletedDocument"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/version": {
      "get": {
        "tags": [
          "Version"
        ],
        "operationId": "Version_Get",
        "parameters": [
          {
            "name": "display",
            "in": "query",
            "description": "Include display version.",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "x-position": 1
          },
          {
            "name": "format",
            "in": "query",
            "description": "Empty string for plain text, or 'json'.",
            "schema": {
              "type": "string",
              "default": ""
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/hello": {
      "get": {
        "tags": [
          "Hello"
        ],
        "operationId": "Hello_Get",
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/ehlo/nested": {
      "get": {
        "tags": [
          "Ehlo"
        ],
        "operationId": "Ehlo_Nested",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/maintenancelogs": {
      "post": {
        "tags": [
          "MaintenanceLogs"
        ],
        "operationId": "MaintenanceLogs_Post",
        "requestBody": {
          "x-name": "log",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaintenanceLog"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/maintenancelogs/{id}": {
      "delete": {
        "tags": [
          "MaintenanceLogs"
        ],
        "operationId": "MaintenanceLogs_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaintenanceLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/notelogs": {
      "post": {
        "tags": [
          "NoteLogs"
        ],
        "operationId": "NoteLogs_Post",
        "requestBody": {
          "x-name": "log",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteLog"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoteLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/notelogs/{id}": {
      "delete": {
        "tags": [
          "NoteLogs"
        ],
        "operationId": "NoteLogs_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoteLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/oauth": {
      "get": {
        "tags": [
          "OAuth"
        ],
        "operationId": "OAuth_IndexGET",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "redirect_uri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 3
          },
          {
            "name": "response_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 4
          },
          {
            "name": "scheme",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "OAuth"
        ],
        "operationId": "OAuth_IndexPOST",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "password",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "client_id",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 3
          },
          {
            "name": "redirect_uri",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 4
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 5
          },
          {
            "name": "response_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 6
          },
          {
            "name": "scheme",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/pools/list": {
      "post": {
        "tags": [
          "Pools"
        ],
        "operationId": "Pools_FetchPostPOST",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "continuationToken": {
                    "type": "string",
                    "nullable": true
                  },
                  "updatedSince": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PoolsResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "304": {
            "description": ""
          }
        }
      },
      "get": {
        "tags": [
          "Pools"
        ],
        "operationId": "Pools_FetchPostGET",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "continuationToken": {
                    "type": "string",
                    "nullable": true
                  },
                  "updatedSince": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PoolsResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "304": {
            "description": ""
          }
        }
      }
    },
    "/pools": {
      "get": {
        "tags": [
          "Pools"
        ],
        "operationId": "Pools_FetchGet",
        "parameters": [
          {
            "name": "continuationToken",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "updatedSince",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 2
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PoolsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Pools"
        ],
        "operationId": "Pools_Post",
        "requestBody": {
          "x-name": "pool",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Pool"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pool"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/pools/{id}": {
      "delete": {
        "tags": [
          "Pools"
        ],
        "operationId": "Pools_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pool"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "304": {
            "description": ""
          }
        }
      }
    },
    "/pools/overview": {
      "post": {
        "tags": [
          "Pools"
        ],
        "operationId": "Pools_RefreshOverview",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "poolId": {
                    "type": "string",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pool"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/pumpschedules": {
      "post": {
        "tags": [
          "PumpScheduleChangeLogs"
        ],
        "operationId": "PumpScheduleChangeLogs_Post",
        "requestBody": {
          "x-name": "log",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PumpScheduleChangeLog"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PumpScheduleLogResponse"
                }
              }
            }
          }
        }
      }
    },
    "/pumpschedules/{id}": {
      "delete": {
        "tags": [
          "PumpScheduleChangeLogs"
        ],
        "operationId": "PumpScheduleChangeLogs_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PumpScheduleLogResponse"
                }
              }
            }
          }
        }
      }
    },
    "/subscription": {
      "post": {
        "tags": [
          "Subscription"
        ],
        "operationId": "Subscription_Update",
        "requestBody": {
          "x-name": "requestBody",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionRequestBody"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/subscription/log": {
      "post": {
        "tags": [
          "Subscription"
        ],
        "operationId": "Subscription_Log",
        "requestBody": {
          "x-name": "purchaseInfos",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PurchaseInfo"
                }
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/subscription/verify/apple": {
      "post": {
        "tags": [
          "Subscription"
        ],
        "operationId": "Subscription_VerifyApple",
        "requestBody": {
          "x-name": "receipt",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppleReceipt"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/subscription/verify/google": {
      "post": {
        "tags": [
          "Subscription"
        ],
        "operationId": "Subscription_VerifyGoogle",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "subscriptionId": {
                    "type": "string",
                    "nullable": true
                  },
                  "token": {
                    "type": "string",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/subscription/notify/apple": {
      "post": {
        "tags": [
          "Subscription"
        ],
        "operationId": "Subscription_AppleServerToServer",
        "requestBody": {
          "x-name": "responseBodyV2",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResponseBodyV2"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/swimlogs": {
      "post": {
        "tags": [
          "SwimLogs"
        ],
        "operationId": "SwimLogs_Post",
        "requestBody": {
          "x-name": "log",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SwimLog"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SwimLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/swimlogs/{id}": {
      "delete": {
        "tags": [
          "SwimLogs"
        ],
        "operationId": "SwimLogs_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SwimLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/testlogs": {
      "post": {
        "tags": [
          "TestLogs"
        ],
        "operationId": "TestLogs_Post",
        "requestBody": {
          "x-name": "log",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestLog"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/testlogs/{id}": {
      "delete": {
        "tags": [
          "TestLogs"
        ],
        "operationId": "TestLogs_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/timeline/list": {
      "post": {
        "tags": [
          "Timeline"
        ],
        "operationId": "Timeline_List",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "poolId": {
                    "type": "string",
                    "nullable": true
                  },
                  "continuationToken": {
                    "type": "string",
                    "nullable": true
                  },
                  "from": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  },
                  "to": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  },
                  "updatedSince": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimelineResponse"
                }
              }
            }
          }
        }
      }
    },
    "/timeline": {
      "get": {
        "tags": [
          "Timeline"
        ],
        "operationId": "Timeline_Get",
        "parameters": [
          {
            "name": "poolId",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 1
          },
          {
            "name": "continuationToken",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "updatedSince",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            },
            "x-position": 5
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimelineResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "304": {
            "description": ""
          }
        }
      }
    },
    "/userprefs/defaultpool": {
      "post": {
        "tags": [
          "UserPrefs"
        ],
        "operationId": "UserPrefs_DefaultPoolPOST",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "poolId": {
                    "type": "string",
                    "nullable": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": ""
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      },
      "get": {
        "tags": [
          "UserPrefs"
        ],
        "operationId": "UserPrefs_DefaultPoolGET",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/userprefs/refresh": {
      "get": {
        "tags": [
          "UserPrefs"
        ],
        "operationId": "UserPrefs_RefreshUser",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          }
        }
      }
    },
    "/weather/locations": {
      "get": {
        "tags": [
          "Weather"
        ],
        "operationId": "Weather_GetLocations",
        "parameters": [
          {
            "name": "zip",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "lon",
            "in": "query",
            "schema": {
              "type": "number",
              "format": "double",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "lat",
            "in": "query",
            "schema": {
              "type": "number",
              "format": "double",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WeatherLocation"
                  }
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "502": {
            "description": ""
          }
        }
      }
    },
    "/weather/current": {
      "get": {
        "tags": [
          "Weather"
        ],
        "operationId": "Weather_GetWeather",
        "parameters": [
          {
            "name": "locationId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherLog"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "502": {
            "description": ""
          }
        }
      }
    },
    "/weatherlogs": {
      "post": {
        "tags": [
          "WeatherLogs"
        ],
        "operationId": "WeatherLogs_Post",
        "requestBody": {
          "x-name": "log",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WeatherLog"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/weatherlogs/{id}": {
      "delete": {
        "tags": [
          "WeatherLogs"
        ],
        "operationId": "WeatherLogs_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WeatherLogResponse"
                }
              }
            }
          },
          "400": {
            "description": ""
          },
          "401": {
            "description": ""
          },
          "403": {
            "description": ""
          }
        }
      }
    },
    "/iot": {
      "get": {
        "tags": [
          "IoT"
        ],
        "operationId": "IoT_Updates",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/mobileauth/{scheme}": {
      "get": {
        "tags": [
          "Auth"
        ],
        "operationId": "Auth_Get",
        "parameters": [
          {
            "name": "scheme",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "deviceName",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "clientType",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        }
      }
    },
    "/mobileauth": {
      "post": {
        "tags": [
          "Auth"
        ],
        "operationId": "Auth_Post22",
        "requestBody": {
          "x-name": "userTokenEx",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserTokenExchange"
              }
            }
          },
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          }
        }
      }
    },
    "/revenuecat/webhook": {
      "post": {
        "tags": [
          "RevenueCatWebHook"
        ],
        "operationId": "RevenueCatWebHook_WebHook",
        "requestBody": {
          "x-name": "data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RevenueCatWebHookBody"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/stripe/subscribe": {
      "get": {
        "tags": [
          "Stripe"
        ],
        "operationId": "Stripe_Subscribe",
        "parameters": [
          {
            "name": "data",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/stripe/session": {
      "get": {
        "tags": [
          "Stripe"
        ],
        "operationId": "Stripe_Session",
        "parameters": [
          {
            "name": "sessionId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/stripe/manage": {
      "post": {
        "tags": [
          "Stripe"
        ],
        "operationId": "Stripe_Manage",
        "parameters": [
          {
            "name": "sessionId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/stripe/webhook": {
      "post": {
        "tags": [
          "Stripe"
        ],
        "operationId": "Stripe_Webhook",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/tests/temptoken": {
      "post": {
        "tags": [
          "Tests"
        ],
        "operationId": "Tests_TestTempToken",
        "requestBody": {
          "x-name": "requestBody",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestTempTokenRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/tests/deletecode": {
      "post": {
        "tags": [
          "Tests"
        ],
        "operationId": "Tests_TestDeleteCode",
        "requestBody": {
          "x-name": "requestBody",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestDeleteCodeRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/tests/reset": {
      "post": {
        "tags": [
          "Tests"
        ],
        "operationId": "Tests_ResetAccount",
        "requestBody": {
          "x-name": "requestBody",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestResetRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/tests/seed": {
      "post": {
        "tags": [
          "Tests"
        ],
        "operationId": "Tests_SeedAccount",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/tests/subscriptionexpiry": {
      "post": {
        "tags": [
          "Tests"
        ],
        "operationId": "Tests_TestSubscriptionExpiry",
        "requestBody": {
          "x-name": "requestBody",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestSubscriptionExpiryRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/share/pool": {
      "get": {
        "tags": [
          "UserShare"
        ],
        "operationId": "UserShare_Pool",
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "poolId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "x-position": 2
          },
          {
            "name": "recentLogs",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserShareModel"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/share/{shareCode}.{format}": {
      "get": {
        "tags": [
          "UserShare"
        ],
        "operationId": "UserShare_Index",
        "parameters": [
          {
            "name": "shareCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          },
          {
            "name": "format",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 2
          },
          {
            "name": "recentLogs",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserShareModel"
                }
              }
            }
          }
        }
      }
    },
    "/share/img/{shareCode}": {
      "get": {
        "tags": [
          "UserShare"
        ],
        "operationId": "UserShare_GetBadge",
        "parameters": [
          {
            "name": "shareCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/share/svg/{shareCode}": {
      "get": {
        "tags": [
          "UserShare"
        ],
        "operationId": "UserShare_GetBadgeSvg",
        "parameters": [
          {
            "name": "shareCode",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "x-position": 1
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/share/migrate": {
      "get": {
        "tags": [
          "UserShare"
        ],
        "operationId": "UserShare_Migrate",
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "User": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseDocument"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "type": {
                "type": "string"
              },
              "name": {
                "type": "string",
                "nullable": true
              },
              "email": {
                "type": "string",
                "nullable": true
              },
              "authProvider": {
                "type": "string",
                "nullable": true
              },
              "authProviderId": {
                "type": "string",
                "nullable": true
              },
              "subscriptionExpiryDate": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "devices": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/UserDevice"
                }
              },
              "authorizations": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/UserAuth"
                }
              },
              "defPoolId": {
                "type": "string",
                "nullable": true
              },
              "hasAutomation": {
                "type": "boolean",
                "nullable": true
              },
              "tempToken": {
                "type": "string",
                "nullable": true
              },
              "purchases": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PurchaseInfo"
                }
              },
              "stripePurchases": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StripeReceipt"
                }
              },
              "accountDeleteRequestCode": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "UserDevice": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseDocument"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "type": {
                "type": "string"
              },
              "deviceId": {
                "type": "string",
                "nullable": true
              },
              "devicePlatform": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseDocument": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseModel"
          },
          {
            "type": "object",
            "x-abstract": true,
            "additionalProperties": {},
            "properties": {
              "userId": {
                "type": "string",
                "nullable": true
              },
              "origin": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "BaseModel": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": {},
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "_ts": {
            "type": "string",
            "format": "date-time"
          },
          "deleted": {
            "type": "boolean"
          }
        }
      },
      "UserAuth": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "token": {
            "type": "string",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "PurchaseInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "transactionDateUtc": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "id": {
            "type": "string",
            "nullable": true
          },
          "transactionId": {
            "type": "string",
            "nullable": true
          },
          "originalTransactionId": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          },
          "productId": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PurchaseState"
              }
            ]
          },
          "sentToRevenueCat": {
            "type": "boolean"
          }
        }
      },
      "PurchaseState": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Purchased",
          "Canceled",
          "Purchasing",
          "Failed",
          "Restored",
          "Deferred",
          "PaymentPending",
          "Unknown"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7
        ]
      },
      "StripeReceipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "clientReferenceId": {
            "type": "string",
            "nullable": true
          },
          "subscriptionId": {
            "type": "string",
            "nullable": true
          },
          "paymentStatus": {
            "type": "string",
            "nullable": true
          },
          "customerId": {
            "type": "string",
            "nullable": true
          },
          "invoiceId": {
            "type": "string",
            "nullable": true
          },
          "sessionId": {
            "type": "string",
            "nullable": true
          },
          "periodStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "periodEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "AuthRequestBody": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "provider": {
            "type": "string",
            "nullable": true
          },
          "token": {
            "type": "string",
            "nullable": true
          },
          "user": {
            "type": "string",
            "nullable": true
          },
          "pwd": {
            "type": "string",
            "nullable": true
          },
          "device": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "BackupV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "backupFormatVersion": {
            "type": "integer",
            "format": "int32"
          },
          "backupDate": {
            "type": "string",
            "format": "date-time"
          },
          "pools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Pool"
            }
          },
          "logs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Log"
            }
          }
        }
      },
      "Pool": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseDocument"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "type": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "overview": {
                "$ref": "#/components/schemas/Overview"
              },
              "logsModifiedAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "contactName": {
                "type": "string"
              },
              "contactPhone": {
                "type": "string"
              },
              "contactEmail": {
                "type": "string"
              },
              "address": {
                "type": "string"
              },
              "lat": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "lon": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "notes": {
                "type": "string"
              },
              "volume": {
                "type": "integer",
                "format": "int64"
              },
              "poolVolumeUnit": {
                "$ref": "#/components/schemas/Units"
              },
              "buildType": {
                "$ref": "#/components/schemas/PoolBuildType"
              },
              "chemType": {
                "$ref": "#/components/schemas/PoolChemistryType"
              },
              "saltMin": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "saltMax": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "saltTarget": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "borMin": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "borMax": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "borTarget": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "trackSalt": {
                "type": "boolean"
              },
              "trackBor": {
                "type": "boolean"
              },
              "trackCC": {
                "type": "boolean"
              },
              "trackCSI": {
                "type": "boolean"
              },
              "trackFlowRate": {
                "type": "boolean"
              },
              "trackPressure": {
                "type": "boolean"
              },
              "normalPressure": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "alertFilterPressure": {
                "type": "boolean"
              },
              "alertFilterPressureThreshold": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "trackBackwashed": {
                "type": "boolean"
              },
              "trackBrushed": {
                "type": "boolean"
              },
              "trackVacuumed": {
                "type": "boolean"
              },
              "trackCleanedFilter": {
                "type": "boolean"
              },
              "trackWaterTemp": {
                "type": "boolean"
              },
              "trackSWGCellPercent": {
                "type": "boolean"
              },
              "trackPumpRunTime": {
                "type": "boolean"
              },
              "remindBackwashed": {
                "type": "boolean"
              },
              "remindBackwashedDays": {
                "type": "integer",
                "format": "int32"
              },
              "remindBrushed": {
                "type": "boolean"
              },
              "remindBrushedDays": {
                "type": "integer",
                "format": "int32"
              },
              "remindVacuumed": {
                "type": "boolean"
              },
              "remindVacuumedDays": {
                "type": "integer",
                "format": "int32"
              },
              "remindCleanedFilter": {
                "type": "boolean"
              },
              "remindCleanedFilterDays": {
                "type": "integer",
                "format": "int32"
              },
              "waterTempUnitDefault": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Units"
                  }
                ]
              },
              "logWeather": {
                "type": "boolean"
              },
              "weatherLocId": {
                "type": "string"
              },
              "zip": {
                "type": "string"
              },
              "alwaysShowPoolVolume": {
                "type": "boolean"
              },
              "hideIdealRangeAlerts": {
                "type": "boolean"
              },
              "hideRecommendedRangeAlerts": {
                "type": "boolean"
              },
              "shareDataOptOut": {
                "type": "boolean"
              },
              "shareWithCode": {
                "type": "boolean"
              },
              "shareCode": {
                "type": "string",
                "nullable": true
              },
              "shareCodeMigrated": {
                "type": "boolean"
              },
              "shareWithTfp": {
                "type": "boolean"
              },
              "swgLbsPerDay": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "swgModelId": {
                "type": "string",
                "nullable": true
              },
              "overrideFCTarget": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "rememberFCTarget": {
                "type": "boolean"
              },
              "showAllUnitsOfMeasurement": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "Overview": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fc": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "cc": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "cya": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "ch": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "ph": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "ta": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "salt": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "bor": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "tds": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "csi": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "flowRate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "pressure": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "waterTemp": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "waterTempUnits": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Units"
              }
            ]
          },
          "pumpRunTime": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "swgCellPercent": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fcTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "fcLogId": {
            "type": "string",
            "nullable": true
          },
          "ccTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ccLogId": {
            "type": "string",
            "nullable": true
          },
          "cyaTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cyaLogId": {
            "type": "string",
            "nullable": true
          },
          "chTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "chLogId": {
            "type": "string",
            "nullable": true
          },
          "phTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "phLogId": {
            "type": "string",
            "nullable": true
          },
          "taTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "taLogId": {
            "type": "string",
            "nullable": true
          },
          "saltTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "saltLogId": {
            "type": "string",
            "nullable": true
          },
          "borTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "borLogId": {
            "type": "string",
            "nullable": true
          },
          "tdsTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "tdsLogId": {
            "type": "string",
            "nullable": true
          },
          "csiTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "csiLogId": {
            "type": "string",
            "nullable": true
          },
          "flowRateTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "flowRateLogId": {
            "type": "string",
            "nullable": true
          },
          "pressureTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "pressureLogId": {
            "type": "string",
            "nullable": true
          },
          "waterTempTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "waterTempLogId": {
            "type": "string",
            "nullable": true
          },
          "pumpRuntimeTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "pumpRuntimeLogId": {
            "type": "string",
            "nullable": true
          },
          "swgCellPercentTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "swgCellPercentLogId": {
            "type": "string",
            "nullable": true
          },
          "backwashedTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "backwashedLogId": {
            "type": "string",
            "nullable": true
          },
          "brushedTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "brushedLogId": {
            "type": "string",
            "nullable": true
          },
          "cleanedFilterTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cleanedFilterLogId": {
            "type": "string",
            "nullable": true
          },
          "vacuumedTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "vacuumedLogId": {
            "type": "string",
            "nullable": true
          },
          "openedTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "openedLogId": {
            "type": "string",
            "nullable": true
          },
          "closedTs": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closedLogId": {
            "type": "string",
            "nullable": true
          },
          "calculatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "Units": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "US",
          "Metric",
          "Imperial"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "PoolBuildType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Vinyl",
          "Plaster",
          "Fiberglass"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "PoolChemistryType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Bleach",
          "SWG"
        ],
        "enum": [
          0,
          1
        ]
      },
      "Log": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseDocument"
          },
          {
            "type": "object",
            "x-abstract": true,
            "additionalProperties": {},
            "properties": {
              "poolId": {
                "type": "string"
              },
              "logTimestamp": {
                "type": "string",
                "format": "date-time"
              },
              "weather": {
                "$ref": "#/components/schemas/WeatherSummary"
              },
              "weatherLogId": {
                "type": "string"
              }
            }
          }
        ]
      },
      "WeatherSummary": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "desc": {
            "type": "string",
            "nullable": true
          },
          "icon": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "temp": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "tempFeelsLike": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "relHumidity": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "windDir": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "windDirDesc": {
            "type": "string",
            "nullable": true
          },
          "windSpeed": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "windGustSpeed": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "uvIndex": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "uvIndexDesc": {
            "type": "string",
            "nullable": true
          },
          "visibility": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "cloudCover": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "pressure": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "precipPast24Hours": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        }
      },
      "ChemicalLogResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "log": {
            "$ref": "#/components/schemas/ChemicalLog"
          },
          "pool": {
            "$ref": "#/components/schemas/Pool"
          }
        }
      },
      "ChemicalLog": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Log"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "type": {
                "type": "string"
              },
              "chemical": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ChemicalAdditionType"
                  }
                ]
              },
              "runTime": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "percent": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "unit": {
                "$ref": "#/components/schemas/UnitOfMeasurement"
              },
              "amount": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "normalizedAmount": {
                "type": "number",
                "format": "double",
                "nullable": true
              }
            }
          }
        ]
      },
      "ChemicalAdditionType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Bleach",
          "Trichlor",
          "Dichlor",
          "CalHypo48",
          "CalHypo53",
          "CalHypo65",
          "CalHypo73",
          "LithiumHypo",
          "ChlorineGas",
          "Borax",
          "BoricAcid",
          "SodaAsh",
          "Baume10",
          "Baume28",
          "Baume31",
          "Baume34",
          "MuriaticAcid14",
          "MuriaticAcid29",
          "MuriaticAcid31",
          "BakingSoda",
          "DryAcid",
          "TetraboratePentahydrate",
          "CalciumChloride",
          "CalciumChlorideDihydrate",
          "DryStabilizer",
          "LiquidStabilizer",
          "Salt",
          "SWG",
          "Polyquat",
          "CalHypo70",
          "CalHypo78"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21,
          22,
          23,
          24,
          25,
          26,
          27,
          28,
          29,
          30
        ]
      },
      "UnitOfMeasurement": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Milliliters",
          "Liters",
          "Grams",
          "Kilograms",
          "FluidOunces",
          "Gallons",
          "Pounds",
          "Ounces",
          "Ppm"
        ],
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ]
      },
      "CostLogResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "log": {
            "$ref": "#/components/schemas/CostLog"
          },
          "pool": {
            "$ref": "#/components/schemas/Pool"
          }
        }
      },
      "CostLog": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Log"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "type": {
                "type": "string"
              },
              "bleachPercent": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "measurementUnit": {
                "type": "string"
              },
              "amount": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "normalizedAmount": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "cost": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "costTypeId": {
                "type": "string"
              },
              "description": {
                "type": "string"
              }
            }
          }
        ]
      },
      "AccountDeleteRequestResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "userId": {
            "type": "string"
          },
          "operationId": {
            "type": "string"
          },
          "requestCode": {
            "type": "string"
          }
        }
      },
      "SwgModel": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseDocument"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "manufacturer": {
                "type": "string"
              },
              "model": {
                "type": "string"
              },
              "lbsPerDay": {
                "type": "number",
                "format": "double"
              },
              "type": {
                "type": "string"
              }
            }
          }
        ]
      },
      "CostType": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseDocument"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "name": {
                "type": "string"
              },
              "category": {
                "$ref": "#/components/schemas/CostTypeCategory"
              },
              "trackAmount": {
                "type": "boolean"
              },
              "measurementUnits": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "measurementType": {
                "$ref": "#/components/schemas/MeasurementType"
              },
              "Type": {
                "type": "string"
              }
            }
          }
        ]
      },
      "CostTypeCategory": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Other",
          "Chemicals_Sanitizer",
          "Chemicals_PhUp",
          "Chemicals_PhDown",
          "Chemicals_Ta",
          "Chemicals_Ch",
          "Chemicals_Stabilizer",
          "Chemicals_Bor",
          "Chemicals_Misc",
          "Utilities",
          "Equipment"
        ],
        "enum": [
          0,
          10,
          20,
          30,
          40,
          50,
          60,
          70,
          90,
          100,
          200
        ]
      },
      "MeasurementType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "None",
          "Custom",
          "Volume",
          "Weight"
        ],
        "enum": [
          0,
          1,
          2,
          3
        ]
      },
      "DeletedDocument": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseDocument"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "deletedId": {
                "type": "string"
              },
              "deletedType": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            }
          }
        ]
      },
      "MaintenanceLogResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "log": {
            "$ref": "#/components/schemas/MaintenanceLog"
          },
          "pool": {
            "$ref": "#/components/schemas/Pool"
          }
        }
      },
      "MaintenanceLog": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Log"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "type": {
                "type": "string"
              },
              "backwashed": {
                "type": "boolean"
              },
              "brushed": {
                "type": "boolean"
              },
              "cleanedFilter": {
                "type": "boolean"
              },
              "vacuumed": {
                "type": "boolean"
              },
              "flowRate": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "pressure": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "waterTemp": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "pumpRuntime": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "swgCellPercent": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              },
              "opened": {
                "type": "boolean"
              },
              "closed": {
                "type": "boolean"
              },
              "notes": {
                "type": "string"
              }
            }
          }
        ]
      },
      "NoteLogResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "log": {
            "$ref": "#/components/schemas/NoteLog"
          },
          "pool": {
            "$ref": "#/components/schemas/Pool"
          }
        }
      },
      "NoteLog": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Log"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "type": {
                "type": "string"
              },
              "notes": {
                "type": "string"
              }
            }
          }
        ]
      },
      "PoolsResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Pool"
            }
          },
          "continuationToken": {
            "type": "string"
          }
        }
      },
      "PumpScheduleLogResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "log": {
            "$ref": "#/components/schemas/PumpScheduleChangeLog"
          },
          "pool": {
            "$ref": "#/components/schemas/Pool"
          }
        }
      },
      "PumpScheduleChangeLog": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Log"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "type": {
                "type": "string"
              },
              "isOverride": {
                "type": "boolean"
              },
              "dayType": {
                "$ref": "#/components/schemas/ScheduleDayType"
              },
              "weeklySchedule": {
                "$ref": "#/components/schemas/PumpWeeklySchedule"
              },
              "overridePumpSegment": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/AutomationSegment"
                  }
                ]
              },
              "overrideHeatSegment": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/AutomationSegment"
                  }
                ]
              },
              "overrideSwgSegment": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/AutomationSegment"
                  }
                ]
              },
              "notes": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "ScheduleDayType": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "SameEveryDay",
          "DifferentWeekVsWeekend",
          "DifferentEveryDay"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "PumpWeeklySchedule": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "days": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/PumpDailySchedule"
            }
          }
        }
      },
      "PumpDailySchedule": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "segments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AutomationSegment"
            }
          }
        }
      },
      "AutomationSegment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "column": {
            "$ref": "#/components/schemas/AutomationColumn"
          },
          "startHour": {
            "type": "integer",
            "format": "int32"
          },
          "startMinute": {
            "type": "integer",
            "format": "int32"
          },
          "endHour": {
            "type": "integer",
            "format": "int32"
          },
          "endMinute": {
            "type": "integer",
            "format": "int32"
          },
          "zOrder": {
            "type": "integer",
            "format": "int32"
          },
          "speed": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "swgPercent": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "heatTemp": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "heatTempUnit": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Units"
              }
            ]
          }
        }
      },
      "AutomationColumn": {
        "type": "integer",
        "description": "",
        "x-enumNames": [
          "Pump",
          "Heat",
          "Swg"
        ],
        "enum": [
          0,
          1,
          2
        ]
      },
      "SubscriptionRequestBody": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "days": {
            "type": "integer",
            "format": "int32"
          },
          "token": {
            "type": "string",
            "nullable": true
          },
          "nonce": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "AppleReceipt": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Receipt"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "data": {
                "type": "string",
                "format": "byte",
                "nullable": true
              }
            }
          }
        ]
      },
      "Receipt": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "bundleId": {
            "type": "string",
            "nullable": true
          },
          "transactionId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ResponseBodyV2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "signedPayload": {
            "type": "string"
          }
        }
      },
      "SwimLogResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "log": {
            "$ref": "#/components/schemas/SwimLog"
          },
          "pool": {
            "$ref": "#/components/schemas/Pool"
          }
        }
      },
      "SwimLog": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Log"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "type": {
                "type": "string"
              },
              "numKids": {
                "type": "integer",
                "format": "int32"
              },
              "numAdults": {
                "type": "integer",
                "format": "int32"
              },
              "durationMinutes": {
                "type": "integer",
                "format": "int32"
              },
              "notes": {
                "type": "string"
              }
            }
          }
        ]
      },
      "TestLogResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "log": {
            "$ref": "#/components/schemas/TestLog"
          },
          "pool": {
            "$ref": "#/components/schemas/Pool"
          }
        }
      },
      "TestLog": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Log"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "type": {
                "type": "string"
              },
              "fc": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "cc": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "cya": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "ch": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "ph": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "ta": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "salt": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "bor": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "tds": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "csi": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "waterTemp": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "waterTempUnits": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Units"
                  }
                ]
              }
            }
          }
        ]
      },
      "TimelineResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Log"
            }
          },
          "continuationToken": {
            "type": "string"
          }
        }
      },
      "WeatherLocation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "zip": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "WeatherLog": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Log"
          },
          {
            "type": "object",
            "additionalProperties": {},
            "properties": {
              "type": {
                "type": "string"
              },
              "desc": {
                "type": "string",
                "nullable": true
              },
              "icon": {
                "type": "integer",
                "format": "int64",
                "nullable": true
              },
              "isDay": {
                "type": "boolean",
                "nullable": true
              },
              "temp": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "tempFeelsLike": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "tempFeelsLikeShade": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "relHumidity": {
                "type": "integer",
                "format": "int64",
                "nullable": true
              },
              "dewPoint": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "windDir": {
                "type": "integer",
                "format": "int64",
                "nullable": true
              },
              "windDirDesc": {
                "type": "string",
                "nullable": true
              },
              "windSpeed": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "windGustSpeed": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "uvIndex": {
                "type": "integer",
                "format": "int64",
                "nullable": true
              },
              "uvIndexDesc": {
                "type": "string",
                "nullable": true
              },
              "visibility": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "visibilityObstructions": {
                "type": "string",
                "nullable": true
              },
              "cloudCover": {
                "type": "integer",
                "format": "int64",
                "nullable": true
              },
              "ceiling": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "pressure": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "pressureTendency": {
                "type": "string",
                "nullable": true
              },
              "past24HrTempDeparture": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "apparentTemp": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "windChillTemp": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "wetBulbTemp": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "precip1hr": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "precip": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "precipPastHour": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "precipPast3Hours": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "precipPast6Hours": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "precipPast9Hours": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "precipPast12Hours": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "precipPast18Hours": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "precipPast24Hours": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "tempPast6HoursMin": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "tempPast6HoursMax": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "tempPast12HoursMin": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "tempPast12HoursMax": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "tempPast24HoursMin": {
                "type": "number",
                "format": "double",
                "nullable": true
              },
              "tempPast24HoursMax": {
                "type": "number",
                "format": "double",
                "nullable": true
              }
            }
          }
        ]
      },
      "WeatherLogResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "log": {
            "$ref": "#/components/schemas/WeatherLog"
          },
          "pool": {
            "$ref": "#/components/schemas/Pool"
          }
        }
      },
      "UserTokenExchange": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "appleUserId": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "appleValidation": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RevenueCatWebHookBody": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "api_version": {
            "type": "string",
            "nullable": true
          },
          "event": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/RevenueCatWebhookEvent"
              }
            ]
          }
        }
      },
      "RevenueCatWebhookEvent": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string"
          },
          "app_id": {
            "type": "string",
            "nullable": true
          },
          "app_user_id": {
            "type": "string",
            "nullable": true
          },
          "original_app_user_id": {
            "type": "string",
            "nullable": true
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "product_id": {
            "type": "string",
            "nullable": true
          },
          "entitlement_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "expiration_at_ms": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "grace_period_expiration_at_ms": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "purchased_at_ms": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "auto_resume_at_ms": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "is_trial_conversion": {
            "type": "boolean",
            "nullable": true
          },
          "cancel_reason": {
            "type": "string",
            "nullable": true
          },
          "expiration_reason": {
            "type": "string",
            "nullable": true
          },
          "transferred_from": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "transferred_to": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "transaction_id": {
            "type": "string",
            "nullable": true
          },
          "period_type": {
            "type": "string",
            "nullable": true
          },
          "original_transaction_id": {
            "type": "string",
            "nullable": true
          },
          "store": {
            "type": "string",
            "nullable": true
          },
          "environment": {
            "type": "string",
            "nullable": true
          },
          "renewal_number": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "TestTempTokenRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          },
          "expirationMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "nonce": {
            "type": "integer",
            "format": "int64"
          },
          "validationToken": {
            "type": "string"
          }
        }
      },
      "TestDeleteCodeRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "nonce": {
            "type": "integer",
            "format": "int64"
          },
          "validationToken": {
            "type": "string"
          }
        }
      },
      "TestResetRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "nonce": {
            "type": "integer",
            "format": "int64"
          },
          "validationToken": {
            "type": "string"
          }
        }
      },
      "TestSubscriptionExpiryRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "days": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "nonce": {
            "type": "integer",
            "format": "int64"
          },
          "token": {
            "type": "string"
          }
        }
      },
      "UserShareModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PoolLogModel"
            }
          }
        }
      },
      "PoolLogModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pool": {
            "$ref": "#/components/schemas/Pool"
          },
          "recentLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Log"
            }
          }
        }
      },
      "ProblemDetails": {
        "type": "object",
        "additionalProperties": {
          "nullable": true
        },
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          },
          "extensions": {
            "type": "object",
            "additionalProperties": {}
          }
        }
      }
    }
  }
}