Slash · Schema

paths.task._dto.TaskResponse

CompanyBankingPaymentsFinancial ServicesFintechCorporate CardsBusiness BankingInvoicingExpense ManagementTreasuryFDX
View JSON Schema on GitHub

JSON Schema

slash-paths-task-dto-task-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/slash/main/json-schema/slash-paths-task-dto-task-response-schema.json",
  "title": "paths.task._dto.TaskResponse",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/slash-task-api-openapi.yml#/components/schemas/paths.task._dto.TaskResponse",
  "$ref": "#/$defs/slashfi.models.entity.Task.ITaskWithActionsModel.yaml",
  "x-entrypoint": {
    "virtualPath": "entity/Task/ITaskWithActionsModel",
    "sourcePath": "entity/Task/ITaskWithActionsModel.yaml",
    "title": "ITaskWithActionsModel",
    "origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
    "globalImport": true,
    "typescript": {
      "importPath": "import  * as models from '@slashfi/models';",
      "symbolValue": "models.entity.Task.ITaskWithActionsModel",
      "typeValue": "models.entity.Task.ITaskWithActionsModel"
    }
  },
  "$defs": {
    "slashfi.models.entity.Task.ITaskActionModel.yaml": {
      "title": "ITaskActionModel",
      "type": "object",
      "description": "An action the current caller can perform on a task, resolved per task + caller by the internal app's GET /task endpoint.\n",
      "properties": {
        "key": {
          "type": "string",
          "description": "Stable action identifier used when dispatching via POST /task/{id}/act."
        },
        "label": {
          "type": "string",
          "description": "Human-readable button label."
        },
        "style": {
          "type": "string",
          "enum": [
            "primary",
            "danger"
          ],
          "description": "UI button style hint."
        },
        "role": {
          "type": "string",
          "enum": [
            "actor",
            "originator",
            "observer"
          ],
          "description": "Stakeholder role the action was resolved through."
        },
        "isDisabled": {
          "type": "boolean",
          "description": "Whether the action can currently be executed. `true` means the task is in a state that blocks the action — e.g. a completion action whose task still has unsatisfied `meta.isRequired` attributes. Clients should render the button disabled (with `missingAttributes` explaining why) and avoid dispatching it; the act endpoint will also reject with a 400 if called.\n"
        },
        "missingAttributes": {
          "type": "array",
          "description": "When `isDisabled` is `true` because required attributes aren't populated, the attribute keys that still need values. Empty when the action isn't gated or when all requirements are met.\n",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "key",
        "label",
        "isDisabled",
        "missingAttributes"
      ],
      "x-entrypoint": {
        "virtualPath": "entity/Task/ITaskActionModel",
        "sourcePath": "entity/Task/ITaskActionModel.yaml",
        "title": "ITaskActionModel",
        "origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
        "globalImport": true
      }
    },
    "slashfi.models.entity.Task.ITaskAttributeMetaModel.yaml": {
      "title": "ITaskAttributeMetaModel",
      "type": "object",
      "properties": {
        "isRequired": {
          "type": "boolean",
          "description": "True when this attribute must be set for this task instance."
        }
      },
      "x-entrypoint": {
        "virtualPath": "entity/Task/ITaskAttributeMetaModel",
        "sourcePath": "entity/Task/ITaskAttributeMetaModel.yaml",
        "title": "ITaskAttributeMetaModel",
        "origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
        "globalImport": true
      }
    },
    "slashfi.models.entity.Task.ITaskModel.yaml": {
      "title": "ITaskModel",
      "type": "object",
      "description": "Public shape of a task row on the wire. Serialized identically by every task-returning endpoint (list, single-task GET, etc.) so the same consumer type works across surfaces.\nConsumers that resolve per-caller action capability (today: the internal app's GET /task) extend this with the `actions` list via `ITaskWithActionsModel`. The public API only returns the base shape — it doesn't expose caller-specific state.\n",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique task ID."
        },
        "type": {
          "type": "string",
          "description": "Task type key (e.g. `payment_approval`, `expense_submission`). The `data` and `meta` shapes vary by type — use GET /task/schema to discover the attribute shape per type.\n"
        },
        "status": {
          "type": "string",
          "description": "Normalized task status.",
          "enum": [
            "action_required",
            "pending",
            "completed",
            "rejected",
            "expired",
            "canceled"
          ]
        },
        "data": {
          "type": "object",
          "description": "Primitive attribute values for the task. Keys and value types vary by `type`; hidden/internal attributes are stripped before the response leaves the server.\n",
          "additionalProperties": true
        },
        "meta": {
          "type": "object",
          "description": "Per-instance attribute branding, keyed by attribute name. Today the only branding key is `isRequired`, which signals whether the attribute must be satisfied for the task to complete. Absent attribute keys mean the schema default applies.\n",
          "additionalProperties": {
            "$ref": "#/$defs/slashfi.models.entity.Task.ITaskAttributeMetaModel.yaml",
            "x-entrypoint": {
              "virtualPath": "entity/Task/ITaskAttributeMetaModel",
              "sourcePath": "entity/Task/ITaskAttributeMetaModel.yaml",
              "title": "ITaskAttributeMetaModel",
              "origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
              "globalImport": true
            }
          }
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "ISO-8601 timestamp of when the task was created."
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "ISO-8601 timestamp of the latest meaningful task status/data update."
        }
      },
      "required": [
        "id",
        "type",
        "status",
        "data",
        "meta",
        "timestamp",
        "updatedAt"
      ],
      "x-entrypoint": {
        "virtualPath": "entity/Task/ITaskModel",
        "sourcePath": "entity/Task/ITaskModel.yaml",
        "title": "ITaskModel",
        "origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
        "globalImport": true
      }
    },
    "slashfi.models.entity.Task.ITaskWithActionsModel.yaml": {
      "title": "ITaskWithActionsModel",
      "description": "`ITaskModel` enriched with the caller's per-task action list. Returned by surfaces that do caller-specific authorization (today the internal app's GET /task, which resolves allowed actions from the current user's role on the task). Not emitted by the public API — external consumers receive the bare `ITaskModel` shape.\n",
      "allOf": [
        {
          "$ref": "#/$defs/slashfi.models.entity.Task.ITaskModel.yaml",
          "x-entrypoint": {
            "virtualPath": "entity/Task/ITaskModel",
            "sourcePath": "entity/Task/ITaskModel.yaml",
            "title": "ITaskModel",
            "origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
            "globalImport": true
          }
        },
        {
          "type": "object",
          "properties": {
            "actions": {
              "type": "array",
              "description": "Actions the current caller can perform on this task.",
              "items": {
                "$ref": "#/$defs/slashfi.models.entity.Task.ITaskActionModel.yaml",
                "x-entrypoint": {
                  "virtualPath": "entity/Task/ITaskActionModel",
                  "sourcePath": "entity/Task/ITaskActionModel.yaml",
                  "title": "ITaskActionModel",
                  "origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
                  "globalImport": true
                }
              }
            }
          },
          "required": [
            "actions"
          ]
        }
      ],
      "x-entrypoint": {
        "virtualPath": "entity/Task/ITaskWithActionsModel",
        "sourcePath": "entity/Task/ITaskWithActionsModel.yaml",
        "title": "ITaskWithActionsModel",
        "origin": "/home/packages/api-specs/server-api-v2/node_modules/@slashfi/models/schemas",
        "globalImport": true
      }
    }
  }
}

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • 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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/slash-paths-task-dto-task-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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.