Imports System
Imports System.IO
Imports System.Collections
Imports System.Collections.Generic
Imports System.Runtime.Serialization
Imports ServiceStack
Imports ServiceStack.DataAnnotations
Imports MyApp.ServiceModel
Namespace Global
    Namespace MyApp.ServiceModel
        Public Partial Class CreateGameItem
            Implements ICreateDb(Of GameItem)
            <Validate(Validator:="NotEmpty")>
            Public Overridable Property Name As String
            <Validate(Validator:="NotEmpty")>
            Public Overridable Property Description As String
            <Validate(Validator:="NotEmpty")>
            Public Overridable Property ImageUrl As String
        End Class
    End Namespace
    Namespace ServiceStack
        <DataContract>
        Public Partial Class IdResponse
            <DataMember(Order:=1)>
            Public Overridable Property Id As String
            <DataMember(Order:=2)>
            Public Overridable Property ResponseStatus As ResponseStatus
        End Class
    End Namespace
End Namespace
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /json/reply/CreateGameItem HTTP/1.1 
Host: blazor-gallery.servicestack.net 
Accept: application/json
Content-Type: application/json
Content-Length: length
{"name":"String","description":"String","imageUrl":"String"}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length
{"id":"String","responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}