| POST, PUT | /documents/download | 
|---|
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 DocumentRequestBase:
    # @ApiMember(Description="ExternalID", ExcludeInSchema=true, IsRequired=true, ParameterType="path")
    external_id: Optional[str] = None
    """
    ExternalID
    """
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ClientDownloadRequest(DocumentRequestBase):
    file_name: Optional[str] = None
    # @ApiMember(Description="Month", ExcludeInSchema=true, IsRequired=true, ParameterType="path")
    month: int = 0
    """
    Month
    """
    # @ApiMember(Description="Day", ExcludeInSchema=true, IsRequired=true, ParameterType="path")
    day: int = 0
    """
    Day
    """
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ResponseBase:
    message: Optional[str] = None
    is_success: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ClientDownloadResponse(ResponseBase):
    file_name: Optional[str] = None
    stream: Optional[bytes] = None
Python ClientDownloadRequest DTOs
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 /documents/download HTTP/1.1 
Host: initiation-pen.sirva.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
	FileName: String,
	Month: 0,
	Day: 0,
	ExternalId: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
	FileName: String,
	Message: String,
	IsSuccess: False
}