POST | /tender/available |
---|
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
class GridSortDirection(IntEnum):
NONE = 0
ASC = 1
DESC = 2
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GridViewColumnState:
field_name: Optional[str] = None
sort_direction: Optional[GridSortDirection] = None
class FilterOperator(IntEnum):
NOT_SET = 0
EQUAL = 1
GREATER = 2
LESS = 3
GREATER_OR_EQUAL = 4
LESS_OR_EQUAL = 5
NOT_EQUAL = 6
IS_NULL = 7
IS_NOT_NULL = 8
LIKE = 9
NOT_LIKE = 10
BEGINS = 11
ENDS = 12
IN_ = 13
BETWEEN = 14
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GridViewColumnFilter:
field_name: Optional[str] = None
filter_value: Optional[str] = None
operator: Optional[FilterOperator] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GridViewPagerState:
skip_row_count: int = 0
page_row_count: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GridViewState:
column_state: Optional[GridViewColumnState] = None
column_filters: Optional[List[GridViewColumnFilter]] = None
pager_state: Optional[GridViewPagerState] = None
is_return_count: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PaginationRequestBase(IGridView):
grid_view_state: Optional[GridViewState] = None
class ProcedureType(IntEnum):
COMPETITION = 0
SIMPLIFIED = 1
class TenderType(IntEnum):
PRIVATE = 0
PUBLIC = 1
class TenderStatus(IntEnum):
FIRST_ROUND = 0
SECOND_ROUND = 1
THIRD_ROUND = 2
SUCCESSFUL = 3
UN_SUCCESSFUL = 4
REVOKED = 5
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TenderSimple:
tender_id: int = 0
tender_identifier: Optional[str] = None
procedure_type: Optional[ProcedureType] = None
subject: Optional[str] = None
tender_round_name: Optional[str] = None
section_name: Optional[str] = None
deadline: Optional[datetime.datetime] = None
tender_type: Optional[TenderType] = None
tender_status: Optional[TenderStatus] = None
is_under_publish: bool = False
publish_start_date_time: Optional[datetime.datetime] = None
publish_end_date_time: Optional[datetime.datetime] = None
published_by_id: Optional[int] = None
is_procurement_enabled: bool = False
is_compliance_enabled: bool = False
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BrowseAllAvailableTender(PaginationRequestBase, IPost):
pass
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ResponseBase:
response_status: Optional[ResponseStatus] = None
TenderSimple = TypeVar('TenderSimple')
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PaginationResponse(Generic[TenderSimple], ResponseBase):
result: Optional[PaginationResult[TenderSimple]] = None
TModel = TypeVar('TModel')
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PaginationResult(Generic[TModel]):
total_row_count: int = 0
items: Optional[List[TModel]] = None
Python BrowseAllAvailableTender DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /tender/available HTTP/1.1
Host: szallitoiportal-be.veolia.hu
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<BrowseAllAvailableTender xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Portal.ServiceDto">
<GridViewState xmlns:d2p1="http://schemas.datacontract.org/2004/07/Portal.Common">
<d2p1:ColumnFilters>
<d2p1:GridViewColumnFilter>
<d2p1:FieldName>String</d2p1:FieldName>
<d2p1:FilterValue>String</d2p1:FilterValue>
<d2p1:Operator>NotSet</d2p1:Operator>
</d2p1:GridViewColumnFilter>
</d2p1:ColumnFilters>
<d2p1:ColumnState>
<d2p1:FieldName>String</d2p1:FieldName>
<d2p1:SortDirection>None</d2p1:SortDirection>
</d2p1:ColumnState>
<d2p1:IsReturnCount>false</d2p1:IsReturnCount>
<d2p1:PagerState>
<d2p1:PageRowCount>0</d2p1:PageRowCount>
<d2p1:SkipRowCount>0</d2p1:SkipRowCount>
</d2p1:PagerState>
</GridViewState>
</BrowseAllAvailableTender>
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <PaginationResponseOfTenderSimplesQn7QJ6w xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Portal.ServiceDto"> <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types"> <d2p1:ErrorCode>String</d2p1:ErrorCode> <d2p1:Message>String</d2p1:Message> <d2p1:StackTrace>String</d2p1:StackTrace> <d2p1:Errors> <d2p1:ResponseError> <d2p1:ErrorCode>String</d2p1:ErrorCode> <d2p1:FieldName>String</d2p1:FieldName> <d2p1:Message>String</d2p1:Message> <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d5p1:KeyValueOfstringstring> <d5p1:Key>String</d5p1:Key> <d5p1:Value>String</d5p1:Value> </d5p1:KeyValueOfstringstring> </d2p1:Meta> </d2p1:ResponseError> </d2p1:Errors> <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d3p1:KeyValueOfstringstring> <d3p1:Key>String</d3p1:Key> <d3p1:Value>String</d3p1:Value> </d3p1:KeyValueOfstringstring> </d2p1:Meta> </ResponseStatus> <Result xmlns:d2p1="http://schemas.datacontract.org/2004/07/Portal.Common"> <d2p1:Items> <TenderSimple> <Deadline>0001-01-01T00:00:00</Deadline> <IsComplianceEnabled>false</IsComplianceEnabled> <IsProcurementEnabled>false</IsProcurementEnabled> <IsUnderPublish>false</IsUnderPublish> <ProcedureType>Competition</ProcedureType> <PublishEndDateTime>0001-01-01T00:00:00</PublishEndDateTime> <PublishStartDateTime>0001-01-01T00:00:00</PublishStartDateTime> <PublishedById>0</PublishedById> <SectionName>String</SectionName> <Subject>String</Subject> <TenderId>0</TenderId> <TenderIdentifier>String</TenderIdentifier> <TenderRoundName>String</TenderRoundName> <TenderStatus>FirstRound</TenderStatus> <TenderType>Private</TenderType> </TenderSimple> </d2p1:Items> <d2p1:TotalRowCount>0</d2p1:TotalRowCount> </Result> </PaginationResponseOfTenderSimplesQn7QJ6w>