{
  "openapi": "3.0.1",
  "info": {
    "title": "IVOA Simple Cone Search Extractor",
    "description": "Point at ANY IVOA Simple Cone Search service (VizieR, HEASARC, GAVO, IRSA, NOIRLab and thousands of observatory catalogs) and pull every catalog source within a sky circle: give RA, Dec and a radius, get one row per object. One actor, the whole Virtual Observatory.",
    "version": "0.1",
    "x-build-id": "NZBex4rmVcXfE1v1u"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datamule~ivoa-cone-search-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datamule-ivoa-cone-search-extractor",
        "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/datamule~ivoa-cone-search-extractor/runs": {
      "post": {
        "operationId": "runs-sync-datamule-ivoa-cone-search-extractor",
        "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/datamule~ivoa-cone-search-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-datamule-ivoa-cone-search-extractor",
        "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": [
          "ra",
          "dec",
          "sr"
        ],
        "properties": {
          "endpoint": {
            "title": "Cone Search endpoint URL",
            "type": "string",
            "description": "The base URL of ANY IVOA Simple Cone Search (SCS) service. ONE actor speaks to all of them — VizieR / CDS (https://vizier.cds.unistra.fr/viz-bin/conesearch/<catalog>), HEASARC / NASA-GSFC (https://heasarc.gsfc.nasa.gov/cgi-bin/vo/cone/coneGet.pl?table=<t>), GAVO (https://dc.zah.uni-heidelberg.de/<svc>/scs.xml), IRSA / IPAC (https://irsa.ipac.caltech.edu/SCS?table=<t>), NOIRLab, ESA, CADC and thousands more. Keep any catalogue-selecting query parameter the service needs (e.g. ?table=fp_psc) on the URL — the actor adds RA / DEC / SR itself. Required unless you use \"Endpoints\" below."
          },
          "endpoints": {
            "title": "Endpoints (search several at once)",
            "type": "array",
            "description": "Optional: run the SAME cone (RA / DEC / SR) across multiple cone-search services at once (several archives, or the same catalogue at mirror sites). Each output row is tagged with its _endpoint. Use this OR the single \"Endpoint\" above (at least one is required). An endpoint that is unreachable, auth-gated, or returns a non-VOTable body is skipped with a warning and the batch continues.",
            "items": {
              "type": "string"
            }
          },
          "ra": {
            "title": "RA — right ascension (degrees)",
            "type": "string",
            "description": "The centre of the search cone: right ascension in decimal degrees, J2000 (0–360). Example: the Andromeda Galaxy (M31) is RA 10.6847. This is the SCS 'RA' parameter and is byte-identical across every cone-search service."
          },
          "dec": {
            "title": "Dec — declination (degrees)",
            "type": "string",
            "description": "The centre of the search cone: declination in decimal degrees, J2000 (-90 to +90). Example: M31 is Dec 41.269. This is the SCS 'DEC' parameter."
          },
          "sr": {
            "title": "SR — search radius (degrees)",
            "type": "string",
            "description": "The radius of the search cone in decimal degrees (the SCS 'SR' parameter). Every catalogue source within this angular distance of (RA, Dec) is returned. Keep it small for dense catalogues: 0.1 deg = 6 arcmin. Large radii on big catalogues can return huge tables (and cost more) — services also enforce their own maximum."
          },
          "verb": {
            "title": "Verbosity (column detail)",
            "enum": [
              "1",
              "2",
              "3"
            ],
            "type": "string",
            "description": "Optional SCS 'VERB' level controlling how many columns the service returns: 1 = minimal (id + position), 2 = the service's normal set, 3 = every available column. Leave empty to use the service's own default. Not all services honour it."
          },
          "maxRecords": {
            "title": "Max records (global cap)",
            "minimum": 1,
            "type": "integer",
            "description": "A GLOBAL cap on the number of rows emitted across ALL endpoints (each row is one billable event). Reached mid-endpoint, the run stops deterministically. It is also sent to the server as MAXREC (services that support it limit the result themselves). Leave empty to emit everything within the cone."
          },
          "userAgent": {
            "title": "User-Agent override",
            "type": "string",
            "description": "Optional override for the request User-Agent. A descriptive User-Agent is sent by default — some data centres throttle or reject a blank / generic UA. Only override if a specific service asks you to identify differently."
          },
          "timeoutSecs": {
            "title": "Read timeout (seconds)",
            "minimum": 1,
            "maximum": 900,
            "type": "integer",
            "description": "How long to wait for the service to answer (default 120). Positional queries over large catalogues can be slow; services also enforce their own server-side timeouts, so a very large cone may still be cut off by the server."
          },
          "bearer": {
            "title": "Bearer token",
            "type": "string",
            "description": "Optional bearer token for an auth-gated cone-search deployment (sent as Authorization: Bearer ***). NOT required for public services. Never logged."
          },
          "extraHeaders": {
            "title": "Extra request headers",
            "type": "object",
            "description": "Optional extra HTTP headers as a JSON object, e.g. {\"X-Api-Key\": \"...\"} for a gateway-fronted service. Not required for public services. Header values are never logged."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}