Test

<back to all web services

DummyTypes

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 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 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 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 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


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ArrayResult:
    result: Optional[str] = None

Python DummyTypes DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + 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
			}
		}
	}
}