{
  "openapi": "3.0.1",
  "info": {
    "title": "Swissmedic Zulassungsnummer Portfolio Status Monitor",
    "description": "Watch Swissmedic Zulassungsnummer against the official HAM authorized-medicines xlsx and emit typed APPEARED/DROPPED/AUTHORIZATION_ON/OFF (+ optional attribute) events. Dosage rows aggregated to auth portfolio. Not EMA/FDA twin; not a full dump billed as rows.",
    "version": "0.1",
    "x-build-id": "1n8Yojam8vd3bgSd5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/plym-actor-factory~ch-swissmedic-zulassungsnummer-portfolio-status-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-plym-actor-factory-ch-swissmedic-zulassungsnummer-portfolio-status-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/plym-actor-factory~ch-swissmedic-zulassungsnummer-portfolio-status-monitor/runs": {
      "post": {
        "operationId": "runs-sync-plym-actor-factory-ch-swissmedic-zulassungsnummer-portfolio-status-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/plym-actor-factory~ch-swissmedic-zulassungsnummer-portfolio-status-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-plym-actor-factory-ch-swissmedic-zulassungsnummer-portfolio-status-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",
        "properties": {
          "zulassungsnummern": {
            "title": "Swissmedic Zulassungsnummer (watchlist)",
            "type": "array",
            "description": "Swissmedic authorization numbers to monitor against the official HAM xlsx (e.g. 417, 666, 58063). Exact digit match after normalize. Dosage rows are aggregated per Zulassungsnummer. Invalid entries skipped with no charge. Not a full dump bill.",
            "default": [
              "417",
              "450",
              "666",
              "534"
            ],
            "items": {
              "type": "string"
            }
          },
          "authorizationNumbers": {
            "title": "Authorization number alias (EN)",
            "type": "array",
            "description": "Optional alias for zulassungsnummern — same keys, merged into the watchlist.",
            "items": {
              "type": "string"
            }
          },
          "swissmedicNumbers": {
            "title": "Swissmedic number alias",
            "type": "array",
            "description": "Optional alias for zulassungsnummern.",
            "items": {
              "type": "string"
            }
          },
          "signalGroups": {
            "title": "Signal groups",
            "type": "array",
            "description": "Which change groups to evaluate: directory (APPEARED/DROPPED), status (AUTHORIZATION_ON_REGISTER / AUTHORIZATION_OFF_REGISTER), attributes (holder / Heilmittelcode / validity / product name / Abgabekategorie). Default: directory+status.",
            "default": [
              "directory",
              "status"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxRunSeconds": {
            "title": "Max run seconds",
            "minimum": 5,
            "maximum": 900,
            "type": "integer",
            "description": "Wall-clock budget (HAM xlsx download/parse ~1 MB + diff).",
            "default": 240
          },
          "maxEvents": {
            "title": "Max delivered change events",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop after this many unique change events are delivered (does not include RUN_STATUS).",
            "default": 500
          },
          "resumeFromCheckpoint": {
            "title": "Resume from stored checkpoint",
            "type": "boolean",
            "description": "If true, resume auth snapshots and seen event_uids from the default Key-Value Store.",
            "default": true
          },
          "sourceMode": {
            "title": "Source mode",
            "enum": [
              "fixture",
              "live"
            ],
            "type": "string",
            "description": "fixture = Store/CI health default (no network; RUN_STATUS only unless emitFixtureDemoEvents=true). live = official Swissmedic HAM xlsx (no API key).",
            "default": "fixture"
          },
          "emitFixtureDemoEvents": {
            "title": "Emit fixture demo change events",
            "type": "boolean",
            "description": "When sourceMode=fixture, if true push fabricated change events from local fixtures. Default false so Store daily auto-tests never emit fake Swissmedic events or charge swissmedic-zulassung-status-event-delivered.",
            "default": false
          },
          "asOfHint": {
            "title": "as_of hint (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional as_of label for events / RUN_STATUS. Defaults to Swissmedic Stand/Etat au when live."
          },
          "maxTotalChargeUsd": {
            "title": "Max total charge (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Optional soft budget hint for delivered change events."
          },
          "swissmedicXlsxUrl": {
            "title": "Swissmedic HAM xlsx URL override",
            "type": "string",
            "description": "Optional direct HAM xlsx URL. Prefer leaving blank so the Actor uses the durable official Swissmedic download path."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}