#
Hlasovanie
Základná myšlienka hlasovania spočíva vo validácii prichádzajúceho zoznamu hlasov z gateway-a, ktorá musí prejsť niekoľkými krokmi. Samotný zoznam prichádzajúcich hlasov je zašifrovaný pomocou vlastnej knižnice electiersa, ktorého štruktúra je následovná:
class VoteEncrypted(BaseModel):
encrypted_message: str
encrypted_object: str
class VotesEncrypted(BaseModel):
polling_place_id: int
votes: List[VoteEncrypted] = []
Ak je validácia úspešná, spomínaný zoznam prichádzajúcich hlasov sa uloží do kolekcie votes a informuje používateľa. V opačnom prípade, server vráti špecifickú hlášku, vďaka ktorej používateľ bude vedieť, v akom kroku bola validácia neúspešná.
#
Validácia
- ID volebnej miestnosti sa musí nachádzať v kolekcii key_pair
- počet zvolených kandidátov nesmie byť väčší ako 5
- každý kandidát sa v prichádzajúcom hlase môže vyskytovať iba raz
- nezadaná politická strana nesmie obsahovať žiadneho kandidáta
- kandidát musí patriť do správnej politickej strany
- v kolekcii votes sa nesmie nachádzať duplitcitná kombinácia tokenu a ID volebnej miestnosti
- v príchádzajúcom zozname hlasov sa nesmie nachádzať duplicitný token
- ID volieb musí byť totožné s tým, ktoré sa nachádza v konfiguračnom súbore config.py
#
Popis API
#
vote_elections_vote_post
Code samples
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
r = requests.post('/elections/vote', headers = headers)
print(r.json())
POST /elections/vote
Vote
Process candidate's vote
Body parameter
{
"polling_place_id": 0,
"votes": [
{
"encrypted_message": "36AMNvcpAWdHAXKCSWexgyjxrt7xeWwhOf+oUMBqip/C051...",
"encrypted_object": "lb5B/LAg2/38mot9jYzRpa9O6YwrXDilpspPrGrnTKKYUXS8..."
}
]
}
Parameters
Example responses
200 Response
{
"status": "string",
"message": "string"
}
Responses
#
get_voting_data_elections_voting_data_get
Code samples
import requests
headers = {
'Accept': 'application/json'
}
r = requests.get('/elections/voting-data', headers = headers)
print(r.json())
GET /elections/voting-data
Get Voting Data
Downlaod voting data json using command curl http://localhost:8222/elections/voting-data > config.json
Example responses
200 Response
{
"polling_places": [],
"parties": [],
"key_pairs": [],
"texts": {
"elections_name_short": {
"sk": "string",
"en": "string"
},
"elections_name_long": {
"sk": "string",
"en": "string"
},
"election_date": {
"sk": "string",
"en": "string"
}
}
}
Responses
#
get_zapisnica_elections_zapisnica_get
Code samples
import requests
headers = {
'Accept': 'application/json'
}
r = requests.get('/elections/zapisnica', headers = headers)
print(r.json())
GET /elections/zapisnica
Get Zapisnica
Example responses
200 Response
null