{
  "openapi": "3.0.1",
  "info": {
    "title": "New Scholarly Papers Watch (Crossref, OpenAlex)",
    "description": "Saved watches for new scholarly papers from Crossref: keywords, ORCID iDs, journals, funders, and institutions with your OpenAlex key. Each run returns only works it did not deliver before, and flags retractions, corrections and citation changes for your DOIs.",
    "version": "0.1",
    "x-build-id": "3cC3c7ub1NmDYsbMh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lone_rachis~scholarly-papers-watch/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lone_rachis-scholarly-papers-watch",
        "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/lone_rachis~scholarly-papers-watch/runs": {
      "post": {
        "operationId": "runs-sync-lone_rachis-scholarly-papers-watch",
        "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/lone_rachis~scholarly-papers-watch/run-sync": {
      "post": {
        "operationId": "run-sync-lone_rachis-scholarly-papers-watch",
        "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": [
          "watches"
        ],
        "properties": {
          "watches": {
            "title": "Watches",
            "maxItems": 50,
            "type": "array",
            "description": "Up to 50 watches, each an object with a type. {\"type\": \"query\", \"keywords\": \"CRISPR base editing\"} finds works holding every word (add \"titleOnly\": true to search titles only). {\"type\": \"author\", \"orcid\": \"0000-0002-1825-0097\"}, {\"type\": \"journal\", \"issn\": \"1476-4687\"}, {\"type\": \"funder\", \"funderId\": \"10.13039/100000001\"} and {\"type\": \"affiliation\", \"ror\": \"03vek6s52\"} (OpenAlex key needed) find new works. {\"type\": \"doi\", \"dois\": [\"10.1038/nature12373\"]} reports retractions, corrections and cited-by changes. Every type but doi takes \"since\": \"2026-01-01\" (published on or after) and every type a \"label\". The first run delivers the newest works as a baseline; later runs only what is new.",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "title": "Watch type",
                  "type": "string",
                  "description": "query, author, journal, funder, affiliation or doi.",
                  "enum": [
                    "query",
                    "author",
                    "journal",
                    "funder",
                    "affiliation",
                    "doi"
                  ]
                },
                "label": {
                  "title": "Label",
                  "type": "string",
                  "description": "Optional. A name for the watch, copied into each of its rows."
                },
                "keywords": {
                  "title": "Keywords",
                  "type": "string",
                  "description": "query watch: every word must appear in the title, subtitle or abstract. \"Quoted phrases\" and word* prefixes work."
                },
                "titleOnly": {
                  "title": "Title only",
                  "type": "boolean",
                  "description": "query watch: look for the words in the title and subtitle only."
                },
                "orcid": {
                  "title": "ORCID iD",
                  "type": "string",
                  "description": "author watch: an ORCID iD such as 0000-0002-1825-0097."
                },
                "issn": {
                  "title": "ISSN",
                  "type": "string",
                  "description": "journal watch: an ISSN such as 1476-4687."
                },
                "funderId": {
                  "title": "Funder ID",
                  "type": "string",
                  "description": "funder watch: a Crossref funder ID such as 10.13039/100000001."
                },
                "ror": {
                  "title": "ROR ID",
                  "type": "string",
                  "description": "affiliation watch: a ROR ID such as 03vek6s52. Needs an OpenAlex key."
                },
                "dois": {
                  "title": "DOIs",
                  "type": "array",
                  "description": "doi watch: up to 200 DOIs.",
                  "items": {
                    "type": "string"
                  }
                },
                "since": {
                  "title": "Published since",
                  "type": "string",
                  "description": "Optional, every type but doi: only works published on or after this date, written YYYY-MM-DD."
                }
              },
              "required": [
                "type"
              ],
              "additionalProperties": false
            }
          },
          "maxPerWatch": {
            "title": "Most works per watch per run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "The most works one watch delivers in one run, newest first. The first run of a watch is its baseline: its newest works up to this number. When a later run finds more new works than this, the newest are delivered, the older ones are left out for good, and a free row says how many.",
            "default": 50
          },
          "contactEmail": {
            "title": "Your email for Crossref (optional)",
            "type": "string",
            "description": "Optional. Crossref asks API users for a contact address and sends requests that carry one to its faster polite pool. The Actor puts it in the User-Agent header of requests to Crossref only. It is never logged, stored in the output or memory, or sent anywhere else."
          },
          "stateStoreName": {
            "title": "Watch memory name",
            "type": "string",
            "description": "Optional. The name of the key-value store that remembers what each watch delivered. With a name, such as my-lab-watch, an added watch delivers only its own baseline. Left empty, a run of a saved task keeps one memory per task, which works the same way; a run outside a task names the memory after its watches, so adding or changing a watch there starts a new memory and the next run delivers every watch's baseline again. Letters, digits and dashes."
          },
          "openAlexApiKey": {
            "title": "Your OpenAlex API key (optional)",
            "type": "string",
            "description": "Optional. With your own key from a free OpenAlex account, affiliation (ROR) watches work, and rows get an open-access link and the authors' ROR IDs. OpenAlex counts every request against your key's daily allowance, so the Actor caps its calls (below) and stops when the allowance runs low. Without a key the Actor never calls OpenAlex. Stored encrypted; never written to the output or the log."
          },
          "openAlexMaxRequests": {
            "title": "Most OpenAlex requests per run",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "The most requests one run sends to OpenAlex with your key. A list request cost $0.0001 of OpenAlex's allowance on 14 Oct 2026, so 50 requests cost about $0.005. 0 turns OpenAlex off.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}