---
title: "Operation"
description: "one tool as the API serves it: a route, its input and output as owning types, its errors, its limits; generated"
section: concepts
address: /concepts/operation
contract: 0476e35e6e275db5
---

# Operation

one tool as the API serves it: a route, its input and output as owning types, its errors, its limits; generated

[figure: Operation is a row at platform scope. The drawing shows its fields and the objects that they point at.]

| property | value |
|---|---|
| kind | row |
| scope | platform |
| key | the tool |
| store | postgres |
| family | gateway |



## Fields


| field | type | required | note |
|---|---|---|---|
| `tool` | [Tool](/concepts/tool) | yes |  |
| `verb` | [Verb](/concepts/verb) | yes |  |
| `route` | `text` | yes |  |
| `method` | `one of GET \| POST` | yes |  |
| `input_type` | `text` | yes |  |
| `output_type` | `text` | yes |  |
| `errors` | `[text]` | yes | each a Refusal with its rule |
| `limits` | [RateBound](/concepts/ratebound) | yes |  |
| `idempotent` | `bool` | yes | a change carries its idempotency key |
| `version` | `text` | yes | the API's version |



## Routes that use it
No route takes or returns Operation directly. The record holds it, and the objects that point at it reach it.
