Docs
plugin
Plugins available for the Amfelt client.
Amfelt REST API · v1.13.0
· https://api.amfelt.com
GET
/v1/plugins
List available plugins.
Returns a page of plugins available for the Amfelt client, optionally filtered by category, name, operating system, architecture, or version.Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
category | query | No | string (enum: source, destination, synchronizer, transformer) | Category to filter by. |
Category to filter by. | ||||
names | query | No | string[] | Plugin names to filter by; repeat the parameter to pass multiple values. |
Plugin names to filter by; repeat the parameter to pass multiple values. | ||||
os | query | No | string (enum: darwin, linux, windows) | Operating system to filter by. |
Operating system to filter by. | ||||
arch | query | No | string (enum: amd64, arm64) | Architecture to filter by. |
Architecture to filter by. | ||||
version | query | No | string | Semantic version to filter by; use ’latest’ for the most recent version. |
Semantic version to filter by; use ’latest’ for the most recent version. | ||||
cursor | query | No | string | Opaque cursor for the next page; pass back the ’next_cursor’ from a prior response. |
Opaque cursor for the next page; pass back the ’next_cursor’ from a prior response. | ||||
limit | query | No | integer | Maximum number of items to return per page. |
Maximum number of items to return per page. | ||||
Responses
200
A page of plugins.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
data | Plugin [] | Yes | The page of plugins. |
The page of plugins. | |||
next_cursor | [string null] | No | Opaque cursor for the next page, or null when this is the final page. Examples: eyJpZCI6OTk5fQ. |
Opaque cursor for the next page, or null when this is the final page. Examples: eyJpZCI6OTk5fQ. | |||
400
The request was malformed or failed validation.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. |
Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. | |||
field | string | No | Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. |
Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. | |||
message | string | Yes | Human-readable description of the error. Examples: limit must be between 1 and 100. |
Human-readable description of the error. Examples: limit must be between 1 and 100. | |||
401
The request lacks valid credentials.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. |
Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. | |||
field | string | No | Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. |
Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. | |||
message | string | Yes | Human-readable description of the error. Examples: limit must be between 1 and 100. |
Human-readable description of the error. Examples: limit must be between 1 and 100. | |||
Security
bearer_jwt
GET
/v1/plugins/{plugin_name}
Find plugins by name.
Returns the releases of a single plugin matching the given name, optionally filtered by category, operating system, architecture, or version.Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
plugin_name | path | Yes | string | Name of the plugin. |
Name of the plugin. | ||||
category | query | No | string (enum: source, destination, synchronizer, transformer) | Category to filter by. |
Category to filter by. | ||||
os | query | No | string (enum: darwin, linux, windows) | Operating system to filter by. |
Operating system to filter by. | ||||
arch | query | No | string (enum: amd64, arm64) | Architecture to filter by. |
Architecture to filter by. | ||||
version | query | No | string | Semantic version to filter by; use ’latest’ for the most recent version. |
Semantic version to filter by; use ’latest’ for the most recent version. | ||||
cursor | query | No | string | Opaque cursor for the next page; pass back the ’next_cursor’ from a prior response. |
Opaque cursor for the next page; pass back the ’next_cursor’ from a prior response. | ||||
limit | query | No | integer | Maximum number of items to return per page. |
Maximum number of items to return per page. | ||||
Responses
200
A page of plugins matching the name.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
data | Plugin [] | Yes | The page of plugins. |
The page of plugins. | |||
next_cursor | [string null] | No | Opaque cursor for the next page, or null when this is the final page. Examples: eyJpZCI6OTk5fQ. |
Opaque cursor for the next page, or null when this is the final page. Examples: eyJpZCI6OTk5fQ. | |||
400
The request was malformed or failed validation.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. |
Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. | |||
field | string | No | Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. |
Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. | |||
message | string | Yes | Human-readable description of the error. Examples: limit must be between 1 and 100. |
Human-readable description of the error. Examples: limit must be between 1 and 100. | |||
401
The request lacks valid credentials.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. |
Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. | |||
field | string | No | Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. |
Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. | |||
message | string | Yes | Human-readable description of the error. Examples: limit must be between 1 and 100. |
Human-readable description of the error. Examples: limit must be between 1 and 100. | |||
404
The specified resource was not found.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. |
Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. | |||
field | string | No | Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. |
Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. | |||
message | string | Yes | Human-readable description of the error. Examples: limit must be between 1 and 100. |
Human-readable description of the error. Examples: limit must be between 1 and 100. | |||
Security
api_key, bearer_jwt
GET
/v1/assets/{asset_id}
Download a binary asset by ID.
Downloads a binary asset, or returns its metadata, for the given asset identifier.Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
asset_id | path | Yes | integer | Identifier of the asset. |
Identifier of the asset. | ||||
Responses
200
The binary asset, or its metadata.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
arch | string | Yes | Architecture supported by the asset. Valid values are: amd64, arm64. Examples: amd64. |
Architecture supported by the asset. Valid values are: amd64, arm64. Examples: amd64. | |||
checksum | string | No | Optional sha256 checksum of the asset archive. Examples: 2f1f366ae2307a9b9ae81b73abff5b2af8a1a1069284a73ee285a2bb6d55b8a0. |
Optional sha256 checksum of the asset archive. Examples: 2f1f366ae2307a9b9ae81b73abff5b2af8a1a1069284a73ee285a2bb6d55b8a0. | |||
content_type | string | Yes | Media type of the asset archive as defined by IANA media types (see
https://www.iana.org/assignments/media-types/media-types.xhtml
). Examples: application/g-tar. |
Media type of the asset archive as defined by IANA media types (see
https://www.iana.org/assignments/media-types/media-types.xhtml
). Examples: application/g-tar. | |||
filename | string | Yes | Filename of the asset archive. Examples: plugin-sdk_Linux_x86_64.tar.gz. |
Filename of the asset archive. Examples: plugin-sdk_Linux_x86_64.tar.gz. | |||
id | integer | Yes | Unique identifier of the asset. Examples: 10. |
Unique identifier of the asset. Examples: 10. | |||
os | string | Yes | Operating system supported by the asset. Valid values are: darwin, linux, windows. Examples: darwin. |
Operating system supported by the asset. Valid values are: darwin, linux, windows. Examples: darwin. | |||
size | integer | No | Size of the asset archive in bytes. Examples: 6527251. |
Size of the asset archive in bytes. Examples: 6527251. | |||
url | string | Yes | URL the asset can be downloaded from. Examples: https://github.com/amfeltlabs/hub/releases/download/source-plugin-sdk-v1.1.6/plugin-sdk_Linux_x86_64.tar.gz. |
URL the asset can be downloaded from. Examples: https://github.com/amfeltlabs/hub/releases/download/source-plugin-sdk-v1.1.6/plugin-sdk_Linux_x86_64.tar.gz. | |||
application/octet-stream
401
The request lacks valid credentials.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. |
Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. | |||
field | string | No | Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. |
Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. | |||
message | string | Yes | Human-readable description of the error. Examples: limit must be between 1 and 100. |
Human-readable description of the error. Examples: limit must be between 1 and 100. | |||
404
The specified resource was not found.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. |
Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. | |||
field | string | No | Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. |
Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. | |||
message | string | Yes | Human-readable description of the error. Examples: limit must be between 1 and 100. |
Human-readable description of the error. Examples: limit must be between 1 and 100. | |||
Security
api_key, bearer_jwt
GET
/v1/plugins/{plugin_name}/{version}/assets/{asset_id}
Download a plugin binary asset by ID.
Downloads a plugin’s binary asset, or returns its metadata, for the given plugin name, version, and asset identifier.Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
plugin_name | path | Yes | string | Name of the plugin. |
Name of the plugin. | ||||
version | path | Yes | string | Semantic version of the plugin; use ’latest’ for the most recent version. |
Semantic version of the plugin; use ’latest’ for the most recent version. | ||||
asset_id | path | Yes | integer | Identifier of the asset. |
Identifier of the asset. | ||||
Responses
200
The binary asset, or its metadata.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
arch | string | Yes | Architecture supported by the asset. Valid values are: amd64, arm64. Examples: amd64. |
Architecture supported by the asset. Valid values are: amd64, arm64. Examples: amd64. | |||
checksum | string | No | Optional sha256 checksum of the asset archive. Examples: 2f1f366ae2307a9b9ae81b73abff5b2af8a1a1069284a73ee285a2bb6d55b8a0. |
Optional sha256 checksum of the asset archive. Examples: 2f1f366ae2307a9b9ae81b73abff5b2af8a1a1069284a73ee285a2bb6d55b8a0. | |||
content_type | string | Yes | Media type of the asset archive as defined by IANA media types (see
https://www.iana.org/assignments/media-types/media-types.xhtml
). Examples: application/g-tar. |
Media type of the asset archive as defined by IANA media types (see
https://www.iana.org/assignments/media-types/media-types.xhtml
). Examples: application/g-tar. | |||
filename | string | Yes | Filename of the asset archive. Examples: plugin-sdk_Linux_x86_64.tar.gz. |
Filename of the asset archive. Examples: plugin-sdk_Linux_x86_64.tar.gz. | |||
id | integer | Yes | Unique identifier of the asset. Examples: 10. |
Unique identifier of the asset. Examples: 10. | |||
os | string | Yes | Operating system supported by the asset. Valid values are: darwin, linux, windows. Examples: darwin. |
Operating system supported by the asset. Valid values are: darwin, linux, windows. Examples: darwin. | |||
size | integer | No | Size of the asset archive in bytes. Examples: 6527251. |
Size of the asset archive in bytes. Examples: 6527251. | |||
url | string | Yes | URL the asset can be downloaded from. Examples: https://github.com/amfeltlabs/hub/releases/download/source-plugin-sdk-v1.1.6/plugin-sdk_Linux_x86_64.tar.gz. |
URL the asset can be downloaded from. Examples: https://github.com/amfeltlabs/hub/releases/download/source-plugin-sdk-v1.1.6/plugin-sdk_Linux_x86_64.tar.gz. | |||
application/octet-stream
401
The request lacks valid credentials.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. |
Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. | |||
field | string | No | Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. |
Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. | |||
message | string | Yes | Human-readable description of the error. Examples: limit must be between 1 and 100. |
Human-readable description of the error. Examples: limit must be between 1 and 100. | |||
404
The specified resource was not found.
application/json
| Property | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. |
Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. | |||
field | string | No | Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. |
Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. | |||
message | string | Yes | Human-readable description of the error. Examples: limit must be between 1 and 100. |
Human-readable description of the error. Examples: limit must be between 1 and 100. | |||
Security
api_key, bearer_jwt
Schemas
Plugin List
type: PluginList
A page of plugins.
| Property | Type | Required | Description |
|---|---|---|---|
data | Plugin [] | Yes | The page of plugins. |
The page of plugins. | |||
next_cursor | [string null] | No | Opaque cursor for the next page, or null when this is the final page. Examples: eyJpZCI6OTk5fQ. |
Opaque cursor for the next page, or null when this is the final page. Examples: eyJpZCI6OTk5fQ. | |||
Plugin
type: Plugin
| Property | Type | Required | Description |
|---|---|---|---|
assets | Asset [] | Yes | Downloadable assets related to the plugin release. |
Downloadable assets related to the plugin release. | |||
category | string | Yes | Category of the plugin. Valid values are: source, destination, synchronizer, transformer. Examples: source. |
Category of the plugin. Valid values are: source, destination, synchronizer, transformer. Examples: source. | |||
id | integer | Yes | Unique identifier of the plugin. Examples: 10. |
Unique identifier of the plugin. Examples: 10. | |||
name | string | Yes | Name of the plugin in snake case, including the category prefix and without a version suffix. Examples: postgres. |
Name of the plugin in snake case, including the category prefix and without a version suffix. Examples: postgres. | |||
prerelease | boolean | Yes | Whether the release is a prerelease rather than a full release. Examples: false. |
Whether the release is a prerelease rather than a full release. Examples: false. | |||
published_at | string | Yes | Timestamp when the plugin was released. Examples: 2025-02-04T18:11:08Z. |
Timestamp when the plugin was released. Examples: 2025-02-04T18:11:08Z. | |||
version | string | Yes | Semantic version of the plugin, without a ‘v’ prefix. Examples: 1.1.0. |
Semantic version of the plugin, without a ‘v’ prefix. Examples: 1.1.0. | |||
Asset
type: Asset
| Property | Type | Required | Description |
|---|---|---|---|
arch | string | Yes | Architecture supported by the asset. Valid values are: amd64, arm64. Examples: amd64. |
Architecture supported by the asset. Valid values are: amd64, arm64. Examples: amd64. | |||
checksum | string | No | Optional sha256 checksum of the asset archive. Examples: 2f1f366ae2307a9b9ae81b73abff5b2af8a1a1069284a73ee285a2bb6d55b8a0. |
Optional sha256 checksum of the asset archive. Examples: 2f1f366ae2307a9b9ae81b73abff5b2af8a1a1069284a73ee285a2bb6d55b8a0. | |||
content_type | string | Yes | Media type of the asset archive as defined by IANA media types (see
https://www.iana.org/assignments/media-types/media-types.xhtml
). Examples: application/g-tar. |
Media type of the asset archive as defined by IANA media types (see
https://www.iana.org/assignments/media-types/media-types.xhtml
). Examples: application/g-tar. | |||
filename | string | Yes | Filename of the asset archive. Examples: plugin-sdk_Linux_x86_64.tar.gz. |
Filename of the asset archive. Examples: plugin-sdk_Linux_x86_64.tar.gz. | |||
id | integer | Yes | Unique identifier of the asset. Examples: 10. |
Unique identifier of the asset. Examples: 10. | |||
os | string | Yes | Operating system supported by the asset. Valid values are: darwin, linux, windows. Examples: darwin. |
Operating system supported by the asset. Valid values are: darwin, linux, windows. Examples: darwin. | |||
size | integer | No | Size of the asset archive in bytes. Examples: 6527251. |
Size of the asset archive in bytes. Examples: 6527251. | |||
url | string | Yes | URL the asset can be downloaded from. Examples: https://github.com/amfeltlabs/hub/releases/download/source-plugin-sdk-v1.1.6/plugin-sdk_Linux_x86_64.tar.gz. |
URL the asset can be downloaded from. Examples: https://github.com/amfeltlabs/hub/releases/download/source-plugin-sdk-v1.1.6/plugin-sdk_Linux_x86_64.tar.gz. | |||
Error
type: Error
The standard error envelope returned by every non-2xx response.
| Property | Type | Required | Description |
|---|---|---|---|
code | string | Yes | Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. |
Stable, snake_case token identifying the error condition. See ErrorCode for the api’s canonical named vocabulary — this field is deliberately not restricted to it, since handlers may emit other ad-hoc codes not listed there (e.g. not_implemented). Examples: invalid_argument. | |||
field | string | No | Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. |
Optional hint identifying the request field the error refers to, in snake_case (e.g. “slug”, “display_name”, “token”). Set by handlers that validate multiple fields and want to enable field-targeted UX in clients. Absent when the error does not map to a single field. Examples: slug. | |||
message | string | Yes | Human-readable description of the error. Examples: limit must be between 1 and 100. |
Human-readable description of the error. Examples: limit must be between 1 and 100. | |||
Last updated on October 31, 2026