Deliverd Actions API

The Actions API from Deliverd — 1 operation(s) for actions.

Operations 2

POST /api/v1/actions Register an action: something consequential software may do #
GET /api/v1/actions What this organisation has registered #

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/deliverd-dev:deliverd-dev-actions-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

deliverd-dev-actions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Deliverd Dev Actions API
  version: 1.0.0
  x-refined-note:
  - x-source differs across the merged source definitions and was not carried
  description: 'Operations tagged Actions across 2 of this provider''s published API definitions: deliverd-dev-openapi.json, deliverd-dev-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://deliverd.dev
  description: 'Deliverd REST API (paths carry the /api/v1 prefix; https://deliverd.dev/llms.txt: "REST API: https://deliverd.dev/api/v1")'
tags:
- name: Actions
paths:
  /api/v1/actions:
    post:
      summary: 'Register an action: something consequential software may do'
      description: 'Actions are stable organisational vocabulary and tools are implementation details — several agents calling three differently named functions may all be performing finance.refund, and policy is written about the business action rather than the function name. Upsert, not create: this runs on every deploy, so registering the same id again is the normal case. It overwrites only the half the code owns; an administrator''s title, risk and sensitivity overrides survive it, and no administrator can edit the input schema, because a schema they could loosen is a check the code no longer performs. An agent principal is refused: policy is keyed on the action id, so an agent able to name actions could name its way around the rule that governs it.'
      security:
      - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                actionId:
                  type: string
                  maxLength: 120
                  pattern: ^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)+$
                  description: 'Dotted, lowercase, stable: `finance.refund`. Policy is written against this name'
                name:
                  type: string
                  minLength: 1
                  maxLength: 120
                  description: What this does, as an approver will read it in a list
                description:
                  type: string
                  maxLength: 4000
                  description: What it means and when it is used, for whoever writes the policy
                inputSchema:
                  type: object
                  additionalProperties: {}
                  description: 'A JSON Schema object over the action''s named arguments. A small subset: type/properties/required, fields of string, number, integer or boolean, with enum, minimum, maximum, minLength, maxLength and pattern. Anything else is refused rather than ignored'
                editableFields:
                  type: array
                  items:
                    type: string
                    maxLength: 120
                  description: Fields an approver may correct before approving. Omit for approve-or-reject only
                displayTitle:
                  type: string
                  maxLength: 200
                  description: 'The approval headline, templated over the input: `Refund {{amount}} {{currency}}`'
                riskCategory:
                  type: string
                  enum:
                  - financial
                  - data
                  - communication
                  - infrastructure
                  - identity
                  - other
                  description: What kind of harm this risks
                defaultRisk:
                  type: string
                  enum:
                  - low
                  - medium
                  - high
                  - critical
                  description: The urgency an approval inherits when the caller declares none
              required:
              - actionId
              - name
              - inputSchema
      responses:
        '201':
          description: The action as registered
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  actionId:
                    type: string
                  name:
                    type: string
                  description:
                    type:
                    - string
                    - 'null'
                  inputSchema:
                    type: object
                    additionalProperties: {}
                  editableFields:
                    type: array
                    items:
                      type: string
                  displayTitle:
                    type:
                    - string
                    - 'null'
                  riskCategory:
                    type: string
                    enum:
                    - financial
                    - data
                    - communication
                    - infrastructure
                    - identity
                    - other
                  defaultRisk:
                    type: string
                    enum:
                    - low
                    - medium
                    - high
                    - critical
                  source:
                    type: string
                    enum:
                    - code
                    - admin
                  createdAt:
                    type: string
                required:
                - id
                - actionId
                - name
                - description
                - inputSchema
                - editableFields
                - displayTitle
                - riskCategory
                - defaultRisk
                - source
                - createdAt
      tags:
      - Actions
      operationId: postApiV1Actions
      x-operation-id-source: derived
    get:
      summary: What this organisation has registered
      security:
      - bearerAuth: []
      parameters:
      - schema:
          type: integer
          minimum: 1
          maximum: 200
          description: Rows per page. Above the maximum you get the maximum, not an error.
        required: false
        description: Rows per page. Above the maximum you get the maximum, not an error.
        name: limit
        in: query
      - schema:
          type: string
          description: nextCursor from a previous response. One we did not issue is refused.
        required: false
        description: nextCursor from a previous response. One we did not issue is refused.
        name: cursor
        in: query
      responses:
        '200':
          description: Newest first. Titles and risk reflect any administrator override; sensitivity labels are not returned, because telling the caller which values are confidential tells it which are worth taking.
          content:
            application/json:
              schema:
                type: object
                properties:
                  actions:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        actionId:
                          type: string
                        name:
                          type: string
                        description:
                          type:
                          - string
                          - 'null'
                        inputSchema:
                          type: object
                          additionalProperties: {}
                        editableFields:
                          type: array
                          items:
                            type: string
                        displayTitle:
                          type:
                          - string
                          - 'null'
                        riskCategory:
                          type: string
                          enum:
                          - financial
                          - data
                          - communication
                          - infrastructure
                          - identity
                          - other
                        defaultRisk:
                          type: string
                          enum:
                          - low
                          - medium
                          - high
                          - critical
                        source:
                          type: string
                          enum:
                          - code
                          - admin
                        createdAt:
                          type: string
                      required:
                      - id
                      - actionId
                      - name
                      - description
                      - inputSchema
                      - editableFields
                      - displayTitle
                      - riskCategory
                      - defaultRisk
                      - source
                      - createdAt
                  nextCursor:
                    type:
                    - string
                    - 'null'
                    description: Pass back as ?cursor= for the next page. Null means this is the end.
                required:
                - actions
                - nextCursor
      tags:
      - Actions
      operationId: getApiV1Actions
      x-operation-id-source: derived
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key (dlv_…) created in Settings → API tokens, or an OAuth access token (dlvo_…). Every route below can answer `401 auth_error` — the credential was not accepted — or `403 insufficient_scope`, which is a different thing: the credential is fine and was not issued with the scope this route needs. Reissue it with that scope rather than replacing it with another of the same ones. Older clients may still branch on `auth_error` for both.'
x-refined-from:
- deliverd-dev-openapi.json
- deliverd-dev-openapi.yml