{
  "openapi": "3.0.1",
  "info": {
    "title": "Padel Booking Agent (Prague)",
    "description": "MCP server that finds, books, and cancels padel courts at 10 Prague venues (from your AI chat) — Padel Powers, Spoje, Písečná, FOR Padel, Padel Automat, Padel Džus, Císařská louka, Padel Neridé, PADEL Slavia, Sky Sport City. \n\nBooking returns a payment link you complete yourself; never auto-charges.",
    "version": "0.2",
    "x-build-id": "xMewbSy0bsb6S7p9q"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/inovaflow~padel-booking-agent/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-inovaflow-padel-booking-agent",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/inovaflow~padel-booking-agent/runs": {
      "post": {
        "operationId": "runs-sync-inovaflow-padel-booking-agent",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/inovaflow~padel-booking-agent/run-sync": {
      "post": {
        "operationId": "run-sync-inovaflow-padel-booking-agent",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchDate": {
            "title": "Search a date → get every open court (no login needed)",
            "type": "string",
            "description": "Enter a date as YYYY-MM-DD (a day later this week works well) to run ONE availability search across all enabled Prague venues and save every open court + time to the dataset, then finish. Leave empty to run the actor as an MCP server for your AI assistant instead. No login is required to search."
          },
          "searchDaysAhead": {
            "title": "…or search this many days from today",
            "minimum": 0,
            "maximum": 14,
            "type": "integer",
            "description": "Alternative to an exact date: search this many days ahead of today (Europe/Prague). Used only when the date above is empty. Handy for a demo that never expires — e.g. 3 = three days from now."
          },
          "padelPowersEmail": {
            "title": "Padel Powers login email (optional — only to BOOK here)",
            "type": "string",
            "description": "Your Padel Powers login email. Leave empty to skip booking at Padel Powers."
          },
          "padelPowersPassword": {
            "title": "Padel Powers login password (optional)",
            "type": "string",
            "description": "Your Padel Powers login password. Needed to book at Padel Powers."
          },
          "searchPadelPowers": {
            "title": "Search Padel Powers Smíchov",
            "type": "boolean",
            "description": "Turn off to skip Padel Powers Smíchov in availability searches.",
            "default": true
          },
          "playtomicEmail": {
            "title": "Playtomic login email (optional — only to BOOK Spoje / Písečná)",
            "type": "string",
            "description": "Your Playtomic login email. Covers both Padel Club Spoje and Tenis & Padel klub Písečná. Leave empty to skip booking at both."
          },
          "playtomicPassword": {
            "title": "Playtomic login password (optional)",
            "type": "string",
            "description": "Your Playtomic login password. Needed to book at Spoje and Písečná."
          },
          "searchSpoje": {
            "title": "Search Padel Club Spoje",
            "type": "boolean",
            "description": "Turn off to skip Padel Club Spoje in availability searches.",
            "default": true
          },
          "searchPisecna": {
            "title": "Search Tenis & Padel klub Písečná",
            "type": "boolean",
            "description": "Turn off to skip Tenis & Padel klub Písečná in availability searches.",
            "default": true
          },
          "bookaballEmail": {
            "title": "Padel Džus (BookABall) login email — NEEDED EVEN TO SEARCH this venue",
            "type": "string",
            "description": "Your Padel Džus (BookABall) login email. Required even to search — this venue hides availability behind a login. Leave empty to skip Padel Džus entirely."
          },
          "bookaballPassword": {
            "title": "Padel Džus (BookABall) login password",
            "type": "string",
            "description": "Your Padel Džus (BookABall) login password. Needed to search or book at Padel Džus."
          },
          "searchPadelDzus": {
            "title": "Search Padel Džus Hostivař",
            "type": "boolean",
            "description": "Turn off to skip Padel Džus Hostivař in availability searches (requires BookABall login above).",
            "default": true
          },
          "forpadelEmail": {
            "title": "FOR Padel login email (optional — its own login, separate from Padel Automat)",
            "type": "string",
            "description": "Your FOR Padel login email (separate from Padel Automat). Leave empty to skip booking at FOR Padel."
          },
          "forpadelPassword": {
            "title": "FOR Padel login password (optional)",
            "type": "string",
            "description": "Your FOR Padel login password. Needed to book at FOR Padel Zdiměřice."
          },
          "searchForPadel": {
            "title": "Search FOR Padel Zdiměřice",
            "type": "boolean",
            "description": "Turn off to skip FOR Padel Zdiměřice in availability searches.",
            "default": true
          },
          "padelautomatEmail": {
            "title": "Padel Automat login email (optional — its own login, separate from FOR Padel)",
            "type": "string",
            "description": "Your Padel Automat login email (separate from FOR Padel). Leave empty to skip booking at Padel Automat."
          },
          "padelautomatPassword": {
            "title": "Padel Automat login password (optional)",
            "type": "string",
            "description": "Your Padel Automat login password. Needed to book at Padel Automat Čakovice."
          },
          "searchPadelAutomat": {
            "title": "Search Padel Automat (Čakovice)",
            "type": "boolean",
            "description": "Turn off to skip Padel Automat (Čakovice) in availability searches.",
            "default": true
          },
          "reenioEmail": {
            "title": "Padel Císařská louka (Reenio) login email (optional — only to BOOK here)",
            "type": "string",
            "description": "Your Padel Císařská louka (Reenio) login email. Leave empty to skip booking at Císařská louka."
          },
          "reenioPassword": {
            "title": "Padel Císařská louka (Reenio) login password (optional)",
            "type": "string",
            "description": "Your Reenio login password. Needed to book at Padel Císařská louka."
          },
          "searchCisarskaLouka": {
            "title": "Search Padel Císařská louka",
            "type": "boolean",
            "description": "Turn off to skip Padel Císařská louka in availability searches.",
            "default": true
          },
          "reservantoEmail": {
            "title": "Padel Tenis Neridé (Reservanto) login email (optional — only to BOOK here)",
            "type": "string",
            "description": "Your Padel Tenis Neridé (Reservanto) login email. Leave empty to skip booking at Neridé."
          },
          "reservantoPassword": {
            "title": "Padel Tenis Neridé (Reservanto) login password (optional)",
            "type": "string",
            "description": "Your Reservanto login password. Needed to book at Padel Tenis Neridé."
          },
          "searchNeride": {
            "title": "Search Padel Tenis Neridé",
            "type": "boolean",
            "description": "Turn off to skip Padel Tenis Neridé in availability searches.",
            "default": true
          },
          "padelslaviaEmail": {
            "title": "PADEL Slavia login email — UNLOCKS FUTURE DATES (today is public without it)",
            "type": "string",
            "description": "Your PADEL Slavia login email. Without it only today's grid is visible; add it to search future dates and book."
          },
          "padelslaviaPassword": {
            "title": "PADEL Slavia login password (optional)",
            "type": "string",
            "description": "Your PADEL Slavia login password. Needed to search future dates and book at PADEL Slavia."
          },
          "searchPadelSlavia": {
            "title": "Search PADEL Slavia",
            "type": "boolean",
            "description": "Turn off to skip PADEL Slavia in availability searches.",
            "default": true
          },
          "clubspireEmail": {
            "title": "Sky Sport City login email (optional — only to BOOK here)",
            "type": "string",
            "description": "Your Sky Sport City login email. Leave empty to skip booking at Sky Sport City Prosek."
          },
          "clubspirePassword": {
            "title": "Sky Sport City login password (optional)",
            "type": "string",
            "description": "Your Sky Sport City login password. Needed to book at Sky Sport City Prosek."
          },
          "searchSkySportCity": {
            "title": "Search Sky Sport City Prosek",
            "type": "boolean",
            "description": "Turn off to skip Sky Sport City Prosek in availability searches.",
            "default": true
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}