From 7a06df9e9b745ac92a9dac6dd6971eb7b6e42e58 Mon Sep 17 00:00:00 2001
From: Wes <wesbillman@users.noreply.github.com>
Date: Thu, 15 Feb 2024 18:02:12 -0700
Subject: [PATCH] fix: switch `alias` to `json` (#22)

---
 go/http/go.mod                                |  2 +-
 go/http/go.sum                                |  4 +-
 go/http/http.go                               | 24 ++++----
 .../src/main/kotlin/ftl/http/Http.kt          | 24 ++++----
 online-boutique/backend/services/ad/go.mod    |  2 +-
 online-boutique/backend/services/ad/go.sum    |  4 +-
 online-boutique/backend/services/cart/go.mod  |  2 +-
 online-boutique/backend/services/cart/go.sum  |  4 +-
 .../backend/services/checkout/checkout.go     |  2 +-
 .../backend/services/checkout/go.mod          |  2 +-
 .../backend/services/checkout/go.sum          |  4 +-
 .../backend/services/currency/go.mod          |  2 +-
 .../backend/services/currency/go.sum          |  4 +-
 .../backend/services/payment/go.mod           |  2 +-
 .../backend/services/payment/go.sum           |  4 +-
 .../backend/services/payment/payment.go       |  2 +-
 .../backend/services/productcatalog/go.mod    |  2 +-
 .../backend/services/productcatalog/go.sum    |  4 +-
 .../services/productcatalog/productcatalog.go |  2 +-
 .../backend/services/recommendation/go.mod    |  2 +-
 .../backend/services/recommendation/go.sum    |  4 +-
 .../services/recommendation/recommendation.go |  2 +-
 .../backend/services/shipping/go.mod          |  2 +-
 .../backend/services/shipping/go.sum          |  4 +-
 online-boutique/mobile/pubspec.lock           | 58 +++++++++----------
 25 files changed, 84 insertions(+), 84 deletions(-)

diff --git a/go/http/go.mod b/go/http/go.mod
index d28a22cd..bb59b41d 100644
--- a/go/http/go.mod
+++ b/go/http/go.mod
@@ -2,7 +2,7 @@ module ftl/http
 
 go 1.22.0
 
-require github.com/TBD54566975/ftl v0.126.0
+require github.com/TBD54566975/ftl v0.128.1
 
 require (
 	connectrpc.com/connect v1.14.0 // indirect
diff --git a/go/http/go.sum b/go/http/go.sum
index 85eae5d8..bc60d8cb 100644
--- a/go/http/go.sum
+++ b/go/http/go.sum
@@ -4,8 +4,8 @@ connectrpc.com/grpcreflect v1.2.0 h1:Q6og1S7HinmtbEuBvARLNwYmTbhEGRpHDhqrPNlmK+U
 connectrpc.com/grpcreflect v1.2.0/go.mod h1:nwSOKmE8nU5u/CidgHtPYk1PFI3U9ignz7iDMxOYkSY=
 connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY=
 connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc=
-github.com/TBD54566975/ftl v0.126.0 h1:KBrV51p4ZUHSB3qJ21pm5YHdwzGpl6Wrjpy+pJKFCTw=
-github.com/TBD54566975/ftl v0.126.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
+github.com/TBD54566975/ftl v0.128.1 h1:oQCHZ+r3K1lcuMYjoQ3V1E0XD2Rhc5i3psC/4x/Pba4=
+github.com/TBD54566975/ftl v0.128.1/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
 github.com/alecthomas/assert/v2 v2.5.0 h1:OJKYg53BQx06/bMRBSPDCO49CbCDNiUQXwdoNrt6x5w=
 github.com/alecthomas/assert/v2 v2.5.0/go.mod h1:fw5suVxB+wfYJ3291t0hRTqtGzFYdSwstnRQdaQx2DM=
 github.com/alecthomas/concurrency v0.0.2 h1:Q3kGPtLbleMbH9lHX5OBFvJygfyFw29bXZKBg+IEVuo=
diff --git a/go/http/http.go b/go/http/http.go
index b370c483..be9cd5ef 100644
--- a/go/http/http.go
+++ b/go/http/http.go
@@ -11,21 +11,21 @@ import (
 )
 
 type GetRequest struct {
-	UserID string `alias:"userId"`
-	PostID string `alias:"postId"`
+	UserID string `json:"userId"`
+	PostID string `json:"postId"`
 }
 
 type Nested struct {
-	GoodStuff string `alias:"good_stuff"`
+	GoodStuff string `json:"good_stuff,omitempty"`
 }
 
 type GetResponse struct {
-	Message string `alias:"msg"`
-	Nested  Nested `alias:"nested"`
+	Message string `json:"msg"`
+	Nested  Nested `json:"nested"`
 }
 
 type ErrorResponse struct {
-	Error string `alias:"error"`
+	Error string `json:"error"`
 }
 
 // Example:       curl -i http://localhost:8892/ingress/http/users/123/posts?postId=456
@@ -52,12 +52,12 @@ func Get(ctx context.Context, req builtin.HttpRequest[GetRequest]) (builtin.Http
 }
 
 type PostRequest struct {
-	UserID int `alias:"user_id"`
-	PostID int `alias:"post_id"`
+	UserID int `json:"user_id"`
+	PostID int `json:"post_id"`
 }
 
 type PostResponse struct {
-	Success bool `alias:"success"`
+	Success bool `json:"success"`
 }
 
 // Example: curl -i --json '{"user_id": 123, "post_id": 345}' http://localhost:8892/ingress/http/users
@@ -73,8 +73,8 @@ func Post(ctx context.Context, req builtin.HttpRequest[PostRequest]) (builtin.Ht
 }
 
 type PutRequest struct {
-	UserID string `alias:"userId"`
-	PostID string `alias:"postId"`
+	UserID string `json:"userId,omitempty"`
+	PostID string `json:"postId"`
 }
 
 type PutResponse struct{}
@@ -91,7 +91,7 @@ func Put(ctx context.Context, req builtin.HttpRequest[PutRequest]) (builtin.Http
 }
 
 type DeleteRequest struct {
-	UserID string `alias:"userId"`
+	UserID string `json:"userId"`
 }
 
 type DeleteResponse struct{}
diff --git a/kotlin/ftl-module-http/src/main/kotlin/ftl/http/Http.kt b/kotlin/ftl-module-http/src/main/kotlin/ftl/http/Http.kt
index 9833e348..7ee9dae9 100644
--- a/kotlin/ftl-module-http/src/main/kotlin/ftl/http/Http.kt
+++ b/kotlin/ftl-module-http/src/main/kotlin/ftl/http/Http.kt
@@ -4,42 +4,42 @@ import ftl.builtin.Empty
 import ftl.builtin.HttpRequest
 import ftl.builtin.HttpResponse
 import kotlin.String
-import xyz.block.ftl.Alias
+import xyz.block.ftl.Json
 import xyz.block.ftl.Context
 import xyz.block.ftl.HttpIngress
 import xyz.block.ftl.Method
 import xyz.block.ftl.Verb
 
 data class GetRequest(
-    @Alias("userId") val userID: String,
-    @Alias("postId") val postID: String,
+    @Json("userId") val userID: String,
+    @Json("postId") val postID: String,
 )
 
 data class Nested(
-    @Alias("good_stuff") val goodStuff: String,
+    @Json("good_stuff") val goodStuff: String,
 )
 
 data class GetResponse(
-    @Alias("msg") val message: String,
-    @Alias("nested") val nested: Nested,
+    @Json("msg") val message: String,
+    @Json("nested") val nested: Nested,
 )
 
 data class PostRequest(
-    @Alias("user_id") val userId: Int,
-    @Alias("post_id") val postId: Int,
+    @Json("user_id") val userId: Int,
+    @Json("post_id") val postId: Int,
 )
 
 data class PostResponse(
-    @Alias("success") val success: Boolean,
+    @Json("success") val success: Boolean,
 )
 
 data class PutRequest(
-    @Alias("userId") val userID: String,
-    @Alias("postId") val postID: String,
+    @Json("userId") val userID: String,
+    @Json("postId") val postID: String,
 )
 
 data class DeleteRequest(
-    @Alias("userId") val userID: String,
+    @Json("userId") val userID: String,
 )
 
 // Example:       curl -i http://localhost:8892/ingress/http/users/123/posts?postId=456
diff --git a/online-boutique/backend/services/ad/go.mod b/online-boutique/backend/services/ad/go.mod
index 5c564023..cce716ea 100644
--- a/online-boutique/backend/services/ad/go.mod
+++ b/online-boutique/backend/services/ad/go.mod
@@ -5,7 +5,7 @@ go 1.22.0
 replace github.com/TBD54566975/ftl/examples/online-boutique => ../..
 
 require (
-	github.com/TBD54566975/ftl v0.126.0
+	github.com/TBD54566975/ftl v0.128.0
 	github.com/TBD54566975/ftl/examples/online-boutique v0.0.0-00010101000000-000000000000
 	golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3
 )
diff --git a/online-boutique/backend/services/ad/go.sum b/online-boutique/backend/services/ad/go.sum
index 85eae5d8..8ae07325 100644
--- a/online-boutique/backend/services/ad/go.sum
+++ b/online-boutique/backend/services/ad/go.sum
@@ -4,8 +4,8 @@ connectrpc.com/grpcreflect v1.2.0 h1:Q6og1S7HinmtbEuBvARLNwYmTbhEGRpHDhqrPNlmK+U
 connectrpc.com/grpcreflect v1.2.0/go.mod h1:nwSOKmE8nU5u/CidgHtPYk1PFI3U9ignz7iDMxOYkSY=
 connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY=
 connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc=
-github.com/TBD54566975/ftl v0.126.0 h1:KBrV51p4ZUHSB3qJ21pm5YHdwzGpl6Wrjpy+pJKFCTw=
-github.com/TBD54566975/ftl v0.126.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
+github.com/TBD54566975/ftl v0.128.0 h1:XhcFNjpyqrkEQWb4z2u/0opMBJN6OUPi9u+xyubrvtA=
+github.com/TBD54566975/ftl v0.128.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
 github.com/alecthomas/assert/v2 v2.5.0 h1:OJKYg53BQx06/bMRBSPDCO49CbCDNiUQXwdoNrt6x5w=
 github.com/alecthomas/assert/v2 v2.5.0/go.mod h1:fw5suVxB+wfYJ3291t0hRTqtGzFYdSwstnRQdaQx2DM=
 github.com/alecthomas/concurrency v0.0.2 h1:Q3kGPtLbleMbH9lHX5OBFvJygfyFw29bXZKBg+IEVuo=
diff --git a/online-boutique/backend/services/cart/go.mod b/online-boutique/backend/services/cart/go.mod
index 49f5c702..4fb1075c 100644
--- a/online-boutique/backend/services/cart/go.mod
+++ b/online-boutique/backend/services/cart/go.mod
@@ -5,7 +5,7 @@ go 1.22.0
 replace github.com/TBD54566975/ftl/examples/online-boutique => ../..
 
 require (
-	github.com/TBD54566975/ftl v0.126.0
+	github.com/TBD54566975/ftl v0.128.0
 	github.com/hashicorp/golang-lru/v2 v2.0.7
 )
 
diff --git a/online-boutique/backend/services/cart/go.sum b/online-boutique/backend/services/cart/go.sum
index b01ce4ea..93b93c13 100644
--- a/online-boutique/backend/services/cart/go.sum
+++ b/online-boutique/backend/services/cart/go.sum
@@ -4,8 +4,8 @@ connectrpc.com/grpcreflect v1.2.0 h1:Q6og1S7HinmtbEuBvARLNwYmTbhEGRpHDhqrPNlmK+U
 connectrpc.com/grpcreflect v1.2.0/go.mod h1:nwSOKmE8nU5u/CidgHtPYk1PFI3U9ignz7iDMxOYkSY=
 connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY=
 connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc=
-github.com/TBD54566975/ftl v0.126.0 h1:KBrV51p4ZUHSB3qJ21pm5YHdwzGpl6Wrjpy+pJKFCTw=
-github.com/TBD54566975/ftl v0.126.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
+github.com/TBD54566975/ftl v0.128.0 h1:XhcFNjpyqrkEQWb4z2u/0opMBJN6OUPi9u+xyubrvtA=
+github.com/TBD54566975/ftl v0.128.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
 github.com/alecthomas/assert/v2 v2.5.0 h1:OJKYg53BQx06/bMRBSPDCO49CbCDNiUQXwdoNrt6x5w=
 github.com/alecthomas/assert/v2 v2.5.0/go.mod h1:fw5suVxB+wfYJ3291t0hRTqtGzFYdSwstnRQdaQx2DM=
 github.com/alecthomas/concurrency v0.0.2 h1:Q3kGPtLbleMbH9lHX5OBFvJygfyFw29bXZKBg+IEVuo=
diff --git a/online-boutique/backend/services/checkout/checkout.go b/online-boutique/backend/services/checkout/checkout.go
index 4874c1a9..0020c68f 100644
--- a/online-boutique/backend/services/checkout/checkout.go
+++ b/online-boutique/backend/services/checkout/checkout.go
@@ -43,7 +43,7 @@ type Order struct {
 }
 
 type ErrorResponse struct {
-	Message string `alias:"message"`
+	Message string `json:"message"`
 }
 
 //ftl:verb
diff --git a/online-boutique/backend/services/checkout/go.mod b/online-boutique/backend/services/checkout/go.mod
index 0db180be..72c4fe63 100644
--- a/online-boutique/backend/services/checkout/go.mod
+++ b/online-boutique/backend/services/checkout/go.mod
@@ -5,7 +5,7 @@ go 1.22.0
 replace github.com/TBD54566975/ftl/examples/online-boutique => ../..
 
 require (
-	github.com/TBD54566975/ftl v0.126.0
+	github.com/TBD54566975/ftl v0.128.0
 	github.com/TBD54566975/ftl/examples/online-boutique v0.0.0-00010101000000-000000000000
 	github.com/google/uuid v1.6.0
 )
diff --git a/online-boutique/backend/services/checkout/go.sum b/online-boutique/backend/services/checkout/go.sum
index 85eae5d8..8ae07325 100644
--- a/online-boutique/backend/services/checkout/go.sum
+++ b/online-boutique/backend/services/checkout/go.sum
@@ -4,8 +4,8 @@ connectrpc.com/grpcreflect v1.2.0 h1:Q6og1S7HinmtbEuBvARLNwYmTbhEGRpHDhqrPNlmK+U
 connectrpc.com/grpcreflect v1.2.0/go.mod h1:nwSOKmE8nU5u/CidgHtPYk1PFI3U9ignz7iDMxOYkSY=
 connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY=
 connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc=
-github.com/TBD54566975/ftl v0.126.0 h1:KBrV51p4ZUHSB3qJ21pm5YHdwzGpl6Wrjpy+pJKFCTw=
-github.com/TBD54566975/ftl v0.126.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
+github.com/TBD54566975/ftl v0.128.0 h1:XhcFNjpyqrkEQWb4z2u/0opMBJN6OUPi9u+xyubrvtA=
+github.com/TBD54566975/ftl v0.128.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
 github.com/alecthomas/assert/v2 v2.5.0 h1:OJKYg53BQx06/bMRBSPDCO49CbCDNiUQXwdoNrt6x5w=
 github.com/alecthomas/assert/v2 v2.5.0/go.mod h1:fw5suVxB+wfYJ3291t0hRTqtGzFYdSwstnRQdaQx2DM=
 github.com/alecthomas/concurrency v0.0.2 h1:Q3kGPtLbleMbH9lHX5OBFvJygfyFw29bXZKBg+IEVuo=
diff --git a/online-boutique/backend/services/currency/go.mod b/online-boutique/backend/services/currency/go.mod
index ccb27f35..086df9bc 100644
--- a/online-boutique/backend/services/currency/go.mod
+++ b/online-boutique/backend/services/currency/go.mod
@@ -5,7 +5,7 @@ go 1.22.0
 replace github.com/TBD54566975/ftl/examples/online-boutique => ../..
 
 require (
-	github.com/TBD54566975/ftl v0.126.0
+	github.com/TBD54566975/ftl v0.128.0
 	github.com/TBD54566975/ftl/examples/online-boutique v0.0.0-00010101000000-000000000000
 	golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3
 )
diff --git a/online-boutique/backend/services/currency/go.sum b/online-boutique/backend/services/currency/go.sum
index 85eae5d8..8ae07325 100644
--- a/online-boutique/backend/services/currency/go.sum
+++ b/online-boutique/backend/services/currency/go.sum
@@ -4,8 +4,8 @@ connectrpc.com/grpcreflect v1.2.0 h1:Q6og1S7HinmtbEuBvARLNwYmTbhEGRpHDhqrPNlmK+U
 connectrpc.com/grpcreflect v1.2.0/go.mod h1:nwSOKmE8nU5u/CidgHtPYk1PFI3U9ignz7iDMxOYkSY=
 connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY=
 connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc=
-github.com/TBD54566975/ftl v0.126.0 h1:KBrV51p4ZUHSB3qJ21pm5YHdwzGpl6Wrjpy+pJKFCTw=
-github.com/TBD54566975/ftl v0.126.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
+github.com/TBD54566975/ftl v0.128.0 h1:XhcFNjpyqrkEQWb4z2u/0opMBJN6OUPi9u+xyubrvtA=
+github.com/TBD54566975/ftl v0.128.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
 github.com/alecthomas/assert/v2 v2.5.0 h1:OJKYg53BQx06/bMRBSPDCO49CbCDNiUQXwdoNrt6x5w=
 github.com/alecthomas/assert/v2 v2.5.0/go.mod h1:fw5suVxB+wfYJ3291t0hRTqtGzFYdSwstnRQdaQx2DM=
 github.com/alecthomas/concurrency v0.0.2 h1:Q3kGPtLbleMbH9lHX5OBFvJygfyFw29bXZKBg+IEVuo=
diff --git a/online-boutique/backend/services/payment/go.mod b/online-boutique/backend/services/payment/go.mod
index 6c0c44b6..3566e0b9 100644
--- a/online-boutique/backend/services/payment/go.mod
+++ b/online-boutique/backend/services/payment/go.mod
@@ -5,7 +5,7 @@ go 1.22.0
 replace github.com/TBD54566975/ftl/examples/online-boutique => ../..
 
 require (
-	github.com/TBD54566975/ftl v0.126.0
+	github.com/TBD54566975/ftl v0.128.0
 	github.com/google/uuid v1.6.0
 )
 
diff --git a/online-boutique/backend/services/payment/go.sum b/online-boutique/backend/services/payment/go.sum
index 85eae5d8..8ae07325 100644
--- a/online-boutique/backend/services/payment/go.sum
+++ b/online-boutique/backend/services/payment/go.sum
@@ -4,8 +4,8 @@ connectrpc.com/grpcreflect v1.2.0 h1:Q6og1S7HinmtbEuBvARLNwYmTbhEGRpHDhqrPNlmK+U
 connectrpc.com/grpcreflect v1.2.0/go.mod h1:nwSOKmE8nU5u/CidgHtPYk1PFI3U9ignz7iDMxOYkSY=
 connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY=
 connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc=
-github.com/TBD54566975/ftl v0.126.0 h1:KBrV51p4ZUHSB3qJ21pm5YHdwzGpl6Wrjpy+pJKFCTw=
-github.com/TBD54566975/ftl v0.126.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
+github.com/TBD54566975/ftl v0.128.0 h1:XhcFNjpyqrkEQWb4z2u/0opMBJN6OUPi9u+xyubrvtA=
+github.com/TBD54566975/ftl v0.128.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
 github.com/alecthomas/assert/v2 v2.5.0 h1:OJKYg53BQx06/bMRBSPDCO49CbCDNiUQXwdoNrt6x5w=
 github.com/alecthomas/assert/v2 v2.5.0/go.mod h1:fw5suVxB+wfYJ3291t0hRTqtGzFYdSwstnRQdaQx2DM=
 github.com/alecthomas/concurrency v0.0.2 h1:Q3kGPtLbleMbH9lHX5OBFvJygfyFw29bXZKBg+IEVuo=
diff --git a/online-boutique/backend/services/payment/payment.go b/online-boutique/backend/services/payment/payment.go
index 8eb66561..a65829d8 100644
--- a/online-boutique/backend/services/payment/payment.go
+++ b/online-boutique/backend/services/payment/payment.go
@@ -16,7 +16,7 @@ import (
 )
 
 type ErrorResponse struct {
-	Message string `alias:"message"`
+	Message string `json:"message"`
 }
 
 type CreditCardInfo struct {
diff --git a/online-boutique/backend/services/productcatalog/go.mod b/online-boutique/backend/services/productcatalog/go.mod
index fec3e322..ce58c518 100644
--- a/online-boutique/backend/services/productcatalog/go.mod
+++ b/online-boutique/backend/services/productcatalog/go.mod
@@ -5,7 +5,7 @@ go 1.22.0
 replace github.com/TBD54566975/ftl/examples/online-boutique => ../..
 
 require (
-	github.com/TBD54566975/ftl v0.126.0
+	github.com/TBD54566975/ftl v0.128.0
 	github.com/TBD54566975/ftl/examples/online-boutique v0.0.0-00010101000000-000000000000
 )
 
diff --git a/online-boutique/backend/services/productcatalog/go.sum b/online-boutique/backend/services/productcatalog/go.sum
index 85eae5d8..8ae07325 100644
--- a/online-boutique/backend/services/productcatalog/go.sum
+++ b/online-boutique/backend/services/productcatalog/go.sum
@@ -4,8 +4,8 @@ connectrpc.com/grpcreflect v1.2.0 h1:Q6og1S7HinmtbEuBvARLNwYmTbhEGRpHDhqrPNlmK+U
 connectrpc.com/grpcreflect v1.2.0/go.mod h1:nwSOKmE8nU5u/CidgHtPYk1PFI3U9ignz7iDMxOYkSY=
 connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY=
 connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc=
-github.com/TBD54566975/ftl v0.126.0 h1:KBrV51p4ZUHSB3qJ21pm5YHdwzGpl6Wrjpy+pJKFCTw=
-github.com/TBD54566975/ftl v0.126.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
+github.com/TBD54566975/ftl v0.128.0 h1:XhcFNjpyqrkEQWb4z2u/0opMBJN6OUPi9u+xyubrvtA=
+github.com/TBD54566975/ftl v0.128.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
 github.com/alecthomas/assert/v2 v2.5.0 h1:OJKYg53BQx06/bMRBSPDCO49CbCDNiUQXwdoNrt6x5w=
 github.com/alecthomas/assert/v2 v2.5.0/go.mod h1:fw5suVxB+wfYJ3291t0hRTqtGzFYdSwstnRQdaQx2DM=
 github.com/alecthomas/concurrency v0.0.2 h1:Q3kGPtLbleMbH9lHX5OBFvJygfyFw29bXZKBg+IEVuo=
diff --git a/online-boutique/backend/services/productcatalog/productcatalog.go b/online-boutique/backend/services/productcatalog/productcatalog.go
index 7c434bb7..a771ba45 100644
--- a/online-boutique/backend/services/productcatalog/productcatalog.go
+++ b/online-boutique/backend/services/productcatalog/productcatalog.go
@@ -39,7 +39,7 @@ type ListResponse struct {
 }
 
 type ErrorResponse struct {
-	Message string `alias:"message"`
+	Message string `json:"message"`
 }
 
 //ftl:verb
diff --git a/online-boutique/backend/services/recommendation/go.mod b/online-boutique/backend/services/recommendation/go.mod
index 5472f8c3..d7ad5f0b 100644
--- a/online-boutique/backend/services/recommendation/go.mod
+++ b/online-boutique/backend/services/recommendation/go.mod
@@ -4,7 +4,7 @@ go 1.22.0
 
 replace github.com/TBD54566975/ftl/examples/online-boutique => ../..
 
-require github.com/TBD54566975/ftl v0.126.0
+require github.com/TBD54566975/ftl v0.128.0
 
 require (
 	connectrpc.com/connect v1.14.0 // indirect
diff --git a/online-boutique/backend/services/recommendation/go.sum b/online-boutique/backend/services/recommendation/go.sum
index 85eae5d8..8ae07325 100644
--- a/online-boutique/backend/services/recommendation/go.sum
+++ b/online-boutique/backend/services/recommendation/go.sum
@@ -4,8 +4,8 @@ connectrpc.com/grpcreflect v1.2.0 h1:Q6og1S7HinmtbEuBvARLNwYmTbhEGRpHDhqrPNlmK+U
 connectrpc.com/grpcreflect v1.2.0/go.mod h1:nwSOKmE8nU5u/CidgHtPYk1PFI3U9ignz7iDMxOYkSY=
 connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY=
 connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc=
-github.com/TBD54566975/ftl v0.126.0 h1:KBrV51p4ZUHSB3qJ21pm5YHdwzGpl6Wrjpy+pJKFCTw=
-github.com/TBD54566975/ftl v0.126.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
+github.com/TBD54566975/ftl v0.128.0 h1:XhcFNjpyqrkEQWb4z2u/0opMBJN6OUPi9u+xyubrvtA=
+github.com/TBD54566975/ftl v0.128.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
 github.com/alecthomas/assert/v2 v2.5.0 h1:OJKYg53BQx06/bMRBSPDCO49CbCDNiUQXwdoNrt6x5w=
 github.com/alecthomas/assert/v2 v2.5.0/go.mod h1:fw5suVxB+wfYJ3291t0hRTqtGzFYdSwstnRQdaQx2DM=
 github.com/alecthomas/concurrency v0.0.2 h1:Q3kGPtLbleMbH9lHX5OBFvJygfyFw29bXZKBg+IEVuo=
diff --git a/online-boutique/backend/services/recommendation/recommendation.go b/online-boutique/backend/services/recommendation/recommendation.go
index b9099027..92c8936e 100644
--- a/online-boutique/backend/services/recommendation/recommendation.go
+++ b/online-boutique/backend/services/recommendation/recommendation.go
@@ -22,7 +22,7 @@ type ListResponse struct {
 }
 
 type ErrorResponse struct {
-	Message string `alias:"message"`
+	Message string `json:"message"`
 }
 
 //ftl:verb
diff --git a/online-boutique/backend/services/shipping/go.mod b/online-boutique/backend/services/shipping/go.mod
index 938f3e6a..3f674a25 100644
--- a/online-boutique/backend/services/shipping/go.mod
+++ b/online-boutique/backend/services/shipping/go.mod
@@ -4,7 +4,7 @@ go 1.22.0
 
 replace github.com/TBD54566975/ftl/examples/online-boutique => ../..
 
-require github.com/TBD54566975/ftl v0.126.0
+require github.com/TBD54566975/ftl v0.128.0
 
 require (
 	connectrpc.com/connect v1.14.0 // indirect
diff --git a/online-boutique/backend/services/shipping/go.sum b/online-boutique/backend/services/shipping/go.sum
index 85eae5d8..8ae07325 100644
--- a/online-boutique/backend/services/shipping/go.sum
+++ b/online-boutique/backend/services/shipping/go.sum
@@ -4,8 +4,8 @@ connectrpc.com/grpcreflect v1.2.0 h1:Q6og1S7HinmtbEuBvARLNwYmTbhEGRpHDhqrPNlmK+U
 connectrpc.com/grpcreflect v1.2.0/go.mod h1:nwSOKmE8nU5u/CidgHtPYk1PFI3U9ignz7iDMxOYkSY=
 connectrpc.com/otelconnect v0.7.0 h1:ZH55ZZtcJOTKWWLy3qmL4Pam4RzRWBJFOqTPyAqCXkY=
 connectrpc.com/otelconnect v0.7.0/go.mod h1:Bt2ivBymHZHqxvo4HkJ0EwHuUzQN6k2l0oH+mp/8nwc=
-github.com/TBD54566975/ftl v0.126.0 h1:KBrV51p4ZUHSB3qJ21pm5YHdwzGpl6Wrjpy+pJKFCTw=
-github.com/TBD54566975/ftl v0.126.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
+github.com/TBD54566975/ftl v0.128.0 h1:XhcFNjpyqrkEQWb4z2u/0opMBJN6OUPi9u+xyubrvtA=
+github.com/TBD54566975/ftl v0.128.0/go.mod h1:Bu14npLonDVivxgmKEsas49qzLOf3yrfB4KrM6Ey4RE=
 github.com/alecthomas/assert/v2 v2.5.0 h1:OJKYg53BQx06/bMRBSPDCO49CbCDNiUQXwdoNrt6x5w=
 github.com/alecthomas/assert/v2 v2.5.0/go.mod h1:fw5suVxB+wfYJ3291t0hRTqtGzFYdSwstnRQdaQx2DM=
 github.com/alecthomas/concurrency v0.0.2 h1:Q3kGPtLbleMbH9lHX5OBFvJygfyFw29bXZKBg+IEVuo=
diff --git a/online-boutique/mobile/pubspec.lock b/online-boutique/mobile/pubspec.lock
index e372c87b..d0db58cc 100644
--- a/online-boutique/mobile/pubspec.lock
+++ b/online-boutique/mobile/pubspec.lock
@@ -90,10 +90,10 @@ packages:
     dependency: "direct main"
     description:
       name: flutter_hooks
-      sha256: "7c8db779c2d1010aa7f9ea3fbefe8f86524fcb87b69e8b0af31e1a4b55422dec"
+      sha256: cde36b12f7188c85286fba9b38cc5a902e7279f36dd676967106c041dc9dde70
       url: "https://pub.dev"
     source: hosted
-    version: "0.20.3"
+    version: "0.20.5"
   flutter_lints:
     dependency: "direct dev"
     description:
@@ -106,10 +106,10 @@ packages:
     dependency: transitive
     description:
       name: flutter_riverpod
-      sha256: bdba94be666ecb1beeb0f5a748d96cdd6a37215f27e6b48c7673b95cecb800c8
+      sha256: "4bce556b7ecbfea26109638d5237684538d4abc509d253e6c5c4c5733b360098"
       url: "https://pub.dev"
     source: hosted
-    version: "2.4.4"
+    version: "2.4.10"
   flutter_test:
     dependency: "direct dev"
     description: flutter
@@ -127,18 +127,18 @@ packages:
     dependency: "direct main"
     description:
       name: hooks_riverpod
-      sha256: "0e02037e6fd3511a06ab4770b1a766d2d9bb576f85780d5bb452ca53e3311044"
+      sha256: "758b07eba336e3cbacbd81dba481f2228a14102083fdde07045e8514e8054c49"
       url: "https://pub.dev"
     source: hosted
-    version: "2.4.4"
+    version: "2.4.10"
   http:
     dependency: "direct main"
     description:
       name: http
-      sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
+      sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba
       url: "https://pub.dev"
     source: hosted
-    version: "1.1.0"
+    version: "1.2.0"
   http_parser:
     dependency: transitive
     description:
@@ -191,10 +191,10 @@ packages:
     dependency: "direct dev"
     description:
       name: mocktail
-      sha256: bac151b31e4ed78bd59ab89aa4c0928f297b1180186d5daf03734519e5f596c1
+      sha256: c4b5007d91ca4f67256e720cb1b6d704e79a510183a12fa551021f652577dce6
       url: "https://pub.dev"
     source: hosted
-    version: "1.0.1"
+    version: "1.0.3"
   path:
     dependency: transitive
     description:
@@ -207,26 +207,26 @@ packages:
     dependency: transitive
     description:
       name: path_provider
-      sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa
+      sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b
       url: "https://pub.dev"
     source: hosted
-    version: "2.1.1"
+    version: "2.1.2"
   path_provider_android:
     dependency: transitive
     description:
       name: path_provider_android
-      sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72
+      sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668"
       url: "https://pub.dev"
     source: hosted
-    version: "2.2.1"
+    version: "2.2.2"
   path_provider_foundation:
     dependency: transitive
     description:
       name: path_provider_foundation
-      sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d"
+      sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f"
       url: "https://pub.dev"
     source: hosted
-    version: "2.3.1"
+    version: "2.3.2"
   path_provider_linux:
     dependency: transitive
     description:
@@ -239,10 +239,10 @@ packages:
     dependency: transitive
     description:
       name: path_provider_platform_interface
-      sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c"
+      sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
       url: "https://pub.dev"
     source: hosted
-    version: "2.1.1"
+    version: "2.1.2"
   path_provider_windows:
     dependency: transitive
     description:
@@ -255,26 +255,26 @@ packages:
     dependency: transitive
     description:
       name: platform
-      sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59"
+      sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
       url: "https://pub.dev"
     source: hosted
-    version: "3.1.3"
+    version: "3.1.4"
   plugin_platform_interface:
     dependency: transitive
     description:
       name: plugin_platform_interface
-      sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d
+      sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
       url: "https://pub.dev"
     source: hosted
-    version: "2.1.6"
+    version: "2.1.8"
   riverpod:
     dependency: "direct main"
     description:
       name: riverpod
-      sha256: "2af3d127a6e4e34b89b8f1f018086f5ded04b8e538174f0510bba3e4c0d878b1"
+      sha256: "548e2192eb7aeb826eb89387f814edb76594f3363e2c0bb99dd733d795ba3589"
       url: "https://pub.dev"
     source: hosted
-    version: "2.4.4"
+    version: "2.5.0"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -364,18 +364,18 @@ packages:
     dependency: transitive
     description:
       name: win32
-      sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3"
+      sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8"
       url: "https://pub.dev"
     source: hosted
-    version: "5.0.9"
+    version: "5.2.0"
   xdg_directories:
     dependency: transitive
     description:
       name: xdg_directories
-      sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2"
+      sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
       url: "https://pub.dev"
     source: hosted
-    version: "1.0.3"
+    version: "1.0.4"
 sdks:
-  dart: ">=3.2.0-194.0.dev <4.0.0"
+  dart: ">=3.2.0 <4.0.0"
   flutter: ">=3.13.0"