update
This commit is contained in:
BIN
tournme/.DS_Store
vendored
Normal file
BIN
tournme/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
tournme/collection/.DS_Store
vendored
Normal file
BIN
tournme/collection/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
tournme/collection/PadelTour API/.DS_Store
vendored
Normal file
BIN
tournme/collection/PadelTour API/.DS_Store
vendored
Normal file
Binary file not shown.
30
tournme/collection/PadelTour API/Authentication/Login.bru
Normal file
30
tournme/collection/PadelTour API/Authentication/Login.bru
Normal file
@@ -0,0 +1,30 @@
|
||||
meta {
|
||||
name: Login
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/login
|
||||
body: formUrlEncoded
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:form-urlencoded {
|
||||
grant_type:
|
||||
username: {{username}}
|
||||
password: {{password}}
|
||||
scope:
|
||||
client_id:
|
||||
client_secret:
|
||||
}
|
||||
|
||||
script:post-response {
|
||||
function onResponse(res) {
|
||||
let data = res.getBody();
|
||||
bru.setEnvVar("access_token", data.access_token);
|
||||
bru.setEnvVar("refresh_token", data.refresh_token);
|
||||
}
|
||||
|
||||
onResponse(res);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
meta {
|
||||
name: Refresh Token
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/refresh
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"refresh_token": "{{refresh_token}}"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
meta {
|
||||
name: Authentication
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
meta {
|
||||
name: Change Password
|
||||
type: http
|
||||
seq: 4
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/companies/me/change-password
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"current_password": "",
|
||||
"new_password": "",
|
||||
"confirm_password": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
meta {
|
||||
name: Create Company Admin
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/companies/admin/create
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"name": "",
|
||||
"email": "",
|
||||
"phone_number": "",
|
||||
"address": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
meta {
|
||||
name: Get All Companies
|
||||
type: http
|
||||
seq: 5
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/companies
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Company By Login
|
||||
type: http
|
||||
seq: 6
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/companies/:login
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
login:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Current Company
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/companies/me
|
||||
body: none
|
||||
auth: bearer
|
||||
}
|
||||
|
||||
auth:bearer {
|
||||
token: {{access_token}}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
meta {
|
||||
name: Update Current Company
|
||||
type: http
|
||||
seq: 3
|
||||
}
|
||||
|
||||
patch {
|
||||
url: {{baseUrl}}/api/v1/companies/me
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"name": "",
|
||||
"email": "",
|
||||
"phone_number": "",
|
||||
"address": "",
|
||||
"vat_number": ""
|
||||
}
|
||||
}
|
||||
11
tournme/collection/PadelTour API/Companies/folder.bru
Normal file
11
tournme/collection/PadelTour API/Companies/folder.bru
Normal file
@@ -0,0 +1,11 @@
|
||||
meta {
|
||||
name: Companies
|
||||
}
|
||||
|
||||
auth {
|
||||
mode: bearer
|
||||
}
|
||||
|
||||
auth:bearer {
|
||||
token: {{access_token}}
|
||||
}
|
||||
18
tournme/collection/PadelTour API/Courts/Create Court.bru
Normal file
18
tournme/collection/PadelTour API/Courts/Create Court.bru
Normal file
@@ -0,0 +1,18 @@
|
||||
meta {
|
||||
name: Create Court
|
||||
type: http
|
||||
seq: 3
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/courts/
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"name": "CAMPO BELLISSIMO",
|
||||
"images": ["https://ddlgzcxdeqadinmzpgqu.supabase.co/storage/v1/object/public/padelcourt_dev/34847922/courts/19cdc929-7dcd-4a63-b016-66db8fdabd4a.jpeg?"]
|
||||
}
|
||||
}
|
||||
15
tournme/collection/PadelTour API/Courts/Delete Court.bru
Normal file
15
tournme/collection/PadelTour API/Courts/Delete Court.bru
Normal file
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Delete Court
|
||||
type: http
|
||||
seq: 6
|
||||
}
|
||||
|
||||
delete {
|
||||
url: {{baseUrl}}/api/v1/courts/:id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
15
tournme/collection/PadelTour API/Courts/Get All Courts.bru
Normal file
15
tournme/collection/PadelTour API/Courts/Get All Courts.bru
Normal file
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get All Courts
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/courts/
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
settings {
|
||||
encodeUrl: false
|
||||
}
|
||||
15
tournme/collection/PadelTour API/Courts/Get Court By Id.bru
Normal file
15
tournme/collection/PadelTour API/Courts/Get Court By Id.bru
Normal file
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Court By Id
|
||||
type: http
|
||||
seq: 4
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/courts/:id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
23
tournme/collection/PadelTour API/Courts/Update Court.bru
Normal file
23
tournme/collection/PadelTour API/Courts/Update Court.bru
Normal file
@@ -0,0 +1,23 @@
|
||||
meta {
|
||||
name: Update Court
|
||||
type: http
|
||||
seq: 5
|
||||
}
|
||||
|
||||
put {
|
||||
url: {{baseUrl}}/api/v1/courts/:id
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"id": 0,
|
||||
"name": "",
|
||||
"images": ""
|
||||
}
|
||||
}
|
||||
19
tournme/collection/PadelTour API/Courts/Upload Image.bru
Normal file
19
tournme/collection/PadelTour API/Courts/Upload Image.bru
Normal file
@@ -0,0 +1,19 @@
|
||||
meta {
|
||||
name: Upload Image
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/courts/upload_image/
|
||||
body: multipartForm
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~folder:
|
||||
}
|
||||
|
||||
body:multipart-form {
|
||||
files: @file(/Users/ayoublefhim/Downloads/images.jpeg)
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Check reset token status
|
||||
type: http
|
||||
seq: 4
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/password-reset/status/:token
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
token:
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
meta {
|
||||
name: Complete password reset
|
||||
type: http
|
||||
seq: 3
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/password-reset/complete
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"token": "",
|
||||
"new_password": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
meta {
|
||||
name: Initiate password reset
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/password-reset/initiate
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"email": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
meta {
|
||||
name: Verify reset code
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/password-reset/verify
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"email": "",
|
||||
"code": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
meta {
|
||||
name: Create Player From Playtomic
|
||||
type: http
|
||||
seq: 3
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/players/from-playtomic/
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"playtomic_id": 0,
|
||||
"gender": 0
|
||||
}
|
||||
}
|
||||
20
tournme/collection/PadelTour API/Players/Create Player.bru
Normal file
20
tournme/collection/PadelTour API/Players/Create Player.bru
Normal file
@@ -0,0 +1,20 @@
|
||||
meta {
|
||||
name: Create Player
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/players/
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"name": "",
|
||||
"gender": "",
|
||||
"surname": "",
|
||||
"nickname": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Delete Player Association
|
||||
type: http
|
||||
seq: 8
|
||||
}
|
||||
|
||||
delete {
|
||||
url: {{baseUrl}}/api/v1/players/:id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Player By Id
|
||||
type: http
|
||||
seq: 6
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/players/:id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
15
tournme/collection/PadelTour API/Players/Get Players.bru
Normal file
15
tournme/collection/PadelTour API/Players/Get Players.bru
Normal file
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Players
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/players/
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~search:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Playtomic Players
|
||||
type: http
|
||||
seq: 4
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/players/playtomic-player/
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~name:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Tournament Id
|
||||
type: http
|
||||
seq: 5
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/players/tournament-id/
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~url:
|
||||
}
|
||||
30
tournme/collection/PadelTour API/Players/Update Player.bru
Normal file
30
tournme/collection/PadelTour API/Players/Update Player.bru
Normal file
@@ -0,0 +1,30 @@
|
||||
meta {
|
||||
name: Update Player
|
||||
type: http
|
||||
seq: 7
|
||||
}
|
||||
|
||||
put {
|
||||
url: {{baseUrl}}/api/v1/players/:id
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"name": "",
|
||||
"gender": "",
|
||||
"surname": "",
|
||||
"nickname": "",
|
||||
"id": 0,
|
||||
"number": "",
|
||||
"email": "",
|
||||
"picture": "",
|
||||
"playtomic_id": "",
|
||||
"level": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
meta {
|
||||
name: Initiate company registration
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/register/initiate
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"email": "",
|
||||
"password": "",
|
||||
"name": "",
|
||||
"address": "",
|
||||
"phone_number": "",
|
||||
"vat_number": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
meta {
|
||||
name: Resend verification code
|
||||
type: http
|
||||
seq: 4
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/register/resend
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"email": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
meta {
|
||||
name: Test Loops API connection
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/register/test-loops
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
meta {
|
||||
name: Verify email and complete registration
|
||||
type: http
|
||||
seq: 3
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/register/verify
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"email": "",
|
||||
"code": ""
|
||||
}
|
||||
}
|
||||
11
tournme/collection/PadelTour API/Root.bru
Normal file
11
tournme/collection/PadelTour API/Root.bru
Normal file
@@ -0,0 +1,11 @@
|
||||
meta {
|
||||
name: Root
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
meta {
|
||||
name: Add Couple To Group
|
||||
type: http
|
||||
seq: 11
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/group/:group_id/couple
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
group_id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"group_id": 0,
|
||||
"couple_id": 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
meta {
|
||||
name: Assign Couples To Groups
|
||||
type: http
|
||||
seq: 14
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/stage/:stage_id/assign-couples
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~method:
|
||||
}
|
||||
|
||||
params:path {
|
||||
stage_id:
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
meta {
|
||||
name: Auto Schedule Matches
|
||||
type: http
|
||||
seq: 35
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/tournament/:tournament_id/auto-schedule
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~start_date:
|
||||
~end_date:
|
||||
~order_only:
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
meta {
|
||||
name: Calculate Stage Match Order
|
||||
type: http
|
||||
seq: 29
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/stage/:stage_id/calculate-match-order
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~strategy:
|
||||
}
|
||||
|
||||
params:path {
|
||||
stage_id:
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
meta {
|
||||
name: Calculate Tournament Match Order
|
||||
type: http
|
||||
seq: 28
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/tournament/:tournament_id/calculate-match-order
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~strategy:
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
meta {
|
||||
name: Create Tournament Bracket
|
||||
type: http
|
||||
seq: 16
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/stage/:stage_id/bracket
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
stage_id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"stage_id": 0,
|
||||
"bracket_type": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
meta {
|
||||
name: Create Tournament Group
|
||||
type: http
|
||||
seq: 6
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/stage/:stage_id/group
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
stage_id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"stage_id": 0,
|
||||
"name": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
meta {
|
||||
name: Create Tournament Stage
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/tournament/:tournament_id/stage
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"tournament_id": 0,
|
||||
"name": "",
|
||||
"stage_type": "",
|
||||
"order": 0,
|
||||
"config": {}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Delete Tournament Bracket
|
||||
type: http
|
||||
seq: 20
|
||||
}
|
||||
|
||||
delete {
|
||||
url: {{baseUrl}}/api/v1/staging/bracket/:bracket_id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
bracket_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Delete Tournament Group
|
||||
type: http
|
||||
seq: 10
|
||||
}
|
||||
|
||||
delete {
|
||||
url: {{baseUrl}}/api/v1/staging/group/:group_id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
group_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Delete Tournament Stage
|
||||
type: http
|
||||
seq: 5
|
||||
}
|
||||
|
||||
delete {
|
||||
url: {{baseUrl}}/api/v1/staging/stage/:stage_id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
stage_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Generate Bracket Matches
|
||||
type: http
|
||||
seq: 36
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/bracket/:bracket_id/generate-matches
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
bracket_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Generate Group Matches
|
||||
type: http
|
||||
seq: 31
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/group/:group_id/generate-matches
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
group_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Generate Stage Matches
|
||||
type: http
|
||||
seq: 21
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/stage/:stage_id/generate-matches
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
stage_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Bracket By Id
|
||||
type: http
|
||||
seq: 18
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/bracket/:bracket_id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
bracket_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Bracket Matches
|
||||
type: http
|
||||
seq: 25
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/bracket/:bracket_id/matches
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
bracket_id:
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
meta {
|
||||
name: Get Couple Stats
|
||||
type: http
|
||||
seq: 38
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/couple/:couple_id/tournament/:tournament_id/stats
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~group_id:
|
||||
}
|
||||
|
||||
params:path {
|
||||
couple_id:
|
||||
tournament_id:
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
meta {
|
||||
name: Get Court Availability
|
||||
type: http
|
||||
seq: 34
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/tournament/:tournament_id/court-availability
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
date:
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Group By Id
|
||||
type: http
|
||||
seq: 8
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/group/:group_id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
group_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Group Couples
|
||||
type: http
|
||||
seq: 12
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/group/:group_id/couple
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
group_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Group Matches
|
||||
type: http
|
||||
seq: 24
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/group/:group_id/matches
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
group_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Group Standings With Stats
|
||||
type: http
|
||||
seq: 15
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/group/:group_id/standings
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
group_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Match By Id
|
||||
type: http
|
||||
seq: 26
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/match/:match_id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
match_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Stage Brackets
|
||||
type: http
|
||||
seq: 17
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/stage/:stage_id/bracket
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
stage_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Stage By Id
|
||||
type: http
|
||||
seq: 3
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/stage/:stage_id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
stage_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Stage Groups
|
||||
type: http
|
||||
seq: 7
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/stage/:stage_id/group
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
stage_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Stage Matches
|
||||
type: http
|
||||
seq: 22
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/stage/:stage_id/matches
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
stage_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Tournament Match Order Info
|
||||
type: http
|
||||
seq: 30
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/tournament/{{tournamentId}}/match-order-info
|
||||
body: none
|
||||
auth: bearer
|
||||
}
|
||||
|
||||
auth:bearer {
|
||||
token: {{access_token}}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Tournament Matches
|
||||
type: http
|
||||
seq: 23
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/tournament/:tournament_id/matches
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Tournament Stages
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/tournament/:tournament_id/stage
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
meta {
|
||||
name: Get Tournament Standings
|
||||
type: http
|
||||
seq: 41
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/tournament/:tournament_id/standings
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~group_id:
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
meta {
|
||||
name: Get Tournament Stats
|
||||
type: http
|
||||
seq: 37
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/staging/tournament/:tournament_id/stats
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~group_id:
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
meta {
|
||||
name: Initialize Missing Couple Stats
|
||||
type: http
|
||||
seq: 40
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/tournament/:tournament_id/stats/initialize
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~group_id:
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
meta {
|
||||
name: Recalculate Tournament Stats
|
||||
type: http
|
||||
seq: 39
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/tournament/:tournament_id/stats/recalculate
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
~group_id:
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
meta {
|
||||
name: Remove Couple From Group
|
||||
type: http
|
||||
seq: 13
|
||||
}
|
||||
|
||||
delete {
|
||||
url: {{baseUrl}}/api/v1/staging/group/:group_id/couple/:couple_id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
group_id:
|
||||
couple_id:
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
meta {
|
||||
name: Schedule Match
|
||||
type: http
|
||||
seq: 32
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/staging/match/:match_id/schedule
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:query {
|
||||
court_id:
|
||||
start_time:
|
||||
~end_time:
|
||||
~is_time_limited:
|
||||
~time_limit_minutes:
|
||||
}
|
||||
|
||||
params:path {
|
||||
match_id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Unschedule Match
|
||||
type: http
|
||||
seq: 33
|
||||
}
|
||||
|
||||
delete {
|
||||
url: {{baseUrl}}/api/v1/staging/match/:match_id/schedule
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
match_id:
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
meta {
|
||||
name: Update Match
|
||||
type: http
|
||||
seq: 27
|
||||
}
|
||||
|
||||
put {
|
||||
url: {{baseUrl}}/api/v1/staging/match/:match_id
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
match_id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"winner_couple_id": "",
|
||||
"games": "",
|
||||
"stage_id": "",
|
||||
"group_id": "",
|
||||
"bracket_id": "",
|
||||
"court_id": "",
|
||||
"scheduled_start": "",
|
||||
"scheduled_end": "",
|
||||
"is_time_limited": "",
|
||||
"time_limit_minutes": "",
|
||||
"match_result_status": "",
|
||||
"display_order": "",
|
||||
"order_in_stage": "",
|
||||
"order_in_group": "",
|
||||
"bracket_position": "",
|
||||
"round_number": "",
|
||||
"priority_score": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
meta {
|
||||
name: Update Tournament Bracket
|
||||
type: http
|
||||
seq: 19
|
||||
}
|
||||
|
||||
put {
|
||||
url: {{baseUrl}}/api/v1/staging/bracket/:bracket_id
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
bracket_id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"bracket_type": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
meta {
|
||||
name: Update Tournament Group
|
||||
type: http
|
||||
seq: 9
|
||||
}
|
||||
|
||||
put {
|
||||
url: {{baseUrl}}/api/v1/staging/group/:group_id
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
group_id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"name": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
meta {
|
||||
name: Update Tournament Stage
|
||||
type: http
|
||||
seq: 4
|
||||
}
|
||||
|
||||
put {
|
||||
url: {{baseUrl}}/api/v1/staging/stage/:stage_id
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
stage_id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"name": "",
|
||||
"stage_type": "",
|
||||
"order": "",
|
||||
"config": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
meta {
|
||||
name: Add Court To Tournament
|
||||
type: http
|
||||
seq: 12
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:id/court
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"court_id": 0,
|
||||
"availability_start": "",
|
||||
"availability_end": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
meta {
|
||||
name: Add Player To Tournament
|
||||
type: http
|
||||
seq: 5
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:id/player
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"tournament_id": 0,
|
||||
"player_id": 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
meta {
|
||||
name: Create Tournament Couple
|
||||
type: http
|
||||
seq: 8
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:id/couple
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"first_player_id": 0,
|
||||
"second_player_id": 0,
|
||||
"name": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
meta {
|
||||
name: Create Tournament
|
||||
type: http
|
||||
seq: 2
|
||||
}
|
||||
|
||||
post {
|
||||
url: {{baseUrl}}/api/v1/tournaments/
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"name": "",
|
||||
"description": "",
|
||||
"images": "",
|
||||
"start_date": "",
|
||||
"end_date": "",
|
||||
"players_number": 0,
|
||||
"full_description": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
meta {
|
||||
name: Delete Player From Tournament
|
||||
type: http
|
||||
seq: 7
|
||||
}
|
||||
|
||||
delete {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:tournament_id/player/:player_id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
player_id:
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
meta {
|
||||
name: Delete Tournament Couple
|
||||
type: http
|
||||
seq: 11
|
||||
}
|
||||
|
||||
delete {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:tournament_id/couple/:couple_id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
couple_id:
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
meta {
|
||||
name: Get All Tournaments
|
||||
type: http
|
||||
seq: 1
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/tournaments/
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Tournament By Id
|
||||
type: http
|
||||
seq: 3
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Tournament Couples
|
||||
type: http
|
||||
seq: 9
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:id/couple
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Tournament Courts
|
||||
type: http
|
||||
seq: 13
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:id/court
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
meta {
|
||||
name: Get Tournament Players
|
||||
type: http
|
||||
seq: 6
|
||||
}
|
||||
|
||||
get {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:id/player
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
meta {
|
||||
name: Remove Court From Tournament
|
||||
type: http
|
||||
seq: 15
|
||||
}
|
||||
|
||||
delete {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:tournament_id/court/:court_id
|
||||
body: none
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
court_id:
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
meta {
|
||||
name: Update Tournament Couple
|
||||
type: http
|
||||
seq: 10
|
||||
}
|
||||
|
||||
put {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:tournament_id/couple/:couple_id
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
couple_id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"tournament_id": "",
|
||||
"first_player_id": "",
|
||||
"second_player_id": "",
|
||||
"name": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
meta {
|
||||
name: Update Tournament Court
|
||||
type: http
|
||||
seq: 14
|
||||
}
|
||||
|
||||
put {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:tournament_id/court/:court_id
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
tournament_id:
|
||||
court_id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"availability_start": "",
|
||||
"availability_end": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
meta {
|
||||
name: Update Tournament
|
||||
type: http
|
||||
seq: 4
|
||||
}
|
||||
|
||||
put {
|
||||
url: {{baseUrl}}/api/v1/tournaments/:id
|
||||
body: json
|
||||
auth: inherit
|
||||
}
|
||||
|
||||
params:path {
|
||||
id:
|
||||
}
|
||||
|
||||
body:json {
|
||||
{
|
||||
"name": "",
|
||||
"description": "",
|
||||
"images": "",
|
||||
"start_date": "",
|
||||
"end_date": "",
|
||||
"players_number": "",
|
||||
"full_description": ""
|
||||
}
|
||||
}
|
||||
9
tournme/collection/PadelTour API/bruno.json
Normal file
9
tournme/collection/PadelTour API/bruno.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"version": "1",
|
||||
"name": "PadelTour API",
|
||||
"type": "collection",
|
||||
"ignore": [
|
||||
"node_modules",
|
||||
".git"
|
||||
]
|
||||
}
|
||||
7
tournme/collection/PadelTour API/collection.bru
Normal file
7
tournme/collection/PadelTour API/collection.bru
Normal file
@@ -0,0 +1,7 @@
|
||||
auth {
|
||||
mode: bearer
|
||||
}
|
||||
|
||||
auth:bearer {
|
||||
token: {{access_token}}
|
||||
}
|
||||
7
tournme/collection/PadelTour API/environments/Dev.bru
Normal file
7
tournme/collection/PadelTour API/environments/Dev.bru
Normal file
@@ -0,0 +1,7 @@
|
||||
vars {
|
||||
baseUrl: http://localhost:8000
|
||||
username: test@test.it
|
||||
password: Pass123!
|
||||
access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE3NTM4MjY5ODR9.kG1cISeoVJOTwZzPDWJdi1UMTVXiTGsB7HFn9DqItdI
|
||||
tournamentId: 1
|
||||
}
|
||||
7
tournme/collection/PadelTour API/environments/PROD.bru
Normal file
7
tournme/collection/PadelTour API/environments/PROD.bru
Normal file
@@ -0,0 +1,7 @@
|
||||
vars {
|
||||
baseUrl: https://api.tourn.me
|
||||
username: 02421217
|
||||
}
|
||||
vars:secret [
|
||||
password
|
||||
]
|
||||
65
tournme/docs/FEATURES.md
Normal file
65
tournme/docs/FEATURES.md
Normal file
@@ -0,0 +1,65 @@
|
||||
|
||||
# Project Features
|
||||
|
||||
This document outlines the main features of the Tourn.me application, a comprehensive platform for managing padel tournaments. The project is divided into a frontend application (`app.tourn.me`) and a backend service (`padeltour`).
|
||||
|
||||
## Backend Features (padeltour)
|
||||
|
||||
The backend is built with Python and FastAPI, providing a robust API for the frontend.
|
||||
|
||||
### Core APIs
|
||||
|
||||
- **Authentication**: Handles user login, token refresh, and other authentication-related tasks.
|
||||
- **Companies**: Manages company information, including admin creation and password changes.
|
||||
- **Courts**: Provides endpoints for creating, retrieving, updating, and deleting court information.
|
||||
- **Dashboard**: Offers endpoints to fetch data for the main dashboard, including statistics and overviews.
|
||||
- **Password Reset**: Manages the password reset process, including token validation and password updates.
|
||||
- **Players**: Handles player management, including creation, deletion, and association with tournaments.
|
||||
- **Registration**: Manages the company registration process, including email verification.
|
||||
- **Tournaments**: Provides comprehensive management of tournaments, from creation to player and court assignments.
|
||||
- **Tournament Staging**: Manages the different stages of a tournament, including:
|
||||
- **Brackets**: Handles the creation and management of tournament brackets.
|
||||
- **Groups**: Manages player groups within a tournament.
|
||||
- **Matches**: Provides endpoints for match management and scheduling.
|
||||
- **Scheduling**: Automates the scheduling of matches.
|
||||
- **Stages**: Manages the different stages of a tournament (e.g., group stage, knockout stage).
|
||||
- **Stats**: Provides statistics for tournaments.
|
||||
|
||||
## Frontend Features (app.tourn.me)
|
||||
|
||||
The frontend is a Next.js application that provides a user-friendly interface for managing tournaments.
|
||||
|
||||
### Main Sections
|
||||
|
||||
- **Dashboard**: The main landing page after login, providing an overview of key metrics.
|
||||
- **Overview**: Displays statistics related to sales, user activity, and more.
|
||||
- **Courts**: Allows for the management of padel courts.
|
||||
- **Players**: A section for managing players, including creation and viewing.
|
||||
- **Products**: Manages products or services offered.
|
||||
- **Profile**: Allows users to manage their company profile and settings.
|
||||
- **Tournament**: The core section for managing tournaments.
|
||||
|
||||
### Tournament Management
|
||||
|
||||
- **Tournament Creation**: A step-by-step process to create new tournaments.
|
||||
- **Tournament Overview**: A view of all ongoing and past tournaments.
|
||||
- **Tournament Details**: A detailed view of a specific tournament, including:
|
||||
- Player management
|
||||
- Court assignments
|
||||
- Match scheduling
|
||||
- Bracket visualization
|
||||
|
||||
### User Authentication
|
||||
|
||||
- **Sign In/Register**: Standard user authentication pages.
|
||||
- **Forgot/Reset Password**: A complete flow for password recovery.
|
||||
|
||||
### Other Features
|
||||
|
||||
- **Email Service**: Integrated email notifications for events like registration and password recovery.
|
||||
- **Internationalization (i18n)**: The application supports multiple languages.
|
||||
- **Real-time Updates**: The application is set up for real-time data fetching and updates.
|
||||
- **API Documentation**: The project includes a `collection` folder with API requests for easier testing and integration.
|
||||
- **Monitoring**: The `grafana` folder suggests that the application is set up for monitoring with Grafana dashboards.
|
||||
- **Database Migrations**: Uses `alembic` for handling database schema migrations.
|
||||
- **Containerization**: Both the frontend and backend applications are containerized using Docker.
|
||||
BIN
tournme/email/.DS_Store
vendored
Normal file
BIN
tournme/email/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
tournme/email/1_password_recovery/.DS_Store
vendored
Normal file
BIN
tournme/email/1_password_recovery/.DS_Store
vendored
Normal file
Binary file not shown.
199
tournme/email/1_password_recovery/index.mjml
Normal file
199
tournme/email/1_password_recovery/index.mjml
Normal file
@@ -0,0 +1,199 @@
|
||||
<mjml>
|
||||
<mj-head>
|
||||
<mj-title>Reimposta la tua Password Tourn.me</mj-title>
|
||||
<mj-preview>Abbiamo ricevuto una richiesta per reimpostare la password per {DATA_VARIABLE:companyName}...</mj-preview>
|
||||
<mj-attributes>
|
||||
<mj-all font-family="'Segoe UI', Tahoma, Geneva, Verdana, sans-serif" />
|
||||
<mj-text font-size="16px" color="#333333" line-height="1.6" />
|
||||
<mj-section background-color="#f4f4f4" padding="20px" />
|
||||
</mj-attributes>
|
||||
<mj-style inline="inline">
|
||||
.code-text {
|
||||
font-size: 32px !important;
|
||||
font-weight: bold !important;
|
||||
letter-spacing: 8px !important;
|
||||
color: #f6b43c !important;
|
||||
font-family: 'Courier New', monospace !important;
|
||||
text-align: center !important;
|
||||
}
|
||||
.code-label {
|
||||
font-size: 14px !important;
|
||||
color: #666666 !important;
|
||||
text-align: center !important;
|
||||
margin-bottom: 10px !important;
|
||||
}
|
||||
.expiry-text {
|
||||
color: #dc3545 !important;
|
||||
font-weight: bold !important;
|
||||
font-size: 14px !important;
|
||||
text-align: center !important;
|
||||
}
|
||||
.step-item {
|
||||
margin: 8px 0 !important;
|
||||
padding-left: 20px !important;
|
||||
position: relative !important;
|
||||
}
|
||||
.step-arrow {
|
||||
color: #f6b43c !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
.warning-icon {
|
||||
color: #856404 !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
@media only screen and (max-width: 600px) {
|
||||
.code-text {
|
||||
font-size: 24px !important;
|
||||
letter-spacing: 4px !important;
|
||||
}
|
||||
}
|
||||
</mj-style>
|
||||
</mj-head>
|
||||
<mj-body background-color="#f4f4f4">
|
||||
<!-- Header Section -->
|
||||
<mj-section background-color="#ffffff" border-radius="10px 10px 0 0" padding="40px 40px 20px 40px">
|
||||
<mj-column>
|
||||
<!-- Spazio per logo SVG -->
|
||||
<mj-image src="https://app.tourn.me/logo.svg" alt="Tourn.me Logo" width="120px" height="auto" padding-bottom="20px" />
|
||||
<mj-text align="center" font-size="24px" font-weight="600" color="#e5a332" padding-bottom="20px">
|
||||
Richiesta di Reset Password
|
||||
</mj-text>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
<!-- Greeting Section -->
|
||||
<mj-section background-color="#ffffff" padding="0 40px">
|
||||
<mj-column>
|
||||
<mj-text font-size="16px" line-height="1.6">
|
||||
Ciao <strong>{DATA_VARIABLE:companyName}</strong>,
|
||||
</mj-text>
|
||||
<mj-text font-size="16px" line-height="1.6" padding-bottom="20px">
|
||||
Abbiamo ricevuto una richiesta per reimpostare la password del tuo account Tourn.me. Se non hai fatto questa richiesta, puoi ignorare tranquillamente questa email.
|
||||
</mj-text>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
<!-- Verification Code Section -->
|
||||
<mj-section background-color="#ffffff" padding="0 40px">
|
||||
<mj-column>
|
||||
<mj-wrapper background-color="#f8f9fa" border="0px solid #f8f9fa" border-radius="6px" padding="20px">
|
||||
<mj-section background-color="transparent" padding="0">
|
||||
<mj-column>
|
||||
<mj-text css-class="code-label">
|
||||
Il tuo codice di verifica a 6 cifre:
|
||||
</mj-text>
|
||||
<mj-text css-class="code-text">
|
||||
{DATA_VARIABLE:verificationCode}
|
||||
</mj-text>
|
||||
<mj-text css-class="expiry-text">
|
||||
⏰ Scade tra {DATA_VARIABLE:expiryMinutes} minuti
|
||||
</mj-text>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
</mj-wrapper>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
<!-- Reset Button Section -->
|
||||
<mj-section background-color="#ffffff" padding="30px 40px">
|
||||
<mj-column>
|
||||
<mj-button
|
||||
background-color="#f6b43c"
|
||||
color="#ffffff"
|
||||
font-size="16px"
|
||||
font-weight="bold"
|
||||
border-radius="6px"
|
||||
padding="15px 30px"
|
||||
href="{DATA_VARIABLE:resetLink}"
|
||||
>
|
||||
Reimposta Password Subito
|
||||
</mj-button>
|
||||
<mj-text align="center" font-size="14px" color="#666666" padding-top="10px">
|
||||
Clicca il pulsante sopra per il reset immediato, o usa il codice nella tua app
|
||||
</mj-text>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
<!-- Alternative Method Section -->
|
||||
<mj-section background-color="#ffffff" padding="0 40px">
|
||||
<mj-column>
|
||||
<mj-wrapper background-color="#e9ecef" border-radius="6px" padding="20px">
|
||||
<mj-section background-color="transparent" padding="0">
|
||||
<mj-column>
|
||||
<mj-text font-size="16px" color="#495057" font-weight="bold" padding-bottom="10px">
|
||||
Prossimi passi
|
||||
</mj-text>
|
||||
<mj-text font-size="14px" color="#495057" padding="2px 0">
|
||||
<span class="step-arrow">→</span> Apri la pagina di reset password
|
||||
</mj-text>
|
||||
<mj-text font-size="14px" color="#495057" padding="2px 0">
|
||||
<span class="step-arrow">→</span> Inserisci il codice a 6 cifre: <strong>{DATA_VARIABLE:verificationCode}</strong>
|
||||
</mj-text>
|
||||
<mj-text font-size="14px" color="#495057" padding="2px 0">
|
||||
<span class="step-arrow">→</span> Crea la tua nuova password
|
||||
</mj-text>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
</mj-wrapper>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
<!-- Security Warning Section -->
|
||||
<mj-section background-color="#ffffff" padding="20px 40px">
|
||||
<mj-column>
|
||||
<mj-wrapper background-color="#fff3cd" border="1px solid #ffeaa7" border-radius="6px" padding="15px">
|
||||
<mj-section background-color="transparent" padding="0">
|
||||
<mj-column>
|
||||
<mj-text font-size="14px" padding-bottom="10px">
|
||||
<span class="warning-icon">🔒 Avviso di Sicurezza:</span>
|
||||
</mj-text>
|
||||
<mj-text font-size="14px" padding="2px 0">
|
||||
• Questo codice scade tra <strong>{DATA_VARIABLE:expiryMinutes} minuti</strong>
|
||||
</mj-text>
|
||||
<mj-text font-size="14px" padding="2px 0">
|
||||
• Usa questo codice solo se hai richiesto un reset password
|
||||
</mj-text>
|
||||
<mj-text font-size="14px" padding="2px 0">
|
||||
• Non condividere mai questo codice con nessuno
|
||||
</mj-text>
|
||||
<mj-text font-size="14px" padding="2px 0">
|
||||
• Se non hai fatto questa richiesta, contatta subito il supporto
|
||||
</mj-text>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
</mj-wrapper>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
<!-- Troubleshooting Section -->
|
||||
<mj-section background-color="#ffffff" padding="20px 40px">
|
||||
<mj-column>
|
||||
<mj-wrapper background-color="#f8f9fa" border-radius="6px" padding="15px">
|
||||
<mj-section background-color="transparent" padding="0">
|
||||
<mj-column>
|
||||
<mj-text font-size="16px" color="#495057" font-weight="bold" padding-bottom="10px">
|
||||
💡 Hai problemi?
|
||||
</mj-text>
|
||||
<mj-text font-size="14px" color="#666666" padding="2px 0">
|
||||
• Prova a copiare e incollare il codice se digitarlo non funziona
|
||||
</mj-text>
|
||||
<mj-text font-size="14px" color="#666666" padding="2px 0">
|
||||
• Verifica che la tua connessione internet sia stabile
|
||||
</mj-text>
|
||||
<mj-text font-size="14px" color="#666666" padding="2px 0">
|
||||
• Contatta il nostro team di supporto se i problemi persistono
|
||||
</mj-text>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
</mj-wrapper>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
<!-- Footer Section -->
|
||||
<mj-section background-color="#ffffff" border-radius="0 0 10px 10px" padding="30px 40px 40px 40px">
|
||||
<mj-column>
|
||||
<mj-divider border-color="#e9ecef" border-width="1px" padding="20px 0" />
|
||||
<mj-text align="center" font-size="14px" color="#666666" padding-bottom="10px">
|
||||
Questa email ti è stata inviata perché è stato richiesto un reset password per il tuo account Tourn.me.
|
||||
</mj-text>
|
||||
<mj-text align="center" font-size="12px" color="#999999" padding-top="15px">
|
||||
© 2025 Tourn.me. Tutti i diritti riservati.<br/>
|
||||
Questo è un messaggio automatico, non rispondere a questa email.
|
||||
</mj-text>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
</mj-body>
|
||||
</mjml>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user