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 .json suffix or ?format=json

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /json/oneway/DummyTypes HTTP/1.1 
Host: test.servicestack.net 
Accept: application/json
Content-Type: application/json
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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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":"\/Date(-62135596800000-0000)\/","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"}}}}