{
  "openapi": "3.0.1",
  "info": {
    "title": "Hetzner Server Auction Monitor",
    "description": "Polls the Hetzner Server Auction (Serverbörse), filters listings by your criteria, and fires a webhook for each new match to trigger downstream Actors.",
    "version": "0.2",
    "x-build-id": "HO3Q1wJhRgXAzgOYf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rl1987~hetzner-server-auction-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rl1987-hetzner-server-auction-monitor",
        "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/rl1987~hetzner-server-auction-monitor/runs": {
      "post": {
        "operationId": "runs-sync-rl1987-hetzner-server-auction-monitor",
        "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/rl1987~hetzner-server-auction-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-rl1987-hetzner-server-auction-monitor",
        "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",
        "required": [
          "currency",
          "maxPrice",
          "minRamGB"
        ],
        "properties": {
          "currency": {
            "title": "Currency",
            "enum": [
              "EUR",
              "USD"
            ],
            "type": "string",
            "description": "Currency of the auction feed. All price criteria are interpreted in this currency.",
            "default": "EUR"
          },
          "minPrice": {
            "title": "Min monthly price",
            "minimum": 1,
            "type": "integer",
            "description": "Only match servers whose monthly price is at or above this value (in the selected currency). Leave empty for no lower bound."
          },
          "maxPrice": {
            "title": "Max monthly price",
            "minimum": 1,
            "type": "integer",
            "description": "Only match servers whose monthly price is at or below this value (in the selected currency).",
            "default": 50
          },
          "minRamGB": {
            "title": "Min RAM (GB)",
            "minimum": 1,
            "type": "integer",
            "description": "Only match servers with at least this much RAM.",
            "default": 128
          },
          "requireEcc": {
            "title": "Require ECC memory",
            "type": "boolean",
            "description": "If enabled, only match servers with ECC memory.",
            "default": false
          },
          "diskType": {
            "title": "Disk type",
            "enum": [
              "any",
              "nvme",
              "sata",
              "hdd"
            ],
            "type": "string",
            "description": "Require at least one disk of this type. 'any' matches all servers.",
            "default": "any"
          },
          "minDiskGB": {
            "title": "Min total disk (GB)",
            "minimum": 1,
            "type": "integer",
            "description": "Only match servers whose total disk capacity is at least this value. Leave empty for no disk-size filter."
          },
          "datacenters": {
            "title": "Datacenter locations",
            "type": "array",
            "description": "Restrict to these datacenter location prefixes (e.g. FSN, NBG, HEL). Empty matches any location.",
            "items": {
              "type": "string"
            }
          },
          "cpuIncludes": {
            "title": "CPU contains",
            "type": "string",
            "description": "Case-insensitive substring that must appear in the CPU model (e.g. 'Ryzen', 'Xeon'). Leave empty to match any CPU."
          },
          "genericWebhookUrl": {
            "title": "Generic webhook URL",
            "type": "string",
            "description": "URL that receives a POST with the listing payload for each new match. Point it at the next Actor's run endpoint, a request bin, or any HTTP endpoint. Leave empty to rely on the dataset/native Apify integration instead."
          },
          "notifyOnFirstRun": {
            "title": "Notify on first run",
            "type": "boolean",
            "description": "By default the first run silently records existing matches (seeding) to avoid an alert flood. Enable to fire webhooks for everything on the first run too.",
            "default": false
          },
          "selfSchedule": {
            "title": "Self-schedule (requires Full permissions)",
            "type": "boolean",
            "description": "If enabled, the Actor creates and maintains its own recurring Schedule so it keeps polling automatically. Requires the Actor to run with Full permissions (see README). Keep disabled if you schedule the Actor manually or trigger it via an integration.",
            "default": false
          },
          "cron": {
            "title": "Cron expression",
            "type": "string",
            "description": "Cron expression for the self-managed Schedule (only used when self-schedule is enabled).",
            "default": "*/10 * * * *"
          },
          "scheduleName": {
            "title": "Schedule name",
            "type": "string",
            "description": "Name for the self-managed Schedule (used as the idempotency key). Defaults to 'hetzner-monitor-<actorId>'."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}