# SDK capabilities (https://docs.getaviato.com/reference/sdk-capabilities)



The TypeScript, Go, and Laravel SDKs implement the same plugin protocol. Their APIs follow each language's conventions.

| Capability        | Use it for                                                             |
| ----------------- | ---------------------------------------------------------------------- |
| Action            | A business operation run on one record, many records, or a collection. |
| Computed field    | A displayed value derived from declared dependencies.                  |
| Hook              | Validate or modify an operation before it runs, or react afterwards.   |
| Segment           | A named filter supplied by application logic.                          |
| Search            | Translate a search term into a collection filter.                      |
| Write override    | Translate a field edit into underlying values.                         |
| Chart             | Compute data or a visualization specification.                         |
| Relation hints    | Describe relations not expressed as database foreign keys.             |
| Custom datasource | Expose records from an API or other external source.                   |

## Select an SDK [#select-an-sdk]

* [TypeScript](/integrations/typescript): a Fetch-compatible plugin for JavaScript servers.
* [Go](/integrations/go): a standard HTTP handler, with framework adapters.
* [Laravel](/integrations/laravel): fluent definitions and Artisan integration.

## Compatibility [#compatibility]

Pin your agent and SDK releases and check their compatibility before upgrading. The repository runs protocol conformance tests against language fixtures; your own application should also test its handlers and permission boundaries.

This documentation tracks the current codebase. There are no archived versioned documentation sets yet. Consult your pinned release's source when its API differs from an example.

## Public and internal APIs [#public-and-internal-apis]

The SDK plugin protocol and agent interfaces are the integration surface described here. The dashboard's GraphQL schema is an internal application interface, so this site does not publish every resolver as a supported public API.
