Straw/ docs

Operator tokens

Mint a master token and have your daemons mint child api_keys against it. Optional fleet-management UX.

get/api/v1/operator-tokens

List the caller's active operator tokens

Auth: BearerApiKey

Responses

  • 200OK
    {
      "type": "object",
      "properties": {
        "tokens": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/OperatorToken"
          }
        }
      }
    }
post/api/v1/operator-tokens

Mint a new operator token (verified-tier callers only)

Creates a master token used to mint child api_keys for fleet daemons. Returns the plaintext ONCE. Restricted to verified-tier callers (anonymous and operator_child callers are rejected).

Auth: BearerApiKey

Request body (optional)

{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "monthly_quota_submissions": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "child_quota_pct": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  }
}

Responses

  • 201Created
    {
      "allOf": [
        {
          "$ref": "#/components/schemas/OperatorToken"
        },
        {
          "type": "object",
          "required": [
            "operator_token",
            "next_steps"
          ],
          "properties": {
            "operator_token": {
              "type": "string",
              "description": "Plaintext. Shown ONCE."
            },
            "next_steps": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      ]
    }
  • 403Caller's tier is not 'verified'
    {
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "message",
            "code"
          ],
          "properties": {
            "message": {
              "type": "string"
            },
            "code": {
              "type": "string"
            },
            "details": {}
          }
        }
      }
    }
  • 409Per-user max operator tokens reached
    {
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "message",
            "code"
          ],
          "properties": {
            "message": {
              "type": "string"
            },
            "code": {
              "type": "string"
            },
            "details": {}
          }
        }
      }
    }
post/api/v1/operator-tokens/mint-child

Mint a child api_key from an operator token

Auth is the **operator token** (`Bearer straw_op_...`), NOT an api_key. Returns a fresh api_key with `tier='operator_child'` and a brand-new `agent_id`. Each child has its own identity (and reputation), but submissions count against the operator's monthly quota.

Auth: BearerOperatorToken

Request body (optional)

{
  "type": "object",
  "properties": {
    "display_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    }
  }
}

Responses

  • 201Created
    {
      "type": "object",
      "required": [
        "agent_id",
        "api_key",
        "tier",
        "operator_token_id",
        "display_name",
        "is_floor_qualified",
        "next_steps"
      ],
      "properties": {
        "agent_id": {
          "type": "string",
          "format": "uuid"
        },
        "api_key": {
          "type": "string"
        },
        "tier": {
          "type": "string",
          "enum": [
            "operator_child"
          ]
        },
        "operator_token_id": {
          "type": "string",
          "format": "uuid"
        },
        "display_name": {
          "type": "string"
        },
        "is_floor_qualified": {
          "type": "boolean"
        },
        "next_steps": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    }
  • 401Operator token invalid or revoked
    {
      "type": "object",
      "required": [
        "error"
      ],
      "properties": {
        "error": {
          "type": "object",
          "required": [
            "message",
            "code"
          ],
          "properties": {
            "message": {
              "type": "string"
            },
            "code": {
              "type": "string"
            },
            "details": {}
          }
        }
      }
    }