{
  "openapi": "3.0.1",
  "info": {
    "title": "Competitor Change Intelligence Monitor",
    "description": "Monitor authorized public competitor, pricing, product, terms, and changelog pages for material changes with bounded evidence, confidence, severity, and action-focused reports.",
    "version": "0.1",
    "x-build-id": "caZ8ctQQXlundxru6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fascinating_lentil~competitor-change-intelligence-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fascinating_lentil-competitor-change-intelligence-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/fascinating_lentil~competitor-change-intelligence-monitor/runs": {
      "post": {
        "operationId": "runs-sync-fascinating_lentil-competitor-change-intelligence-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/fascinating_lentil~competitor-change-intelligence-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-fascinating_lentil-competitor-change-intelligence-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": [
          "targets",
          "confirmAuthorizedUse"
        ],
        "properties": {
          "targets": {
            "title": "Authorized target pages",
            "minItems": 1,
            "maxItems": 25,
            "type": "array",
            "description": "One to 25 public HTTPS pages that intentionally expose public content, belong to you, or that you have permission to monitor. V1 checks one document per target and does not crawl recursively.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "title": "Target name",
                  "type": "string",
                  "description": "Unique human-readable target name used to organize reports and baseline identity.",
                  "minLength": 1,
                  "maxLength": 100,
                  "pattern": ".*\\S.*"
                },
                "url": {
                  "title": "Target URL",
                  "type": "string",
                  "description": "Absolute public HTTPS URL without URL credentials or a fragment.",
                  "minLength": 9,
                  "maxLength": 2048,
                  "pattern": "^https:\\/\\/[^\\s]+$"
                },
                "changeTypes": {
                  "title": "Change types",
                  "type": "array",
                  "description": "Business changes to extract and classify for this target.",
                  "editor": "stringList",
                  "minItems": 1,
                  "maxItems": 7,
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "pattern": "^(?:price|availability|product_feature|pricing_plan|terms_policy|launch_changelog|general_content)$"
                  }
                },
                "includeSelectors": {
                  "title": "Include CSS selectors",
                  "type": "array",
                  "description": "Optional bounded CSS selectors whose matched content is eligible for monitoring. Selector safety is validated at runtime.",
                  "editor": "stringList",
                  "maxItems": 10,
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 256,
                    "pattern": ".*\\S.*"
                  }
                },
                "excludeSelectors": {
                  "title": "Exclude CSS selectors",
                  "type": "array",
                  "description": "Optional bounded CSS selectors for volatile or irrelevant content that should be removed before comparison.",
                  "editor": "stringList",
                  "maxItems": 20,
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 256,
                    "pattern": ".*\\S.*"
                  }
                },
                "ignoreTextPatterns": {
                  "title": "Ignored text patterns",
                  "type": "array",
                  "description": "Optional literal or simple glob patterns for known volatile text. User-provided regular expressions are not accepted in v1.",
                  "editor": "stringList",
                  "maxItems": 10,
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 128,
                    "pattern": ".*\\S.*"
                  }
                },
                "currency": {
                  "title": "Currency hint",
                  "type": "string",
                  "description": "Optional three-letter ISO 4217 currency hint. The Actor never performs currency conversion.",
                  "minLength": 3,
                  "maxLength": 3,
                  "pattern": "^[A-Za-z]{3}$"
                },
                "productIdentifiers": {
                  "title": "Known product identifiers",
                  "type": "object",
                  "description": "Optional identifiers that improve product-change confidence without enabling automatic product discovery.",
                  "editor": "json",
                  "additionalProperties": false,
                  "properties": {
                    "sku": {
                      "title": "SKU",
                      "type": "string",
                      "description": "Known seller or manufacturer stock-keeping unit.",
                      "minLength": 1,
                      "maxLength": 128
                    },
                    "gtin": {
                      "title": "GTIN",
                      "type": "string",
                      "description": "Known 8-14 digit Global Trade Item Number.",
                      "minLength": 8,
                      "maxLength": 14,
                      "pattern": "^[0-9]+$"
                    },
                    "mpn": {
                      "title": "MPN",
                      "type": "string",
                      "description": "Known manufacturer part number.",
                      "minLength": 1,
                      "maxLength": 128
                    },
                    "brand": {
                      "title": "Brand",
                      "type": "string",
                      "description": "Known product brand.",
                      "minLength": 1,
                      "maxLength": 128
                    },
                    "model": {
                      "title": "Model",
                      "type": "string",
                      "description": "Known product model identifier.",
                      "minLength": 1,
                      "maxLength": 128
                    },
                    "variant": {
                      "title": "Variant",
                      "type": "string",
                      "description": "Known size, color, or other product variant.",
                      "minLength": 1,
                      "maxLength": 128
                    },
                    "packQuantity": {
                      "title": "Pack quantity",
                      "type": "string",
                      "description": "Known pack count or unit quantity retained as source text.",
                      "minLength": 1,
                      "maxLength": 64
                    }
                  }
                },
                "authorizedRedirectOrigins": {
                  "title": "Authorized redirect origins",
                  "type": "array",
                  "description": "Optional public HTTPS origins that are separately authorized as cross-origin redirect destinations. Every origin is independently safety-checked.",
                  "editor": "stringList",
                  "maxItems": 3,
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "minLength": 9,
                    "maxLength": 512,
                    "pattern": "^https:\\/\\/[^\\s/]+(?::[0-9]+)?$"
                  }
                }
              },
              "required": [
                "name",
                "url",
                "changeTypes"
              ]
            }
          },
          "confirmAuthorizedUse": {
            "title": "Confirm authorized use",
            "type": "boolean",
            "description": "Required for every non-demo target. Set true only when the public target belongs to you, intentionally exposes content for this use, or you have explicit permission to monitor it. This confirmation records existing authorization; it does not create permission.",
            "default": false
          },
          "baselineAction": {
            "title": "Baseline action",
            "enum": [
              "compare_only",
              "initialize_trusted",
              "store_candidate",
              "promote_candidate"
            ],
            "type": "string",
            "description": "The safe default compare_only never creates or changes a trusted baseline. Mutating actions require explicit selection and runtime lineage checks.",
            "default": "compare_only"
          },
          "candidateId": {
            "title": "Candidate ID",
            "pattern": "^[A-Za-z0-9_-]+$",
            "minLength": 1,
            "maxLength": 128,
            "type": "string",
            "description": "Required only for exact candidate promotion. Obtain this value from a prior candidate report."
          },
          "expectedCandidateHash": {
            "title": "Expected candidate hash",
            "pattern": "^[a-f0-9]{64}$",
            "type": "string",
            "description": "Required only for promotion. Exact lowercase SHA-256 hash of the reviewed candidate snapshot."
          },
          "expectedTrustedParentHash": {
            "title": "Expected trusted parent hash",
            "pattern": "^(?:[a-f0-9]{64}|NO_PARENT)$",
            "type": "string",
            "description": "Required only for promotion. Exact lowercase SHA-256 trusted-parent hash, or NO_PARENT when the candidate was created without a trusted baseline."
          },
          "includeUnchanged": {
            "title": "Include full unchanged reports",
            "type": "boolean",
            "description": "When false, unchanged successful checks produce only the minimal auditable Dataset record needed for atomic pay-per-event charging.",
            "default": false
          },
          "minimumMateriality": {
            "title": "Minimum materiality",
            "enum": [
              "informational",
              "low",
              "medium",
              "high",
              "critical"
            ],
            "type": "string",
            "description": "Lowest deterministic severity retained as a material change in the concise report.",
            "default": "low"
          },
          "notificationMode": {
            "title": "Notification mode",
            "enum": [
              "none",
              "immediate",
              "weekly_digest"
            ],
            "type": "string",
            "description": "Optional post-persistence delivery. Weekly mode accumulates deduplicated redacted changes for the selected weekly window.",
            "default": "none"
          },
          "minimumAlertSeverity": {
            "title": "Minimum alert severity",
            "enum": [
              "low",
              "medium",
              "high",
              "critical"
            ],
            "type": "string",
            "description": "Lowest change severity eligible for optional webhook delivery.",
            "default": "medium"
          },
          "alertWebhookUrl": {
            "title": "Secret alert webhook URL",
            "type": "string",
            "description": "Optional authorized public HTTPS webhook. Stored as secret input and never logged, persisted, or returned."
          },
          "weeklyDigestDay": {
            "title": "Weekly digest day",
            "minimum": 1,
            "maximum": 7,
            "type": "integer",
            "description": "Delivery day from one (Monday) through seven (Sunday). Used only in weekly digest mode.",
            "default": 1
          },
          "timezone": {
            "title": "Digest timezone",
            "pattern": "^[A-Za-z0-9_+\\-/]+$",
            "minLength": 1,
            "maxLength": 64,
            "type": "string",
            "description": "IANA timezone used only to determine the weekly delivery window.",
            "default": "UTC"
          },
          "requestTimeoutSeconds": {
            "title": "Request timeout",
            "minimum": 3,
            "maximum": 30,
            "type": "integer",
            "description": "Per-request timeout from 3 to 30 seconds.",
            "default": 15
          },
          "maxResponseBytes": {
            "title": "Maximum response size",
            "minimum": 65536,
            "maximum": 5242880,
            "type": "integer",
            "description": "Maximum accepted response body from 64 KiB to 5 MiB.",
            "default": 2097152
          },
          "maxRetries": {
            "title": "Maximum retries",
            "minimum": 0,
            "maximum": 2,
            "type": "integer",
            "description": "Bounded retry count for transient network, 408, 429, and 5xx failures only.",
            "default": 1
          },
          "dryRun": {
            "title": "Dry run",
            "type": "boolean",
            "description": "Fetch and classify without baseline mutation, webhook delivery, or pay-per-event charging.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}