import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class HelloResponse:
result: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ListResult:
result: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ArrayResult:
result: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CancelRequest(IPost, IMeta):
tag: Optional[str] = None
meta: Optional[Dict[str, str]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CancelRequestResponse(IMeta):
tag: Optional[str] = None
elapsed: datetime.timedelta = datetime.timedelta()
meta: Optional[Dict[str, str]] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class UpdateEventSubscriber(IPost):
id: Optional[str] = None
subscribe_channels: Optional[List[str]] = None
unsubscribe_channels: Optional[List[str]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class UpdateEventSubscriberResponse:
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetApiKeys(IGet, IMeta):
environment: Optional[str] = None
meta: Optional[Dict[str, str]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class UserApiKey(IMeta):
key: Optional[str] = None
key_type: Optional[str] = None
expiry_date: Optional[datetime.datetime] = None
meta: Optional[Dict[str, str]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetApiKeysResponse(IMeta):
results: Optional[List[UserApiKey]] = None
meta: Optional[Dict[str, str]] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RegenerateApiKeys(IPost, IMeta):
environment: Optional[str] = None
meta: Optional[Dict[str, str]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RegenerateApiKeysResponse(IMeta):
results: Optional[List[UserApiKey]] = None
meta: Optional[Dict[str, str]] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ConvertSessionToToken(IPost, IMeta):
preserve_session: bool = False
meta: Optional[Dict[str, str]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ConvertSessionToTokenResponse(IMeta):
meta: Optional[Dict[str, str]] = None
access_token: Optional[str] = None
refresh_token: Optional[str] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetAccessTokenResponse(IMeta):
access_token: Optional[str] = None
meta: Optional[Dict[str, str]] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetAccessToken(IPost, IMeta):
refresh_token: Optional[str] = None
meta: Optional[Dict[str, str]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NavItem(IMeta):
label: Optional[str] = None
href: Optional[str] = None
exact: Optional[bool] = None
id: Optional[str] = None
class_name: Optional[str] = None
icon_class: Optional[str] = None
icon_src: Optional[str] = None
show: Optional[str] = None
hide: Optional[str] = None
children: Optional[List[NavItem]] = None
meta: Optional[Dict[str, str]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetNavItems:
name: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetNavItemsResponse(IMeta):
base_url: Optional[str] = None
results: Optional[List[NavItem]] = None
nav_items_map: Optional[Dict[str, List[NavItem]]] = None
meta: Optional[Dict[str, str]] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class EmptyResponse:
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class IdResponse:
id: Optional[str] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StringResponse(IMeta):
result: Optional[str] = None
meta: Optional[Dict[str, str]] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StringsResponse(IMeta):
results: Optional[List[str]] = None
meta: Optional[Dict[str, str]] = None
response_status: Optional[ResponseStatus] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AuditBase:
created_date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
created_by: Optional[str] = None
modified_date: datetime.datetime = datetime.datetime(1, 1, 1)
# @Required()
modified_by: Optional[str] = None
deleted_date: Optional[datetime.datetime] = None
deleted_by: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DummyTypes:
hello_responses: Optional[List[HelloResponse]] = None
list_result: Optional[List[ListResult]] = None
array_result: Optional[List[ArrayResult]] = None
cancel_request: Optional[CancelRequest] = None
cancel_request_response: Optional[CancelRequestResponse] = None
update_event_subscriber: Optional[UpdateEventSubscriber] = None
update_event_subscriber_response: Optional[UpdateEventSubscriberResponse] = None
get_api_keys: Optional[GetApiKeys] = None
get_api_keys_response: Optional[GetApiKeysResponse] = None
regenerate_api_keys: Optional[RegenerateApiKeys] = None
regenerate_api_keys_response: Optional[RegenerateApiKeysResponse] = None
user_api_key: Optional[UserApiKey] = None
convert_session_to_token: Optional[ConvertSessionToToken] = None
convert_session_to_token_response: Optional[ConvertSessionToTokenResponse] = None
get_access_token: Optional[GetAccessToken] = None
get_access_token_response: Optional[GetAccessTokenResponse] = None
nav_item: Optional[NavItem] = None
get_nav_items: Optional[GetNavItems] = None
get_nav_items_response: Optional[GetNavItemsResponse] = None
empty_response: Optional[EmptyResponse] = None
id_response: Optional[IdResponse] = None
string_response: Optional[StringResponse] = None
strings_response: Optional[StringsResponse] = None
audit_base: Optional[AuditBase] = None
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /jsv/oneway/DummyTypes HTTP/1.1
Host: test.servicestack.net
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
helloResponses:
[
{
result: String
}
],
listResult:
[
{
result: String
}
],
arrayResult:
[
{
result: String
}
],
cancelRequest:
{
tag: String,
meta:
{
String: String
}
},
cancelRequestResponse:
{
tag: String,
elapsed: PT0S,
meta:
{
String: String
},
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
},
updateEventSubscriber:
{
id: String,
subscribeChannels:
[
String
],
unsubscribeChannels:
[
String
]
},
updateEventSubscriberResponse:
{
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
},
getApiKeys:
{
environment: String,
meta:
{
String: String
}
},
getApiKeysResponse:
{
results:
[
{
key: String,
keyType: String,
expiryDate: 0001-01-01,
meta:
{
String: String
}
}
],
meta:
{
String: String
},
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
},
regenerateApiKeys:
{
environment: String,
meta:
{
String: String
}
},
regenerateApiKeysResponse:
{
results:
[
{
key: String,
keyType: String,
expiryDate: 0001-01-01,
meta:
{
String: String
}
}
],
meta:
{
String: String
},
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
},
userApiKey:
{
key: String,
keyType: String,
expiryDate: 0001-01-01,
meta:
{
String: String
}
},
convertSessionToToken:
{
preserveSession: False,
meta:
{
String: String
}
},
convertSessionToTokenResponse:
{
meta:
{
String: String
},
accessToken: String,
refreshToken: String,
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
},
getAccessToken:
{
refreshToken: String,
meta:
{
String: String
}
},
getAccessTokenResponse:
{
accessToken: String,
meta:
{
String: String
},
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
},
navItem:
{
label: String,
href: String,
exact: False,
id: String,
className: String,
iconClass: String,
iconSrc: String,
show: String,
hide: String,
children:
[
{
label: String,
href: String,
exact: False,
id: String,
className: String,
iconClass: String,
iconSrc: String,
show: String,
hide: String,
children:
[
{
label: String,
href: String,
exact: False,
id: String,
className: String,
iconClass: String,
iconSrc: String,
show: String,
hide: String,
children:
[
{
}
],
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
],
meta:
{
String: String
}
},
getNavItems:
{
name: String
},
getNavItemsResponse:
{
baseUrl: String,
results:
[
{
label: String,
href: String,
exact: False,
id: String,
className: String,
iconClass: String,
iconSrc: String,
show: String,
hide: String,
children:
[
{
label: String,
href: String,
exact: False,
id: String,
className: String,
iconClass: String,
iconSrc: String,
show: String,
hide: String,
children:
[
{
label: String,
href: String,
exact: False,
id: String,
className: String,
iconClass: String,
iconSrc: String,
show: String,
hide: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
],
navItemsMap:
{
String:
[
{
label: String,
href: String,
exact: False,
id: String,
className: String,
iconClass: String,
iconSrc: String,
show: String,
hide: String,
children:
[
{
label: String,
href: String,
exact: False,
id: String,
className: String,
iconClass: String,
iconSrc: String,
show: String,
hide: String,
children:
[
{
label: String,
href: String,
exact: False,
id: String,
className: String,
iconClass: String,
iconSrc: String,
show: String,
hide: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
]
},
meta:
{
String: String
},
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
},
emptyResponse:
{
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
},
idResponse:
{
id: String,
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
},
stringResponse:
{
result: String,
meta:
{
String: String
},
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
},
stringsResponse:
{
results:
[
String
],
meta:
{
String: String
},
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
}
}