Skip to content

Commit b31ca76

Browse files
Extensibility section of Encyclopedia
1 parent 8a6a17b commit b31ca76

6 files changed

Lines changed: 103 additions & 14 deletions

File tree

docs/develop/plugins-guide.mdx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@ Here are some common use cases for plugins:
3636
The recommended way to start building plugins is with a `SimplePlugin`. This abstraction will tackle the vast majority
3737
of plugins people want to write.
3838

39-
For advanced use cases, you can extend the methods in lower-level classes that Simple Plugin is based on without
40-
re-implementing what you’ve done. See the [Advanced Topics section](#advanced-topics-for-plugins) for more information.
41-
4239
### Example Plugins
4340

4441
If you prefer to learn by getting hands-on with code, check out some existing plugins.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
id: extensibility
3+
title: Extensibility
4+
sidebar_label: Extensibility
5+
description: Temporal offers mechanisms to augment the functionality of Workflows and Activities, including data conversion, context propagation, interceptors, and plugins.
6+
toc_max_heading_level: 4
7+
keywords:
8+
- extensibility
9+
- interceptors
10+
- context propagation
11+
- data conversion
12+
- plugins
13+
tags:
14+
- Concepts
15+
---
16+
17+
Temporal offers many mechanisms to augment the functionality of Workflows and Activities.
18+
These allow you to customize how data is serialized, propagate metadata across execution boundaries, and inject cross-cutting behavior like tracing and logging.
19+
20+
- [Data Conversion](/dataconversion) - Customize how arguments and return values are serialized, compressed, or encrypted
21+
- [Context Propagation](/encyclopedia/context-propagation) - Pass custom metadata (tracing IDs, tenant IDs, auth tokens) across Workflow, Activity, and Child Workflow boundaries
22+
- [Interceptors](/encyclopedia/interceptors) - Add cross-cutting behavior (observability, authorization, header manipulation) before and after SDK operations
23+
- [Plugins](/encyclopedia/plugins) - Bundle interceptors, context propagators, data converters, and built-in definitions into reusable packages

docs/encyclopedia/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ The following Encyclopedia pages describe the concepts, components, and features
2424
- [Temporal Service](/temporal-service)
2525
- [Namespaces](/namespaces)
2626
- [Temporal Nexus](/nexus)
27-
- [Data conversion](/dataconversion)
27+
- [Extensibility](/encyclopedia/extensibility)
2828

2929
For a complete list of Temporal terms, see the [Glossary](/glossary).
3030

docs/encyclopedia/interceptors.mdx

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
id: interceptors
3+
title: Interceptors
4+
sidebar_label: Interceptors
5+
description: Add cross-cutting behavior like observability, authorization, and header manipulation before and after SDK operations.
6+
toc_max_heading_level: 4
7+
keywords:
8+
- interceptors
9+
- middleware
10+
- observability
11+
- tracing
12+
tags:
13+
- Concepts
14+
---
15+
16+
Interceptors let you add cross-cutting behavior before and after SDK operations such as starting a Workflow, executing an Activity, or handling a Signal. They work like middleware: each interceptor wraps the next, forming a chain that executes around the underlying operation.
17+
18+
Common use cases:
19+
20+
- Observability (logging, metrics, tracing)
21+
- Authorization and authentication checks
22+
- Header manipulation (propagating metadata)
23+
- Input/output validation
24+
25+
## Implementing Interceptors
26+
27+
Here are SDK-specific guides:
28+
29+
- [Python](/develop/python/interceptors)
30+
- [TypeScript](/develop/typescript/interceptors)

docs/encyclopedia/plugins.mdx

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
id: plugins
3+
title: Plugins
4+
sidebar_label: Plugins
5+
description: Bundle interceptors, context propagators, data converters, and built-in definitions into reusable packages.
6+
toc_max_heading_level: 4
7+
keywords:
8+
- plugins
9+
- simple plugin
10+
- extensibility
11+
tags:
12+
- Concepts
13+
---
14+
15+
A Plugin bundles multiple extensibility primitives - interceptors, context propagators, data converters, and built-in Workflow/Activity/Nexus definitions - into a single reusable package. Plugins let platform teams and library authors ship ready-made functionality that application developers can adopt with a single registration call.
16+
17+
Common use cases:
18+
19+
- AI Agent SDKs (e.g., OpenAI Agents, Pydantic AI)
20+
- Observability packages (tracing, logging, metrics)
21+
- Encryption or compliance middleware
22+
- Shared infrastructure integrations (messaging, payments, LLM calls)
23+
24+
## Implementing Plugins
25+
26+
See the [Plugins guide](/develop/plugins-guide) for how to build and use plugins across all supported SDKs.

sidebars.js

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -851,23 +851,36 @@ module.exports = {
851851
},
852852
{
853853
type: 'category',
854-
label: 'Data Conversion',
854+
label: 'Extensibility',
855855
collapsed: true,
856856
link: {
857857
type: 'doc',
858-
id: 'encyclopedia/data-conversion/dataconversion',
858+
id: 'encyclopedia/extensibility',
859859
},
860860
items: [
861-
'encyclopedia/data-conversion/default-custom-data-converters',
862-
'encyclopedia/data-conversion/payload-converter',
863-
'encyclopedia/data-conversion/payload-codec',
864-
'encyclopedia/data-conversion/failure-converter',
865-
'encyclopedia/data-conversion/remote-data-encoding',
866-
'encyclopedia/data-conversion/codec-server',
867-
'encyclopedia/data-conversion/key-management',
861+
{
862+
type: 'category',
863+
label: 'Data Conversion',
864+
collapsed: true,
865+
link: {
866+
type: 'doc',
867+
id: 'encyclopedia/data-conversion/dataconversion',
868+
},
869+
items: [
870+
'encyclopedia/data-conversion/default-custom-data-converters',
871+
'encyclopedia/data-conversion/payload-converter',
872+
'encyclopedia/data-conversion/payload-codec',
873+
'encyclopedia/data-conversion/failure-converter',
874+
'encyclopedia/data-conversion/remote-data-encoding',
875+
'encyclopedia/data-conversion/codec-server',
876+
'encyclopedia/data-conversion/key-management',
877+
],
878+
},
879+
'encyclopedia/context-propagation',
880+
'encyclopedia/interceptors',
881+
'encyclopedia/plugins',
868882
],
869883
},
870-
'encyclopedia/context-propagation',
871884
'web-ui',
872885
],
873886
},

0 commit comments

Comments
 (0)