All Verbs | /admin/app | ||
---|---|---|---|
All Verbs | /admin/app/{Country} | ||
All Verbs | /admin/app/{Country}/{Lang} |
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 SiteSection:
route: Optional[str] = None
public: Optional[bool] = None
parent: Optional[str] = None
roles: Optional[int] = None
hide_from: Optional[List[str]] = None
order: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Entity(IEntity):
id: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ListItem(Entity):
list_id: Optional[str] = None
country: Optional[str] = None
related_id: Optional[str] = None
code: Optional[str] = None
custom: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Country:
name: Optional[str] = None
languages: Optional[Dict[str, str]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Content(Entity):
section: Optional[str] = None
item_id: Optional[str] = None
item_code: Optional[str] = None
country: Optional[str] = None
lang: Optional[str] = None
app: Optional[str] = None
company_id: Optional[str] = None
company: Optional[str] = None
elements: Optional[Dict[str, str]] = None
# @Flags()
class Roles(IntEnum):
NONE = 0
EMPLOYEE = 1
MEMBER = 2
EMPLOYER = 4
BROKER = 8
DEVELOPER = 16
SYS_ADMIN = 32
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class User:
roles: Optional[Roles] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ScriptTracker(Entity):
sprint: Optional[str] = None
country: Optional[str] = None
language: Optional[str] = None
section: Optional[str] = None
item_code: Optional[str] = None
element: Optional[str] = None
value: Optional[str] = None
is_from_merge: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Configuration(Entity):
category: Optional[str] = None
countries: Optional[Dict[str, Country]] = None
list_items: Optional[List[ListItem]] = None
list_relationships: Optional[Dict[str, str]] = None
section_elements: Optional[Dict[str, List[str]]] = None
site_structure: Optional[Dict[str, SiteSection]] = None
version: Optional[int] = None
created_by: Optional[str] = None
date_created: Optional[datetime.datetime] = None
updated_by: Optional[str] = None
date_updated: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AdminAppData:
site_structure: Optional[Dict[str, SiteSection]] = None
section_elements: Optional[Dict[str, List[str]]] = None
list_relationships: Optional[Dict[str, str]] = None
list_items: Optional[List[ListItem]] = None
countries: Optional[Dict[str, Country]] = None
content: Optional[List[Content]] = None
user: Optional[User] = None
script_tracker_records: Optional[List[ScriptTracker]] = None
configurations: Optional[List[Configuration]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AdminAppReq:
country: Optional[str] = None
lang: Optional[str] = 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 /admin/app HTTP/1.1
Host: hcbtas-q-albamfs-api.azurewebsites.net
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
country: String,
lang: String
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { siteStructure: { String: { route: String, public: False, parent: String, roles: 0, hideFrom: [ String ], order: 0 } }, sectionElements: { String: [ String ] }, listRelationships: { String: String }, listItems: [ { listId: String, country: String, relatedId: String, code: String, custom: String, id: String } ], countries: { String: { name: String, languages: { String: String } } }, content: [ { section: String, itemId: String, itemCode: String, country: String, lang: String, app: String, companyId: String, company: String, elements: { String: String }, id: String } ], user: { roles: 0 }, scriptTrackerRecords: [ { sprint: String, country: String, language: String, section: String, itemCode: String, element: String, value: String, isFromMerge: False, id: String } ] }