Citra Space Tasks API

The tasks API from Citra Space — 3 operation(s) for tasks.

Operations 4

POST /tasks Create Task #
PUT /tasks/{task_id} Update Task #
GET /tasks/{task_id}/report Get Task Report #
POST /tasks/{task_id}/report Upsert Task Report #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/citra-space:citra-space-tasks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

citra-space-tasks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: SOICAT Tasks API
  version: 0.1.0
tags:
- name: Tasks
paths:
  /tasks:
    post:
      operationId: create_task_tasks_post
      parameters:
      - in: header
        name: X-Scenario-Context
        required: false
        schema:
          format: uuid
          type:
          - string
          - 'null'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskCreate'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
          description: Successful Response
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      summary: Create Task
      tags:
      - Tasks
  /tasks/{task_id}:
    put:
      operationId: update_task_tasks__task_id__put
      parameters:
      - description: The ID of the task to update
        in: path
        name: task_id
        required: true
        schema:
          format: uuid
          type: string
      - in: header
        name: X-Scenario-Context
        required: false
        schema:
          format: uuid
          type:
          - string
          - 'null'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskInput'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
          description: Successful Response
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      summary: Update Task
      tags:
      - Tasks
  /tasks/{task_id}/report:
    get:
      operationId: get_task_report_tasks__task_id__report_get
      parameters:
      - description: The ID of the task to read the report for
        in: path
        name: task_id
        required: true
        schema:
          format: uuid
          type: string
      - in: header
        name: X-Scenario-Context
        required: false
        schema:
          format: uuid
          type:
          - string
          - 'null'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskReportRead'
          description: Successful Response
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      summary: Get Task Report
      tags:
      - Tasks
    post:
      description: 'The report body is always stored; a report-carried status follows

        first-terminal-wins, so a losing terminal status is dropped rather than

        rejecting the report. A token caller''s status for a Pending task, other

        than Canceled, is dropped too: the owner has not accepted the task.'
      operationId: upsert_task_report_tasks__task_id__report_post
      parameters:
      - description: The ID of the task to report on
        in: path
        name: task_id
        required: true
        schema:
          format: uuid
          type: string
      - in: header
        name: X-Scenario-Context
        required: false
        schema:
          format: uuid
          type:
          - string
          - 'null'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskReportCreate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskReportUpsertResponse'
          description: Successful Response
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      summary: Upsert Task Report
      tags:
      - Tasks
components:
  schemas:
    TaskReportCreate:
      description: 'A report submitted by either the public HTTP API or an attached device.


        Deserialization accepts both the public camelCase keys and the internal

        snake_case spellings. Call [`Self::normalize`] after deserialization, then

        [`Self::validate_payload`]. A task of any sensor accepts it.'
      properties:
        adapterName:
          maxLength: 128
          type:
          - string
          - 'null'
        citrascopeVersion:
          maxLength: 64
          type:
          - string
          - 'null'
        report:
          additionalProperties: {}
          propertyNames:
            type: string
          type: object
        reportSchemaVersion:
          format: int64
          minimum: 1
          type: integer
        reportType:
          maxLength: 64
          minLength: 1
          type: string
        status:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/TaskStatus'
      required:
      - reportType
      - reportSchemaVersion
      - report
      type: object
    CollectionMode:
      enum:
      - Sample
      - Dwell
      - TimeSearch
      - GridSearch
      - Resolve
      title: CollectionMode
      type: string
    TaskReportUpsertResponse:
      properties:
        adapterName:
          type:
          - string
          - 'null'
        citrascopeVersion:
          type:
          - string
          - 'null'
        lateTerminalDropped:
          default: false
          description: 'True when this report carried a status that was not applied: a terminal

            status that lost to an already-terminal task (first-terminal-wins), or a

            token caller''s status other than Canceled for a Pending task its owner has

            not accepted. The report body was still stored; only the status was

            discarded.'
          type: boolean
        receivedAt:
          format: date-time
          type: string
        reportSchemaVersion:
          format: int32
          type: integer
        reportType:
          type: string
        taskId:
          format: uuid
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
      - taskId
      - reportType
      - reportSchemaVersion
      - receivedAt
      - updatedAt
      type: object
    TaskStatus:
      enum:
      - Pending
      - Canceled
      - Scheduled
      - Succeeded
      - Failed
      title: TaskStatus
      type: string
    Task:
      description: Task schema for reading
      properties:
        antennaId:
          anyOf:
          - format: uuid
            type: string
          - type: 'null'
          description: Antenna this task is associated with
        antennaName:
          anyOf:
          - type: string
          - type: 'null'
          description: Name of the antenna
        antennaUserId:
          anyOf:
          - format: uuid
            type: string
          - type: 'null'
          description: User ID of the antenna owner
        assignedFilterName:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter name for Characterization tasks
        collectionMode:
          anyOf:
          - $ref: '#/components/schemas/CollectionMode'
          - type: 'null'
          description: How the task collects
        collectionRequestId:
          anyOf:
          - format: uuid
            type: string
          - type: 'null'
          description: Collection request this task is associated with
        creationEpoch:
          format: date-time
          title: Creationepoch
          type: string
        effect:
          anyOf:
          - $ref: '#/components/schemas/MissionEffect'
          - type: 'null'
          description: That effect, where the caller can see it
        frequencyMax:
          anyOf:
          - type: number
          - type: 'null'
          description: Maximum frequency in Hz
        frequencyMin:
          anyOf:
          - type: number
          - type: 'null'
          description: Minimum frequency in Hz
        groundStationId:
          anyOf:
          - format: uuid
            type: string
          - type: 'null'
          description: Ground station ID of the telescope or antenna
        groundStationName:
          anyOf:
          - type: string
          - type: 'null'
          description: Name of the ground station
        id:
          format: uuid
          title: Id
          type: string
        missionEffectId:
          anyOf:
          - format: uuid
            type: string
          - type: 'null'
          description: The mission effect this task serves (ADR 0025)
        missionId:
          anyOf:
          - format: uuid
            type: string
          - type: 'null'
          description: Mission this task is scoped to
        priority:
          default: 5
          description: Scheduling priority from 1, the most important, to 10 (ADR 0026)
          title: Priority
          type: integer
        satelliteId:
          description: Satellite this task is associated with
          format: uuid
          title: Satelliteid
          type: string
        satelliteName:
          anyOf:
          - type: string
          - type: 'null'
          description: Name of the satellite
        scenarioId:
          anyOf:
          - format: uuid
            type: string
          - type: 'null'
        status:
          $ref: '#/components/schemas/TaskStatus'
        taskStart:
          format: date-time
          title: Taskstart
          type: string
        taskStop:
          format: date-time
          title: Taskstop
          type: string
        telescopeId:
          anyOf:
          - format: uuid
            type: string
          - type: 'null'
          description: Telescope this task is associated with
        telescopeName:
          anyOf:
          - type: string
          - type: 'null'
          description: Name of the telescope
        updateEpoch:
          format: date-time
          title: Updateepoch
          type: string
        userId:
          description: User who requested this task
          format: uuid
          title: Userid
          type: string
        username:
          anyOf:
          - type: string
          - type: 'null'
          description: Username of the user who requested this task
      required:
      - id
      - status
      - creationEpoch
      - updateEpoch
      - taskStart
      - taskStop
      - userId
      - satelliteId
      title: Task
      type: object
    TaskReportRead:
      properties:
        adapterName:
          type:
          - string
          - 'null'
        citrascopeVersion:
          type:
          - string
          - 'null'
        receivedAt:
          format: date-time
          type: string
        report:
          additionalProperties: {}
          propertyNames:
            type: string
          type: object
        reportSchemaVersion:
          format: int32
          type: integer
        reportType:
          type: string
        taskId:
          format: uuid
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
      - taskId
      - reportType
      - reportSchemaVersion
      - receivedAt
      - updatedAt
      - report
      type: object
    TaskCreate:
      description: Task schema for creation.
      properties:
        antennaId:
          description: Antenna this task is associated with.
          format: uuid
          type:
          - string
          - 'null'
        satelliteId:
          description: Satellite this task is associated with.
          format: uuid
          type: string
        taskStart:
          description: Time the task can start to be collected.
          format: date-time
          type: string
        taskStop:
          description: Time the task should stop being collected.
          format: date-time
          type: string
        telescopeId:
          description: Telescope this task is associated with.
          format: uuid
          type:
          - string
          - 'null'
      required:
      - taskStart
      - taskStop
      - satelliteId
      type: object
    MissionEffect:
      enum:
      - Identification
      - Custody
      - Characterization
      - ThreatAssessment
      - OutcomeAssessment
      - Discrimination
      - ChangeDetection
      title: MissionEffect
      type: string
    TaskInput:
      description: Task schema for updates.
      properties:
        status:
          $ref: '#/components/schemas/TaskStatus'
          description: Status of the task.
      required:
      - status
      type: object
    ValidationError:
      properties:
        ctx:
          type: object
        input: {}
        loc:
          items:
            oneOf:
            - type: string
            - format: int64
              type: integer
          type: array
        msg:
          type: string
        type:
          type: string
      required:
      - loc
      - msg
      - type
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
      type: object
  securitySchemes:
    HTTPBearer:
      scheme: bearer
      type: http