{
  "openapi": "3.0.1",
  "info": {
    "title": "French Trademark Watch (INPI) – New Filings & Similarity Alerts",
    "description": "Monitor new French trademark filings by keyword, Nice class or applicant and get explainable similarity alerts for your brands. Pay per result, uses your own free Data INPI access. Independent, not affiliated with INPI; not legal advice.",
    "version": "0.1",
    "x-build-id": "KBO9oCG8yW3N8wFwc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/replay~inpi-veille-marques/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-replay-inpi-veille-marques",
        "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/replay~inpi-veille-marques/runs": {
      "post": {
        "operationId": "runs-sync-replay-inpi-veille-marques",
        "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/replay~inpi-veille-marques/run-sync": {
      "post": {
        "operationId": "run-sync-replay-inpi-veille-marques",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "live",
              "demo"
            ],
            "type": "string",
            "description": "Demo returns results on a bundled sample so you can test the output for free.",
            "default": "demo"
          },
          "keywords": {
            "title": "Keywords in mark name",
            "type": "array",
            "description": "New filings whose name contains one of these words (case/accent insensitive).",
            "items": {
              "type": "string"
            }
          },
          "niceClasses": {
            "title": "Nice classes",
            "type": "array",
            "description": "Restrict to Nice classes 1-45, e.g. 3, 25, 43.",
            "items": {
              "type": "string"
            }
          },
          "applicants": {
            "title": "Applicant (name or SIREN)",
            "type": "array",
            "description": "Filings by these applicants / holders (company name or SIREN).",
            "items": {
              "type": "string"
            }
          },
          "watchedMarks": {
            "title": "Watched marks (similarity alerts)",
            "type": "array",
            "description": "Your marks. Each new filing in the window is compared to them; alerts above the threshold are output.",
            "items": {
              "type": "string"
            }
          },
          "similarityThreshold": {
            "title": "Similarity threshold (0-100)",
            "minimum": 50,
            "maximum": 100,
            "type": "integer",
            "description": "Higher = fewer, closer alerts.",
            "default": 80
          },
          "daysBack": {
            "title": "Filing window (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Filings with application date in the last N days.",
            "default": 14
          },
          "collections": {
            "title": "Registers",
            "type": "array",
            "description": "FR (INPI), EU (EUIPO, in force), WO (WIPO designating France).",
            "default": [
              "FR"
            ],
            "items": {
              "type": "string"
            }
          },
          "maskNaturalPersons": {
            "title": "Mask individual applicants",
            "type": "boolean",
            "description": "Hide applicant names that look like private individuals (GDPR minimisation). Companies stay visible.",
            "default": true
          },
          "maxResults": {
            "title": "Max filings scanned",
            "minimum": 20,
            "maximum": 5000,
            "type": "integer",
            "description": "Safety cap on API pagination.",
            "default": 1000
          },
          "newOnly": {
            "title": "New only (live)",
            "type": "boolean",
            "description": "Live mode: each filing / alert is delivered and charged only once per watch profile (state kept in a key-value store of your account). Disable to get the full window every run.",
            "default": true
          },
          "stateKey": {
            "title": "State key (optional)",
            "type": "string",
            "description": "Name of the watch profile for 'New only'. Default: derived from your filters and watched marks."
          },
          "inpiUser": {
            "title": "Data INPI API login (your own)",
            "type": "string",
            "description": "Your OWN Data INPI technical API account (data.inpi.fr > Mes accès API > Marques). Secret field: encrypted by Apify, never written to output or logs. Required in live mode."
          },
          "inpiPassword": {
            "title": "Data INPI API password",
            "type": "string",
            "description": "Secret field: encrypted by Apify, never written to output or logs."
          },
          "maxWaitForAccountSec": {
            "title": "Max wait if your INPI account is busy (s)",
            "minimum": 0,
            "maximum": 3600,
            "type": "integer",
            "description": "Runs using the same Data INPI account are serialized so that the cumulative rate stays under 10 requests/min (Data INPI terms). A second run waits up to this long, then stops without charging.",
            "default": 600
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}