Pular para o conteúdo principal

RaizFC API (0.0.0)

Download OpenAPI specification:Download

Inventário de endpoints gerado a partir dos controllers reais. Bodies de request/response vêm dos types de @raizfc/contracts usados nas assinaturas (@Body() e tipo de retorno).

Health

HealthController_getHealth

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "service": "raizfc-api",
  • "version": "string",
  • "dependencies": [
    ]
}

PublicTeam

PublicTeamController_getTeam

Responses

Response samples

Content type
application/json
{
  • "team": {
    },
  • "viewer": {
    },
  • "warnings": [
    ],
  • "spotlight": {
    },
  • "ranking": {
    },
  • "stats": {
    },
  • "squad": {
    },
  • "torcidas": {
    },
  • "feed": {
    },
  • "supporters": {
    },
  • "sponsors": {
    },
  • "gallery": {
    }
}

PublicTeamController_cheer

Responses

Response samples

Content type
application/json
{
  • "relationship": {
    }
}

PublicTeamController_uncheer

Request Body schema: application/json
required
keepFollowing
required
boolean

Responses

Request samples

Content type
application/json
{
  • "keepFollowing": true
}

Response samples

Content type
application/json
{
  • "relationship": {
    }
}

Player

PlayerController_activate

Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "property1": null,
  • "property2": null
}

Response samples

Content type
application/json
{
  • "player": {
    },
  • "completeness": {
    }
}

PlayerController_getMe

Responses

Response samples

Content type
application/json
{
  • "player": {
    },
  • "completeness": {
    }
}

PlayerController_updateProfile

Request Body schema: application/json
required
displayName
string
object (ImageAsset)
primaryPosition
string
positions
Array of strings
dominantFoot
string (PlayerDominantFoot)
Enum: "left" "right" "both"
bio
string
object (PlayerContactDto)
object (PlayerAvailabilityDto)
status
string (PlayerAvailabilityStatus)
Enum: "available" "active" "inactive" "retired"
version
required
number

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "avatar": {
    },
  • "primaryPosition": "string",
  • "positions": [
    ],
  • "dominantFoot": "left",
  • "bio": "string",
  • "contact": {
    },
  • "availability": {
    },
  • "status": "available",
  • "version": 0
}

Response samples

Content type
application/json
{
  • "player": {
    },
  • "completeness": {
    }
}

PlayerController_updatePrivacy

Request Body schema: application/json
required
profilePublic
boolean
contactsPublic
boolean
currentTeamsPublic
boolean
formerTeamsPublic
boolean
statsPublic
boolean
availabilityPublic
boolean
version
required
number

Responses

Request samples

Content type
application/json
{
  • "profilePublic": true,
  • "contactsPublic": true,
  • "currentTeamsPublic": true,
  • "formerTeamsPublic": true,
  • "statsPublic": true,
  • "availabilityPublic": true,
  • "version": 0
}

Response samples

Content type
application/json
{
  • "player": {
    },
  • "completeness": {
    }
}

PublicPlayer

PublicPlayerController_getPlayer

Responses

Response samples

Content type
application/json
{
  • "player": {
    },
  • "viewer": {
    },
  • "warnings": [
    ],
  • "stats": {
    },
  • "statsFilters": {
    },
  • "teamLinks": {
    },
  • "recentMatches": {
    },
  • "championships": {
    }
}

PublicPlayerController_getStats

Responses

Response samples

Content type
application/json
{
  • "stats": {
    },
  • "filters": {
    }
}

PublicPlayerController_getHistory

Responses

Response samples

Content type
application/json
{
  • "history": {
    }
}

Auth

AuthController_createIntent

Request Body schema: application/json
required
type
required
string (AuthIntentType)
Enum: "follow_entity" "cheer_team" "join_torcida" "report_content" "identified_support" "manage_entity" "invite_player" "accept_invite"
required
object
returnUrl
required
string

Responses

Request samples

Content type
application/json
{
  • "type": "follow_entity",
  • "target": {
    },
  • "returnUrl": "string"
}

Response samples

Content type
application/json
{
  • "intent": {
    }
}

AuthController_register

Request Body schema: application/json
required
displayName
required
string
email
string
phone
string
password
required
string
intentId
string (ID)

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "email": "string",
  • "phone": "string",
  • "password": "string",
  • "intentId": "string"
}

Response samples

Content type
application/json
{
  • "user": {
    },
  • "tokens": {
    },
  • "intent": {
    }
}

AuthController_login

Request Body schema: application/json
required
identifier
required
string
password
required
string
intentId
string (ID)

Responses

Request samples

Content type
application/json
{
  • "identifier": "string",
  • "password": "string",
  • "intentId": "string"
}

Response samples

Content type
application/json
{
  • "user": {
    },
  • "tokens": {
    },
  • "intent": {
    }
}

AuthController_refresh

Request Body schema: application/json
required
refreshToken
required
string

Responses

Request samples

Content type
application/json
{
  • "refreshToken": "string"
}

Response samples

Content type
application/json
{
  • "tokens": {
    }
}

AuthController_logout

Request Body schema: application/json
required
refreshToken
string

Responses

Request samples

Content type
application/json
{
  • "refreshToken": "string"
}

Response samples

Content type
application/json
{
  • "completed": true
}

AuthController_me

Responses

Response samples

Content type
application/json
{
  • "user": {
    }
}

AuthController_completeOnboarding

Request Body schema: application/json
required
nickname
required
string
districtId
required
string (ID)
favoriteTeamId
string (ID)
followTorcidaIds
Array of strings (ID)

Responses

Request samples

Content type
application/json
{
  • "nickname": "string",
  • "districtId": "string",
  • "favoriteTeamId": "string",
  • "followTorcidaIds": [
    ]
}

Response samples

Content type
application/json
{
  • "user": {
    }
}

AuthController_executeIntent

Responses

Response samples

Content type
application/json
{
  • "intent": {
    },
  • "consumedAt": "string"
}

AuthController_forgotPassword

Request Body schema: application/json
required
identifier
required
string

Responses

Request samples

Content type
application/json
{
  • "identifier": "string"
}

Response samples

Content type
application/json
{
  • "completed": true
}

AuthController_resetPassword

Request Body schema: application/json
required
token
required
string
password
required
string

Responses

Request samples

Content type
application/json
{
  • "token": "string",
  • "password": "string"
}

Response samples

Content type
application/json
{
  • "completed": true
}

Account

AccountController_updateAccount

Request Body schema: application/json
required
displayName
required
string
nickname
required
string
districtId
required
string (ID)

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "nickname": "string",
  • "districtId": "string"
}

Response samples

Content type
application/json
{
  • "user": {
    }
}

AccountController_getSettings

Responses

Response samples

Content type
application/json
{
  • "settings": {
    }
}

AccountController_updateSettings

Request Body schema: application/json
required
pushNotificationsEnabled
boolean
emailNotificationsEnabled
boolean

Responses

Request samples

Content type
application/json
{
  • "pushNotificationsEnabled": true,
  • "emailNotificationsEnabled": true
}

Response samples

Content type
application/json
{
  • "settings": {
    }
}

AccountController_getFollows

Responses

Response samples

Content type
application/json
{
  • "teams": [
    ],
  • "torcidas": [
    ],
  • "districts": [
    ],
  • "neighborhoods": [
    ]
}

PublicTorcida

PublicTorcidaController_getTorcida

Responses

Response samples

Content type
application/json
{
  • "torcida": {
    },
  • "viewer": {
    },
  • "warnings": [
    ],
  • "members": {
    },
  • "posts": {
    },
  • "matches": {
    },
  • "supporters": {
    },
  • "sponsors": {
    }
}

PublicDistrict

PublicDistrictController_getDistrict

Responses

Response samples

Content type
application/json
{
  • "district": {
    },
  • "viewer": {
    },
  • "warnings": [
    ],
  • "summary": {
    },
  • "teams": {
    },
  • "matches": {
    },
  • "championships": {
    },
  • "torcidas": {
    },
  • "services": {
    },
  • "rankings": {
    },
  • "neighborhoods": {
    }
}

PublicNeighborhood

PublicNeighborhoodController_getNeighborhood

Responses

Response samples

Content type
application/json
{
  • "neighborhood": {
    },
  • "viewer": {
    },
  • "warnings": [
    ],
  • "summary": {
    },
  • "teams": {
    },
  • "matches": {
    },
  • "championships": {
    },
  • "torcidas": {
    },
  • "services": {
    },
  • "rankings": {
    }
}

PublicMatch

PublicMatchController_getMatch

Responses

Response samples

Content type
application/json
{
  • "match": {
    },
  • "viewer": {
    },
  • "warnings": [
    ],
  • "validation": {
    },
  • "lineups": {
    },
  • "timeline": {
    },
  • "report": {
    },
  • "headToHead": {
    },
  • "gallery": {
    },
  • "providers": {
    }
}

Matches

MatchesController_updateMatchSchedule

Request Body schema: application/json
required
categoryId
string (ID)
championshipId
string (ID)
startsAt
string (ISODateString)
object (MatchVenueDto)

SPEC-DOMAIN-MATCH-001 "Campo cadastrado e local livre são alternativas". No Field domain exists yet (IS-MVP-13.1, not built), so kind: 'field' is declared for forward compatibility but the create/edit flows in this pack only ever produce free_location — registered in the EP-MVP-06.1 handoff as a known limitation until fields exist to reference.

version
required
number

Responses

Request samples

Content type
application/json
{
  • "categoryId": "string",
  • "championshipId": "string",
  • "startsAt": "string",
  • "venue": {
    },
  • "version": 0
}

Response samples

Content type
application/json
{
  • "match": {
    }
}

MatchesController_createMatch

Request Body schema: application/json
required
homeTeamId
required
string (ID)
awayTeamId
required
string (ID)
type
required
string (MatchType)
Enum: "friendly" "championship"
categoryId
required
string (ID)
championshipId
string (ID)
editionId
string (ID)
startsAt
string (ISODateString)
object (MatchVenueDto)

SPEC-DOMAIN-MATCH-001 "Campo cadastrado e local livre são alternativas". No Field domain exists yet (IS-MVP-13.1, not built), so kind: 'field' is declared for forward compatibility but the create/edit flows in this pack only ever produce free_location — registered in the EP-MVP-06.1 handoff as a known limitation until fields exist to reference.

Responses

Request samples

Content type
application/json
{
  • "homeTeamId": "string",
  • "awayTeamId": "string",
  • "type": "friendly",
  • "categoryId": "string",
  • "championshipId": "string",
  • "editionId": "string",
  • "startsAt": "string",
  • "venue": {
    }
}

Response samples

Content type
application/json
{
  • "match": {
    }
}

MatchesController_listMatches

Responses

Response samples

Content type
application/json
{
  • "matches": [
    ]
}

MatchesController_getMatchManagement

Responses

Response samples

Content type
application/json
{
  • "match": {
    }
}

MatchesController_startMatch

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "match": {
    }
}

MatchesController_finishMatchWithoutResult

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "match": {
    }
}

MatchesController_cancelMatch

Request Body schema: application/json
required
version
required
number
reason
required
string

Responses

Request samples

Content type
application/json
{
  • "version": 0,
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "match": {
    }
}

MatchesController_reportMatchResult

Request Body schema: application/json
required
homeScore
required
number
awayScore
required
number
reportedByTeamId
required
string (ID)
notes
string
version
required
number

Responses

Request samples

Content type
application/json
{
  • "homeScore": 0,
  • "awayScore": 0,
  • "reportedByTeamId": "string",
  • "notes": "string",
  • "version": 0
}

Response samples

Content type
application/json
{
  • "result": {
    },
  • "match": {
    }
}

MatchesController_validateMatchResult

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "result": {
    },
  • "match": {
    }
}

MatchesController_contestMatchResult

Request Body schema: application/json
required
reason
required
string
evidence
Array of strings
version
required
number

Responses

Request samples

Content type
application/json
{
  • "reason": "string",
  • "evidence": [
    ],
  • "version": 0
}

Response samples

Content type
application/json
{
  • "dispute": {
    },
  • "match": {
    }
}

MatchesController_createRetification

Request Body schema: application/json
required
resolution
required
string
Enum: "validated" "cancelled"
reason
required
string
homeScore
number
awayScore
number
version
required
number

Responses

Request samples

Content type
application/json
{
  • "resolution": "validated",
  • "reason": "string",
  • "homeScore": 0,
  • "awayScore": 0,
  • "version": 0
}

Response samples

Content type
application/json
{
  • "retification": {
    },
  • "match": {
    }
}

MatchesController_getMatchReport

Responses

Response samples

Content type
application/json
{
  • "report": {
    }
}

MatchesController_upsertMatchReport

Request Body schema: application/json
required
required
Array of objects (UpsertMatchTeamLineupRequest)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "lineups": [
    ],
  • "version": 0
}

Response samples

Content type
application/json
{
  • "report": {
    }
}

MatchesController_createMatchEvent

Request Body schema: application/json
required
type
required
string (MatchEventType)
Enum: "goal" "yellow_card" "red_card" "substitution" "administrative"
teamId
required
string (ID)
period
required
string (MatchEventPeriod)
Enum: "first_half" "second_half" "extra_time" "penalties" "administrative"
minute
required
number
primaryLinkId
string (ID)
secondaryLinkId
string (ID)
note
string

Responses

Request samples

Content type
application/json
{
  • "type": "goal",
  • "teamId": "string",
  • "period": "first_half",
  • "minute": 0,
  • "primaryLinkId": "string",
  • "secondaryLinkId": "string",
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "event": {
    },
  • "report": {
    }
}

MatchesController_deleteMatchEvent

Request Body schema: application/json
required
reason
string

Responses

Request samples

Content type
application/json
{
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "completed": true
}

MatchesController_addMatchGuestPlayer

Request Body schema: application/json
required
teamId
required
string (ID)
displayName
required
string
position
required
string

Responses

Request samples

Content type
application/json
{
  • "teamId": "string",
  • "displayName": "string",
  • "position": "string"
}

Response samples

Content type
application/json
{
  • "participant": {
    }
}

PublicChampionship

PublicChampionshipController_getChampionship

Responses

Response samples

Content type
application/json
{
  • "championship": {
    },
  • "viewer": {
    },
  • "warnings": [
    ],
  • "regulation": {
    },
  • "fixtures": {
    },
  • "standings": {
    },
  • "bracket": {
    },
  • "registrations": {
    },
  • "topScorers": {
    },
  • "discipline": {
    }
}

PublicField

PublicFieldController_getField

Responses

Response samples

Content type
application/json
{
  • "field": {
    },
  • "viewer": {
    },
  • "warnings": [
    ],
  • "matches": {
    },
  • "gallery": {
    }
}

PublicService

PublicServiceController_getService

Responses

Response samples

Content type
application/json
{
  • "service": {
    },
  • "viewer": {
    },
  • "warnings": [
    ],
  • "showcase": {
    },
  • "providers": {
    },
  • "eventLinks": {
    }
}

TerritoryCatalog

TerritoryCatalogController_listStates

Responses

Response samples

Content type
application/json
{
  • "states": [
    ]
}

TerritoryCatalogController_listCities

Responses

Response samples

Content type
application/json
{
  • "cities": [
    ]
}

TerritoryCatalogController_listDistricts

Responses

Response samples

Content type
application/json
{
  • "districts": [
    ]
}

TerritoryCatalogController_listNeighborhoods

Responses

Response samples

Content type
application/json
{
  • "neighborhoods": [
    ]
}

TerritoryCatalogController_resolveVocabulary

Responses

Response samples

Content type
application/json
{
  • "vocabulary": {
    }
}

Search

SearchController_suggestions

Responses

Response samples

Content type
application/json
{
  • "suggestions": [
    ]
}

SearchController_searchTeams

Responses

Response samples

Content type
application/json
{
  • "ok": false,
  • "error": {
    },
  • "meta": {
    }
}

SearchController_searchPlayers

Responses

Response samples

Content type
application/json
{
  • "ok": false,
  • "error": {
    },
  • "meta": {
    }
}

SearchController_searchMatches

Responses

Response samples

Content type
application/json
{
  • "ok": false,
  • "error": {
    },
  • "meta": {
    }
}

SearchController_searchChampionships

Responses

Response samples

Content type
application/json
{
  • "ok": false,
  • "error": {
    },
  • "meta": {
    }
}

SearchController_searchTorcidas

Responses

Response samples

Content type
application/json
{
  • "ok": false,
  • "error": {
    },
  • "meta": {
    }
}

SearchController_searchFields

Responses

Response samples

Content type
application/json
{
  • "ok": false,
  • "error": {
    },
  • "meta": {
    }
}

SearchController_searchServices

Responses

Response samples

Content type
application/json
{
  • "ok": false,
  • "error": {
    },
  • "meta": {
    }
}

Follows

FollowsController_follow

Request Body schema: application/json
required
targetType
required
string
Enum: "team" "torcida" "district" "neighborhood"
targetId
required
string (ID)

Responses

Request samples

Content type
application/json
{
  • "targetType": "team",
  • "targetId": "string"
}

Response samples

Content type
application/json
{
  • "relationship": {
    }
}

FollowsController_unfollow

Responses

Response samples

Content type
application/json
{
  • "completed": true
}

Championship

ChampionshipController_createChampionship

Request Body schema: application/json
required
name
required
string
description
string
districtId
required
string (ID)
neighborhoodId
string (ID)
object (TeamIdentityContactDto)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "districtId": "string",
  • "neighborhoodId": "string",
  • "contact": {
    }
}

Response samples

Content type
application/json
{
  • "championship": {
    },
  • "managementMembershipId": "string"
}

ChampionshipController_getManagementSummary

Responses

Response samples

Content type
application/json
{
  • "championship": {
    },
  • "membership": {
    },
  • "modules": [
    ],
  • "checklist": {
    },
  • "editions": [
    ],
  • "regulation": {
    },
  • "payment": {
    },
  • "registrations": [
    ],
  • "format": {
    },
  • "phases": [
    ],
  • "fixtures": [
    ],
  • "matches": [
    ],
  • "standings": [
    ],
  • "topScorers": [
    ],
  • "discipline": [
    ],
  • "disciplineRules": {
    }
}

ChampionshipController_updateChampionship

Request Body schema: application/json
required
name
string
slug
string
description
string
object (ImageAsset)
object (ImageAsset)
object (TeamIdentityContactDto)
districtId
string (ID)
neighborhoodId
string (ID)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string",
  • "description": "string",
  • "crest": {
    },
  • "banner": {
    },
  • "contact": {
    },
  • "districtId": "string",
  • "neighborhoodId": "string",
  • "version": 0
}

Response samples

Content type
application/json
{
  • "championship": {
    }
}

ChampionshipController_publishChampionship

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "championship": {
    },
  • "payment": {
    }
}

ChampionshipController_createEdition

Request Body schema: application/json
required
name
required
string
season
required
string
registrationMode
string (ChampionshipRegistrationMode)
Enum: "invite" "request" "both" "closed"

SPEC-API-CHAMP-001 only lists POST .../editions (create) — no update/activate endpoint. IS-MVP-07.2 therefore models "current edition" as an automatic consequence of creation order (ChampionshipEditionDto.current, "Edition Selector: permite navegar edições anteriores sem misturar stats"): the most recently created edition becomes current, demoting the previous one to history. This keeps the endpoint surface exactly as specified while still supporting multiple editions per championship. Registered as a decision in the EP-MVP-07.2 handoff.

registrationOpensAt
string (ISODateString)
registrationClosesAt
string (ISODateString)
object (AthleteEligibilityPolicyDto)

"Athlete eligibility policy" (IS-MVP-07.2 requisito funcional). A declarative rule set stored on the edition; IS-MVP-07.3 (inscrições/atletas, not yet built) is responsible for applying it against real athlete data. exclusiveToEdition mirrors the domain invariant "Atleta não pode violar regra de exclusividade da edição."

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "season": "string",
  • "registrationMode": "invite",
  • "registrationOpensAt": "string",
  • "registrationClosesAt": "string",
  • "eligibilityPolicy": {
    }
}

Response samples

Content type
application/json
{
  • "edition": {
    },
  • "editions": [
    ]
}

ChampionshipController_upsertRegulation

Request Body schema: application/json
required
text
required
string
required
Array of objects (RegulationStructuredRuleDto)
object
locked
boolean
override
boolean
overrideReason
string
version
required
number

Responses

Request samples

Content type
application/json
{
  • "text": "string",
  • "structuredRules": [
    ],
  • "pdf": {
    },
  • "locked": true,
  • "override": true,
  • "overrideReason": "string",
  • "version": 0
}

Response samples

Content type
application/json
{
  • "regulation": {
    }
}

ChampionshipController_inviteTeamRegistration

Request Body schema: application/json
required
teamId
required
string (ID)
categoryIds
required
Array of strings (ID)

Responses

Request samples

Content type
application/json
{
  • "teamId": "string",
  • "categoryIds": [
    ]
}

Response samples

Content type
application/json
{
  • "registration": {
    },
  • "registrations": [
    ]
}

ChampionshipController_requestTeamRegistration

Request Body schema: application/json
required
teamId
required
string (ID)
categoryIds
required
Array of strings (ID)
rosterLinkIds
required
Array of strings (ID)

Responses

Request samples

Content type
application/json
{
  • "teamId": "string",
  • "categoryIds": [
    ],
  • "rosterLinkIds": [
    ]
}

Response samples

Content type
application/json
{
  • "registration": {
    },
  • "registrations": [
    ]
}

ChampionshipController_decideRegistration

Request Body schema: application/json
required
decision
required
string
Enum: "approve" "reject"
reason
string
rosterLinkIds
Array of strings (ID)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "decision": "approve",
  • "reason": "string",
  • "rosterLinkIds": [
    ],
  • "version": 0
}

Response samples

Content type
application/json
{
  • "registration": {
    },
  • "registrations": [
    ]
}

ChampionshipController_configureFormat

Request Body schema: application/json
required
required
RoundRobinFormatConfig (object) or LeagueHomeAwayFormatConfig (object) or KnockoutFormatConfig (object) or KnockoutHomeAwayFormatConfig (object) or GroupsThenKnockoutFormatConfig (object) (ChampionshipFormatConfig)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "config": {
    },
  • "version": 0
}

Response samples

Content type
application/json
{
  • "format": {
    }
}

ChampionshipController_createPhase

Request Body schema: application/json
required
kind
required
string (PhaseKind)
Enum: "group" "knockout" "final"

"Phase builder" (IS requisito funcional). SPEC-UX-CHAMP-MGMT-001's component list has no distinct "Phase Builder" screen — phase structure is folded into the Format Wizard's "preview da estrutura". groups_then_knockout is the only format that produces real group phases (teams distributed deterministically by registration order); a placeholder knockout phase is recorded for the elimination stage with teamIds: [] (advancement depends on validated group results, IS-MVP-07.5 scope — same staged-completion precedent as 07.1's format placeholder deferred to this pack). POST .../phases still exists as a standalone, independently callable/testable endpoint (SPEC-API-CHAMP-001), not only an internal side effect.

name
required
string
groupName
string
teamIds
required
Array of strings (ID)

Responses

Request samples

Content type
application/json
{
  • "kind": "group",
  • "name": "string",
  • "groupName": "string",
  • "teamIds": [
    ]
}

Response samples

Content type
application/json
{
  • "phase": {
    },
  • "phases": [
    ]
}

ChampionshipController_generateFixturePreview

Request Body schema: application/json
required
startDate
string (ISODateString)
matchIntervalDays
number

Responses

Request samples

Content type
application/json
{
  • "startDate": "string",
  • "matchIntervalDays": 0
}

Response samples

Content type
application/json
{
  • "preview": {
    }
}

ChampionshipController_confirmFixtures

Request Body schema: application/json
required
inputHash
required
string
startDate
string (ISODateString)
matchIntervalDays
number

Responses

Request samples

Content type
application/json
{
  • "inputHash": "string",
  • "startDate": "string",
  • "matchIntervalDays": 0
}

Response samples

Content type
application/json
{
  • "fixtures": [
    ]
}

ChampionshipController_getStandings

Responses

Response samples

Content type
application/json
{
  • "standings": [
    ]
}

ChampionshipController_getTopScorers

Responses

Response samples

Content type
application/json
{
  • "topScorers": [
    ]
}

ChampionshipController_upsertDisciplineRules

Request Body schema: application/json
required
yellowCardsForSuspension
required
number
redCardSuspensionMatches
required
number
Array of objects (DisciplineOverrideEntryDto)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "yellowCardsForSuspension": 0,
  • "redCardSuspensionMatches": 0,
  • "overrides": [
    ],
  • "version": 0
}

Response samples

Content type
application/json
{
  • "rules": {
    },
  • "overrides": [
    ],
  • "players": [
    ]
}

ChampionshipController_checkPublicationPaymentStatus

Responses

Response samples

Content type
application/json
{
  • "championship": {
    },
  • "payment": {
    }
}

Torcida

TorcidaController_createTorcida

Request Body schema: application/json
required
name
required
string
teamId
required
string (ID)
districtId
required
string (ID)
neighborhoodId
string (ID)
joinMode
required
string (PublicTorcidaJoinMode)
Enum: "open" "approval_required" "invite_only"
bio
string
object (TeamIdentityContactDto)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "teamId": "string",
  • "districtId": "string",
  • "neighborhoodId": "string",
  • "joinMode": "open",
  • "bio": "string",
  • "contact": {
    }
}

Response samples

Content type
application/json
{
  • "torcida": {
    },
  • "managementMembershipId": "string"
}

TorcidaController_getManagementSummary

Responses

Response samples

Content type
application/json
{
  • "torcida": {
    },
  • "membership": {
    },
  • "modules": [
    ],
  • "team": {
    }
}

TorcidaController_updateTorcida

Request Body schema: application/json
required
name
string
slug
string
bio
string
object (ImageAsset)
object (ImageAsset)
joinMode
string (PublicTorcidaJoinMode)
Enum: "open" "approval_required" "invite_only"
object (TeamIdentityContactDto)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string",
  • "bio": "string",
  • "crest": {
    },
  • "banner": {
    },
  • "joinMode": "open",
  • "contact": {
    },
  • "version": 0
}

Response samples

Content type
application/json
{
  • "torcida": {
    }
}

TorcidaController_resubmit

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "torcida": {
    }
}

TorcidaController_join

Responses

Response samples

Content type
application/json
{
  • "membershipStatus": "none",
  • "viewer": {
    }
}

TorcidaController_listMembers

Responses

Response samples

Content type
application/json
{
  • "queue": [
    ],
  • "active": [
    ],
  • "history": [
    ]
}

TorcidaController_searchMemberCandidates

Responses

Response samples

Content type
application/json
{
  • "candidates": [
    ]
}

TorcidaController_inviteMember

Request Body schema: application/json
required
userId
required
string (ID)

Responses

Request samples

Content type
application/json
{
  • "userId": "string"
}

Response samples

Content type
application/json
{
  • "member": {
    }
}

TorcidaController_decideMembership

Request Body schema: application/json
required
decision
required
string
Enum: "approve" "reject"
reason
string

Responses

Request samples

Content type
application/json
{
  • "decision": "approve",
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "member": {
    }
}

TorcidaController_removeMember

Request Body schema: application/json
required
reason
string

Responses

Request samples

Content type
application/json
{
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "member": {
    }
}

TorcidaController_listPosts

Responses

Response samples

Content type
application/json
{
  • "posts": [
    ]
}

TorcidaController_createPost

Request Body schema: application/json
required
type
required
string (OfficialPostContentType)
Enum: "text" "photo" "link"

Allowed shapes for an official post (TeamPostDto/TorcidaPostDto, IS-MVP-11.2 "Allowed post types") — shared by both entity kinds since the constraint is about content shape, not entity identity (unlike TeamPostStatus/TorcidaPostStatus, which stay independently declared because their transitions could diverge per entity in the future).

title
required
string
text
required
string
object (ImageAsset)
object (PostLinkDto)

An external link attached to an official post (IS-MVP-11.2 "Image/card/link and preview") — a card-style attachment distinct from an uploaded ImageAsset.

publishNow
required
boolean

Responses

Request samples

Content type
application/json
{
  • "type": "text",
  • "title": "string",
  • "text": "string",
  • "media": {
    },
  • "link": {
    },
  • "publishNow": true
}

Response samples

Content type
application/json
{
  • "post": {
    }
}

TorcidaController_updatePost

Request Body schema: application/json
required
title
string
text
string
object (ImageAsset)
object (PostLinkDto)

An external link attached to an official post (IS-MVP-11.2 "Image/card/link and preview") — a card-style attachment distinct from an uploaded ImageAsset.

version
required
number

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "text": "string",
  • "media": {
    },
  • "link": {
    },
  • "version": 0
}

Response samples

Content type
application/json
{
  • "post": {
    }
}

TorcidaController_publishPost

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "post": {
    }
}

TorcidaController_archivePost

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "post": {
    }
}

TorcidaController_getWallet

Responses

Response samples

Content type
application/json
{
  • "wallet": {
    }
}

TorcidaController_listWalletEntries

Responses

Response samples

Content type
application/json
{
  • "entries": [
    ],
  • "pagination": {
    }
}

TorcidaController_useWalletCredits

Request Body schema: application/json
required
required
object (MoneyAmount)
purpose
required
string
note
string

Responses

Request samples

Content type
application/json
{
  • "amount": {
    },
  • "purpose": "string",
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "wallet": {
    },
  • "entry": {
    }
}

TorcidaController_supportTorcida

Request Body schema: application/json
required
optionId
required
string (TorcidaSupportOptionId)
Enum: "lote_10" "lote_20" "lote_50"

Preset "lotes de crédito" for support intake, same vocabulary the general wallet domain will use (IS-MVP-09.1) — a fixed menu rather than a free-form amount field, since SPEC-DOMAIN-TORCIDA-001 "Fluxos funcionais: Transferência com time" already speaks of "saldo e lotes", and no UX spec in this pack's canonical list defines a free-amount checkout affordance.

anonymous
required
boolean

Responses

Request samples

Content type
application/json
{
  • "optionId": "lote_10",
  • "anonymous": true
}

Response samples

Content type
application/json
{
  • "payment": {
    }
}

TorcidaController_checkSupportPaymentStatus

Responses

Response samples

Content type
application/json
{
  • "payment": {
    }
}

TorcidaController_transferWallet

Request Body schema: application/json
required
targetOwnerType
required
string (WalletOwnerType)
Enum: "team" "torcida"

IS-MVP-09.1 scoped this domain to team only, deferring unification with torcida's own stopgap wallet (TorcidaWalletDto, EP-MVP-08.3 — a scalar balance + flat ledger) to a future pack, as a registered decision rather than an inference. IS-MVP-09.3 ("Transferências e consumo de créditos") is that pack: SPEC-DOMAIN-WALLET-001 "Contratos compartilhados" and "Wallet pertence apenas a team ou torcida no MVP" describe one shared CreditLotDto/WalletEntryDto/ FIFO/90-day-expiry model for both owner types, not two parallel systems — so torcida's wallet storage now lives here too. TorcidaWalletDto/TorcidaWalletLedgerEntryDto/ TransferTorcidaWalletRequest are retired (packages/contracts/src/torcida/torcida.dto.ts); torcida's own HTTP surface (/torcidas/:id/wallet*) stays in TorcidasModule for permission locality (its governance membership store is intentionally separate from team's, per TorcidaRecord's module doc), but every read/write is delegated to this module's WalletApplicationService via WalletCreditPort — one shared ledger, two authorization entry points.

targetOwnerId
required
string (ID)
required
object (MoneyAmount)
note
string

Responses

Request samples

Content type
application/json
{
  • "targetOwnerType": "team",
  • "targetOwnerId": "string",
  • "amount": {
    },
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "wallet": {
    },
  • "entry": {
    }
}

TorcidaController_listManagers

Responses

Response samples

Content type
application/json
{
  • "managers": [
    ]
}

TorcidaController_inviteManager

Request Body schema: application/json
required
userId
required
string (ID)
role
required
string (ManagementRole)
Enum: "primary_owner" "admin_manager" "financial_manager" "media_manager" "sports_manager" "squad_manager" "events_manager" "viewer"
Array of objects (PermissionOverrideDto)

Responses

Request samples

Content type
application/json
{
  • "userId": "string",
  • "role": "primary_owner",
  • "overrides": [
    ]
}

Response samples

Content type
application/json
{
  • "manager": {
    }
}

TorcidaController_searchManagerCandidates

Responses

Response samples

Content type
application/json
{
  • "candidates": [
    ]
}

TorcidaController_respondManagerInvite

Request Body schema: application/json
required
decision
required
string
Enum: "accept" "reject"

Responses

Request samples

Content type
application/json
{
  • "decision": "accept"
}

Response samples

Content type
application/json
{
  • "manager": {
    }
}

TorcidaController_updateManager

Request Body schema: application/json
required
role
string (ManagementRole)
Enum: "primary_owner" "admin_manager" "financial_manager" "media_manager" "sports_manager" "squad_manager" "events_manager" "viewer"
Array of objects (PermissionOverrideDto)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "role": "primary_owner",
  • "overrides": [
    ],
  • "version": 0
}

Response samples

Content type
application/json
{
  • "manager": {
    }
}

TorcidaController_revokeManager

Responses

Response samples

Content type
application/json
{
  • "manager": {
    }
}

TorcidaController_transferPrimaryOwner

Request Body schema: application/json
required
newOwnerMembershipId
required
string (ID)
currentOwnerVersion
required
number

Responses

Request samples

Content type
application/json
{
  • "newOwnerMembershipId": "string",
  • "currentOwnerVersion": 0
}

Response samples

Content type
application/json
{
  • "managers": [
    ]
}

TorcidaController_listAuditLogs

Responses

Response samples

Content type
application/json
{
  • "logs": [
    ]
}

Wallet

WalletController_getWallet

Responses

Response samples

Content type
application/json
{
  • "wallet": {
    }
}

WalletController_listCreditLots

Responses

Response samples

Content type
application/json
{
  • "lots": [
    ]
}

WalletController_listEntries

Responses

Response samples

Content type
application/json
{
  • "entries": [
    ],
  • "pagination": {
    }
}

WalletController_exportEntries

Responses

Response samples

Content type
application/json
{
  • "fileName": "string",
  • "contentType": "text/csv; charset=utf-8",
  • "content": "string",
  • "entryCount": 0,
  • "generatedAt": "string"
}

WalletController_restrictWallet

Request Body schema: application/json
required
reason
required
string

Responses

Request samples

Content type
application/json
{
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "wallet": {
    },
  • "audit": {
    }
}

WalletController_restoreWallet

Request Body schema: application/json
required
reason
required
string

Responses

Request samples

Content type
application/json
{
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "wallet": {
    },
  • "audit": {
    }
}

WalletController_useCredits

Request Body schema: application/json
required
required
object (MoneyAmount)
purpose
required
string
note
string

Responses

Request samples

Content type
application/json
{
  • "amount": {
    },
  • "purpose": "string",
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "wallet": {
    },
  • "entry": {
    }
}

WalletController_transferCredits

Request Body schema: application/json
required
targetOwnerType
required
string (WalletOwnerType)
Enum: "team" "torcida"

IS-MVP-09.1 scoped this domain to team only, deferring unification with torcida's own stopgap wallet (TorcidaWalletDto, EP-MVP-08.3 — a scalar balance + flat ledger) to a future pack, as a registered decision rather than an inference. IS-MVP-09.3 ("Transferências e consumo de créditos") is that pack: SPEC-DOMAIN-WALLET-001 "Contratos compartilhados" and "Wallet pertence apenas a team ou torcida no MVP" describe one shared CreditLotDto/WalletEntryDto/ FIFO/90-day-expiry model for both owner types, not two parallel systems — so torcida's wallet storage now lives here too. TorcidaWalletDto/TorcidaWalletLedgerEntryDto/ TransferTorcidaWalletRequest are retired (packages/contracts/src/torcida/torcida.dto.ts); torcida's own HTTP surface (/torcidas/:id/wallet*) stays in TorcidasModule for permission locality (its governance membership store is intentionally separate from team's, per TorcidaRecord's module doc), but every read/write is delegated to this module's WalletApplicationService via WalletCreditPort — one shared ledger, two authorization entry points.

targetOwnerId
required
string (ID)
required
object (MoneyAmount)
note
string

Responses

Request samples

Content type
application/json
{
  • "targetOwnerType": "team",
  • "targetOwnerId": "string",
  • "amount": {
    },
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "wallet": {
    },
  • "entry": {
    }
}

Field

FieldController_createField

Request Body schema: application/json
required
name
required
string
districtId
required
string (ID)
neighborhoodId
string (ID)
bio
string
object (ImageAsset)
required
object (FieldAddressDto)
object (FieldContactDto)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "districtId": "string",
  • "neighborhoodId": "string",
  • "bio": "string",
  • "banner": {
    },
  • "address": {
    },
  • "contact": {
    }
}

Response samples

Content type
application/json
{
  • "field": {
    },
  • "managementMembershipId": "string"
}

FieldController_getManagementSummary

Responses

Response samples

Content type
application/json
{
  • "field": {
    },
  • "membership": {
    },
  • "modules": [
    ],
  • "gallery": [
    ],
  • "matches": {
    }
}

FieldController_updateField

Request Body schema: application/json
required
name
string
slug
string
bio
string
object (ImageAsset)
neighborhoodId
string (ID)
object (FieldAddressDto)
object (FieldContactDto)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string",
  • "bio": "string",
  • "banner": {
    },
  • "neighborhoodId": "string",
  • "address": {
    },
  • "contact": {
    },
  • "version": 0
}

Response samples

Content type
application/json
{
  • "field": {
    }
}

FieldController_deactivateField

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "field": {
    }
}

FieldController_addGalleryAsset

Request Body schema: application/json
required
required
object (ImageAsset)
caption
string

Responses

Request samples

Content type
application/json
{
  • "image": {
    },
  • "caption": "string"
}

Response samples

Content type
application/json
{
  • "asset": {
    }
}

FieldController_removeGalleryAsset

Responses

Response samples

Content type
application/json
{
  • "gallery": [
    ]
}

TeamManagement

TeamManagementController_createTeam

Request Body schema: application/json
required
name
required
string
shortName
string
districtId
required
string (ID)
neighborhoodId
string (ID)
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "shortName": "string",
  • "districtId": "string",
  • "neighborhoodId": "string",
  • "categories": [
    ]
}

Response samples

Content type
application/json
{
  • "team": {
    },
  • "managementMembershipId": "string"
}

TeamManagementController_getManagementSummary

Responses

Response samples

Content type
application/json
{
  • "team": {
    },
  • "membership": {
    },
  • "modules": [
    ],
  • "pendingActions": [
    ]
}

TeamManagementController_getMyEntities

Responses

Response samples

Content type
application/json
{
  • "teams": [
    ],
  • "torcidas": [
    ],
  • "championships": [
    ],
  • "fields": [
    ],
  • "services": [
    ]
}

TeamManagementController_updateTeam

Request Body schema: application/json
required
name
string
shortName
string
slug
string
bio
string
object (ImageAsset)
object (ImageAsset)
object (TeamColorsDto)
object (TeamIdentityContactDto)
districtId
string (ID)
neighborhoodId
string (ID)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "shortName": "string",
  • "slug": "string",
  • "bio": "string",
  • "crest": {
    },
  • "banner": {
    },
  • "colors": {
    },
  • "contact": {
    },
  • "districtId": "string",
  • "neighborhoodId": "string",
  • "version": 0
}

Response samples

Content type
application/json
{
  • "team": {
    }
}

TeamManagementController_createCategory

Request Body schema: application/json
required
name
required
string
version
required
number

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "version": 0
}

Response samples

Content type
application/json
{
  • "team": {
    },
  • "category": {
    }
}

TeamManagementController_updateCategory

Request Body schema: application/json
required
name
string
active
boolean
order
number
version
required
number

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "active": true,
  • "order": 0,
  • "version": 0
}

Response samples

Content type
application/json
{
  • "team": {
    },
  • "category": {
    }
}

TeamManagementController_searchPlayerCandidates

Responses

Response samples

Content type
application/json
{
  • "players": [
    ]
}

TeamManagementController_invitePlayer

Request Body schema: application/json
required
playerId
required
string (ID)
categoryIds
required
Array of strings (ID)
message
string

Responses

Request samples

Content type
application/json
{
  • "playerId": "string",
  • "categoryIds": [
    ],
  • "message": "string"
}

Response samples

Content type
application/json
{
  • "link": {
    }
}

TeamManagementController_createGuestPlayer

Request Body schema: application/json
required
displayName
required
string
categoryIds
required
Array of strings (ID)
privateContact
string
privateDocument
string

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "categoryIds": [
    ],
  • "privateContact": "string",
  • "privateDocument": "string"
}

Response samples

Content type
application/json
{
  • "link": {
    }
}

TeamManagementController_listMyInvites

Responses

Response samples

Content type
application/json
{
  • "invites": [
    ]
}

TeamManagementController_respondPlayerInvite

Request Body schema: application/json
required
decision
required
string
Enum: "accept" "reject"

Responses

Request samples

Content type
application/json
{
  • "decision": "accept"
}

Response samples

Content type
application/json
{
  • "link": {
    }
}

TeamManagementController_listGuestConfirmations

Responses

Response samples

Content type
application/json
{
  • "confirmations": [
    ]
}

TeamManagementController_respondGuestConfirmation

Request Body schema: application/json
required
decision
required
string (GuestConfirmationDecision)
Enum: "confirm" "contest"
reason
string

Responses

Request samples

Content type
application/json
{
  • "decision": "confirm",
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "confirmation": {
    }
}

TeamManagementController_listPosts

Responses

Response samples

Content type
application/json
{
  • "posts": [
    ]
}

TeamManagementController_createPost

Request Body schema: application/json
required
type
required
string (OfficialPostContentType)
Enum: "text" "photo" "link"

Allowed shapes for an official post (TeamPostDto/TorcidaPostDto, IS-MVP-11.2 "Allowed post types") — shared by both entity kinds since the constraint is about content shape, not entity identity (unlike TeamPostStatus/TorcidaPostStatus, which stay independently declared because their transitions could diverge per entity in the future).

title
required
string
text
required
string
object (ImageAsset)
object (PostLinkDto)

An external link attached to an official post (IS-MVP-11.2 "Image/card/link and preview") — a card-style attachment distinct from an uploaded ImageAsset.

publishNow
required
boolean

Responses

Request samples

Content type
application/json
{
  • "type": "text",
  • "title": "string",
  • "text": "string",
  • "media": {
    },
  • "link": {
    },
  • "publishNow": true
}

Response samples

Content type
application/json
{
  • "post": {
    }
}

TeamManagementController_updatePost

Request Body schema: application/json
required
title
string
text
string
object (ImageAsset)
object (PostLinkDto)

An external link attached to an official post (IS-MVP-11.2 "Image/card/link and preview") — a card-style attachment distinct from an uploaded ImageAsset.

version
required
number

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "text": "string",
  • "media": {
    },
  • "link": {
    },
  • "version": 0
}

Response samples

Content type
application/json
{
  • "post": {
    }
}

TeamManagementController_publishPost

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "post": {
    }
}

TeamManagementController_archivePost

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "post": {
    }
}

TeamManagementController_listSuggestedPosts

Responses

Response samples

Content type
application/json
{
  • "suggestions": [
    ]
}

TeamManagementController_approveSuggestedPost

Request Body schema: application/json
required
title
string
text
string
object (ImageAsset)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "text": "string",
  • "media": {
    },
  • "version": 0
}

Response samples

Content type
application/json
{
  • "suggestion": {
    }
}

TeamManagementController_rejectSuggestedPost

Request Body schema: application/json
required
reason
string
version
required
number

Responses

Request samples

Content type
application/json
{
  • "reason": "string",
  • "version": 0
}

Response samples

Content type
application/json
{
  • "suggestion": {
    }
}

TeamManagementController_listTorcidaRequests

Responses

Response samples

Content type
application/json
{
  • "requests": [
    ]
}

TeamManagementController_decideTorcidaRequest

Request Body schema: application/json
required
decision
required
string
Enum: "approve" "reject"
reason
string

Responses

Request samples

Content type
application/json
{
  • "decision": "approve",
  • "reason": "string"
}

Response samples

Content type
application/json
{
  • "request": {
    }
}

TeamManagementController_listManagers

Responses

Response samples

Content type
application/json
{
  • "managers": [
    ]
}

TeamManagementController_searchManagerCandidates

Responses

Response samples

Content type
application/json
{
  • "candidates": [
    ]
}

TeamManagementController_inviteManager

Request Body schema: application/json
required
userId
required
string (ID)
role
required
string (ManagementRole)
Enum: "primary_owner" "admin_manager" "financial_manager" "media_manager" "sports_manager" "squad_manager" "events_manager" "viewer"
Array of objects (PermissionOverrideDto)

Responses

Request samples

Content type
application/json
{
  • "userId": "string",
  • "role": "primary_owner",
  • "overrides": [
    ]
}

Response samples

Content type
application/json
{
  • "manager": {
    }
}

TeamManagementController_respondManagerInvite

Request Body schema: application/json
required
decision
required
string
Enum: "accept" "reject"

Responses

Request samples

Content type
application/json
{
  • "decision": "accept"
}

Response samples

Content type
application/json
{
  • "manager": {
    }
}

TeamManagementController_updateManager

Request Body schema: application/json
required
role
string (ManagementRole)
Enum: "primary_owner" "admin_manager" "financial_manager" "media_manager" "sports_manager" "squad_manager" "events_manager" "viewer"
Array of objects (PermissionOverrideDto)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "role": "primary_owner",
  • "overrides": [
    ],
  • "version": 0
}

Response samples

Content type
application/json
{
  • "manager": {
    }
}

TeamManagementController_revokeManager

Responses

Response samples

Content type
application/json
{
  • "manager": {
    }
}

TeamManagementController_transferPrimaryOwner

Request Body schema: application/json
required
newOwnerMembershipId
required
string (ID)
currentOwnerVersion
required
number

Responses

Request samples

Content type
application/json
{
  • "newOwnerMembershipId": "string",
  • "currentOwnerVersion": 0
}

Response samples

Content type
application/json
{
  • "managers": [
    ]
}

TeamManagementController_listAuditLogs

Responses

Response samples

Content type
application/json
{
  • "logs": [
    ]
}

TeamManagementController_markTeamInactive

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "team": {
    }
}

TeamManagementController_closeTeam

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "team": {
    }
}

Service

ServiceController_createService

Request Body schema: application/json
required
name
required
string
type
required
string (ServiceType)
Enum: "refereeing" "photo_video" "design_media" "uniforms" "supplies" "generic"
districtId
required
string (ID)
neighborhoodId
string (ID)
bio
string
object (ImageAsset)
object (ServiceContactDto)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "type": "refereeing",
  • "districtId": "string",
  • "neighborhoodId": "string",
  • "bio": "string",
  • "banner": {
    },
  • "contact": {
    }
}

Response samples

Content type
application/json
{
  • "service": {
    },
  • "managementMembershipId": "string"
}

ServiceController_getManagementSummary

Responses

Response samples

Content type
application/json
{
  • "service": {
    },
  • "membership": {
    },
  • "modules": [
    ],
  • "showcase": [
    ],
  • "providerLinks": [
    ],
  • "eventLinks": [
    ]
}

ServiceController_updateService

Request Body schema: application/json
required
name
string
slug
string
type
string (ServiceType)
Enum: "refereeing" "photo_video" "design_media" "uniforms" "supplies" "generic"
bio
string
object (ImageAsset)
neighborhoodId
string (ID)
object (ServiceContactDto)
version
required
number

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string",
  • "type": "refereeing",
  • "bio": "string",
  • "banner": {
    },
  • "neighborhoodId": "string",
  • "contact": {
    },
  • "version": 0
}

Response samples

Content type
application/json
{
  • "service": {
    }
}

ServiceController_deactivateService

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "service": {
    }
}

ServiceController_addShowcaseItem

Request Body schema: application/json
required
required
object (ImageAsset)
title
required
string
description
string
href
string

Responses

Request samples

Content type
application/json
{
  • "image": {
    },
  • "title": "string",
  • "description": "string",
  • "href": "string"
}

Response samples

Content type
application/json
{
  • "item": {
    }
}

ServiceController_removeShowcaseItem

Responses

Response samples

Content type
application/json
{
  • "showcase": [
    ]
}

ServiceController_addRegisteredProvider

Request Body schema: application/json
required
userId
required
string (ID)
roleLabel
string

Responses

Request samples

Content type
application/json
{
  • "userId": "string",
  • "roleLabel": "string"
}

Response samples

Content type
application/json
{
  • "providerLink": {
    }
}

ServiceController_addUnregisteredProvider

Request Body schema: application/json
required
displayName
required
string
roleLabel
string
object (ImageAsset)
contact
string
document
string

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "roleLabel": "string",
  • "avatar": {
    },
  • "contact": "string",
  • "document": "string"
}

Response samples

Content type
application/json
{
  • "providerLink": {
    }
}

Payments

PaymentsController_createSupport

Request Body schema: application/json
required
targetType
required
string (SupportTargetType)

Public checkout (SPEC-API-FINANCE-001 POST /support, "Público"). targetType stays 'team' only in this pack for the same reason WalletOwnerType does — torcida already has its own dedicated, self-contained support endpoint (POST /torcidas/:id/support, EP-MVP-08.3), not migrated onto this generic module here.

Value: "team"
targetId
required
string (ID)
required
object (MoneyAmount)
identityMode
required
string (SupportIdentityMode)
Enum: "anonymous" "identified"

Responses

Request samples

Content type
application/json
{
  • "targetType": "team",
  • "targetId": "string",
  • "amount": {
    },
  • "identityMode": "anonymous"
}

Response samples

Content type
application/json
{
  • "support": {
    },
  • "payment": {
    }
}

PaymentsController_getSupport

Responses

Response samples

Content type
application/json
{
  • "support": {
    },
  • "payment": {
    }
}

PaymentsController_checkSupportPaymentStatus

Responses

Response samples

Content type
application/json
{
  • "support": {
    },
  • "payment": {
    }
}

PaymentsController_getPayment

Responses

Response samples

Content type
application/json
{
  • "payment": {
    }
}

PaymentsController_handleWebhook

Request Body schema: application/json
required
eventId
required
string
paymentId
required
string (ID)
status
required
string (PixWebhookEventStatus)
Enum: "paid" "failed"

Provider → backend confirmation (SPEC-API-FINANCE-001 POST /webhooks/pix/:provider, SPEC-DOMAIN-PAYMENT-001 "Webhook é autenticado/validado"). Applies the same idempotent effect as check-status — whichever path (webhook or client poll) reaches the payment first wins; the other is a no-op replay (event.id deduplicated).

Responses

Request samples

Content type
application/json
{
  • "eventId": "string",
  • "paymentId": "string",
  • "status": "paid"
}

Response samples

Content type
application/json
{
  • "completed": true
}

Sponsorship

SponsorshipController_getAvailability

Responses

Response samples

Content type
application/json
{
  • "availability": {
    }
}

SponsorshipController_listForEntity

Responses

Response samples

Content type
application/json
{
  • "sponsorships": [
    ]
}

SponsorshipController_createCheckout

Request Body schema: application/json
required
entityType
required
string (SponsorEntityType)
Enum: "team" "torcida"

IS-MVP-10.1 (SPEC-DOMAIN-SPONSOR-001 "Incluído no MVP: Somente team e torcida") — the general cross-entity Patrocínios domain, unifying what IS-MVP-08.3 had shipped as a torcida-only, payment-less stopgap (TorcidaSponsorDto, manager-created name/logo/link with no checkout — see that type's own doc comment: "not a paid checkout in this pack"). TorcidaSponsorDto and its endpoints are retired by this pack (mirrors SPEC-DOMAIN-WALLET-001's TorcidaWalletDtoCreditLotDto unification, IS-MVP-09.3): every sponsorship, team or torcida, now goes through this one model with a real Pix checkout, packages, and an 80/20 wallet split. entityType stays an open union of exactly the two entity kinds the domain spec allows today — a future pack adding sponsorship to a third entity type only needs to extend this union and wire one more authority/eligibility check (SponsorsApplicationService), not build a parallel domain.

entityId
required
string (ID)
packageId
required
string (ID)
required
object (SponsorContentDto)

SPEC-DOMAIN-SPONSOR-001 "Imagem/logo é obrigatória"; href doubles as the reportable external contact target (IS-MVP-10.1 "Sponsor target reportable").

Responses

Request samples

Content type
application/json
{
  • "entityType": "team",
  • "entityId": "string",
  • "packageId": "string",
  • "content": {
    }
}

Response samples

Content type
application/json
{
  • "sponsorship": {
    },
  • "payment": {
    }
}

SponsorshipController_checkPaymentStatus

Responses

Response samples

Content type
application/json
{
  • "sponsorship": {
    },
  • "payment": {
    }
}

SponsorshipController_updateContent

Request Body schema: application/json
required
required
object (SponsorContentDto)

SPEC-DOMAIN-SPONSOR-001 "Imagem/logo é obrigatória"; href doubles as the reportable external contact target (IS-MVP-10.1 "Sponsor target reportable").

version
required
number

Responses

Request samples

Content type
application/json
{
  • "content": {
    },
  • "version": 0
}

Response samples

Content type
application/json
{
  • "sponsorship": {
    }
}

Feed

FeedController_getFeed

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

FeedController_hidePost

Responses

Response samples

Content type
application/json
{
  • "completed": true
}

FeedController_createMute

Request Body schema: application/json
required
entityType
required
string (FeedEntityType)
Enum: "team" "torcida"
entityId
required
string (ID)
duration
required
string (MuteDuration)
Enum: "7d" "30d" "forever"

SPEC-DOMAIN-FEED-001 "Mute": "Silenciar 7/30 dias/até reativar" (IS-MVP-11.4 "Mute entity 7/30/forever"). 'forever' never carries an expiresAt — it only ends via explicit unmute.

Responses

Request samples

Content type
application/json
{
  • "entityType": "team",
  • "entityId": "string",
  • "duration": "7d"
}

Response samples

Content type
application/json
{
  • "mute": {
    }
}

FeedController_removeMute

Responses

Response samples

Content type
application/json
{
  • "completed": true
}

FeedController_getPreferences

Responses

Response samples

Content type
application/json
{
  • "preferences": {
    }
}

Notifications

NotificationsController_listNotifications

Responses

Response samples

Content type
application/json
{
  • "notifications": [
    ],
  • "groups": [
    ]
}

NotificationsController_getCounts

Responses

Response samples

Content type
application/json
{
  • "counts": {
    }
}

NotificationsController_markRead

Request Body schema: application/json
required
ids
Array of strings (ID)
scope
string (NotificationScope)
Enum: "personal" "management"

Responses

Request samples

Content type
application/json
{
  • "ids": [
    ],
  • "scope": "personal"
}

Response samples

Content type
application/json
{
  • "completed": true
}

NotificationsController_archive

Responses

Response samples

Content type
application/json
{
  • "completed": true
}

NotificationsController_getSettings

Responses

Response samples

Content type
application/json
{
  • "settings": {
    }
}

NotificationsController_updateSettings

Request Body schema: application/json
required
object
pushEnabled
boolean

Responses

Request samples

Content type
application/json
{
  • "categories": {
    },
  • "pushEnabled": true
}

Response samples

Content type
application/json
{
  • "settings": {
    }
}

NotificationsController_listPaidPushCampaigns

Responses

Response samples

Content type
application/json
{
  • "campaigns": [
    ]
}

NotificationsController_createPaidPushCampaign

Request Body schema: application/json
required
entityType
required
string
Value: "team"
entityId
required
string (ID)
audience
required
string (PaidPushAudience)
Enum: "team_cheerers" "team_followers" "all_supporters"

Paid push campaigns (SPEC-DOMAIN-NOTIFICATION-001/SPEC-API-ENGAGEMENT-001): scoped to team only in this pack — notification.createPaidPush is granted to financial/media managers in the domain table, and only team has that permission model wired (teamRolePermissions); a torcida equivalent would need its own audience/reach story and is deferred, same scoping precedent as SuggestedPostDto (team-only, EP-MVP-11.3 handoff).

message
required
string

Responses

Request samples

Content type
application/json
{
  • "entityType": "team",
  • "entityId": "string",
  • "audience": "team_cheerers",
  • "message": "string"
}

Response samples

Content type
application/json
{
  • "campaign": {
    }
}

NotificationsController_confirmPaidPushCampaign

Request Body schema: application/json
required
version
required
number

Responses

Request samples

Content type
application/json
{
  • "version": 0
}

Response samples

Content type
application/json
{
  • "campaign": {
    }
}

Rankings

RankingsController_getRanking

Responses

Response samples

Content type
application/json
{
  • "ranking": {
    }
}

RankingsController_getTopScorers

Responses

Response samples

Content type
application/json
{
  • "topScorers": {
    }
}

Stats

StatsController_getTeamStats

Responses

Response samples

Content type
application/json
{
  • "stats": {
    }
}

StatsController_getTorcidaStats

Responses

Response samples

Content type
application/json
{
  • "stats": {
    }
}

ShareableCard

ShareableCardController_listTemplates

Responses

Response samples

Content type
application/json
{
  • "templates": [
    ]
}

ShareableCardController_create

Request Body schema: application/json
required
type
required
string (ShareableCardType)
Enum: "ranking" "top_scorer" "result" "live_score" "upcoming" "lineup" "call" "new_player" "title" "profile" "support"

SPEC-DOMAIN-SHARE-001 lists ten MVP templates (resultado, próximo jogo, escalação, convocação, reforço, título, ranking, artilharia, perfil, apoio). IS-MVP-12.1 built the ranking template and the shared card infrastructure everything else plugs into; IS-MVP-12.2 added top_scorer (artilharia); this increment (IS-MVP-12.3) adds the remaining eight — ShareableCardType grows additively per increment, the same pattern already used for OfficialPostContentType/ FeedPostSource.

format
required
string (ShareableCardFormat)
Enum: "story" "square" "vertical"
rankingType
string (RankingType)
Enum: "team_performance" "torcida_engagement"

SPEC-DOMAIN-RANKING-001: MVP ranking types are team performance (results/weights/opponent strength/regularity) and torcida engagement (members/followers, deliberately never money — "Ranking de torcida não usa dinheiro"). Artilharia (top scorers) and per-entity stats pages are IS-MVP-12.2 scope ("Artilharia e estatísticas públicas") — PlayerStatsDto (IS-MVP-05.3) is left untouched by this increment.

rankingPeriod
string (RankingPeriod)
Enum: "overall" "last_90_days" "current_championship"

current_championship requires championshipId (see RankingQuery) — there is no single "current championship" per team to infer, a team may be registered in several at once.

period
string (RankingPeriod)
Enum: "overall" "last_90_days" "current_championship"

current_championship requires championshipId (see RankingQuery) — there is no single "current championship" per team to infer, a team may be registered in several at once.

position
number

top_scorer only — 1-based position in the computed list to feature, default 1.

territoryId
string (ID)
championshipId
string (ID)
matchId
string (ID)
teamId
string (ID)
linkId
string (ID)
subject
string (ShareableCardProfileSubject)
Enum: "team" "player" "torcida" "championship"

"Perfil de time/jogador/torcida/campeonato" (SPEC-UX-SHARE-VISUAL-001 §4) is one template heading covering four public entity kinds, not four separate templates — subject discriminates which public entity the snapshot came from.

entityId
string (ID)
entityType
string
Enum: "team" "torcida"

support — which entity kind entityId refers to (wallet-bearing entities only).

Responses

Request samples

Content type
application/json
{
  • "type": "ranking",
  • "format": "story",
  • "rankingType": "team_performance",
  • "rankingPeriod": "overall",
  • "period": "overall",
  • "position": 0,
  • "territoryId": "string",
  • "championshipId": "string",
  • "matchId": "string",
  • "teamId": "string",
  • "linkId": "string",
  • "subject": "team",
  • "entityId": "string",
  • "entityType": "team"
}

Response samples

Content type
application/json
{
  • "card": {
    }
}

ShareableCardController_get

Responses

Response samples

Content type
application/json
{
  • "card": {
    }
}

ShareableCardController_generate

Responses

Response samples

Content type
application/json
{
  • "card": {
    }
}

Report

ReportController_createEvidence

Request Body schema: application/json
required
kind
required
string (EvidenceKind)
Enum: "image" "document"

SPEC-API-AUXILIARY-001 documents evidence purely by reference (CreateReportRequest. evidenceAssetIds: string[], see the spec's own report example) and assumes a presigned upload flow ("Uploads usam fluxo presigned") that does not exist anywhere in this codebase yet — confirmed by grep across contracts/services/api/packages/mocks. The closest precedent, Field/Service gallery (AddGalleryAssetRequest, IS-MVP-13.1/13.2), also has no real upload: the client assembles the asset (URL/dimensions) directly and the server stores it as ready immediately. Evidence follows the same simplification — POST /evidence (additive beyond the literal SPEC-API-AUXILIARY-001 endpoint table, same "endpoint added to make a documented request shape reachable" precedent as POST /torcidas/:id/resubmit, EP-MVP-08.1) accepts a client-supplied url/mimeType/sizeBytes and returns a ready EvidenceDto synchronously — no async processing pipeline. Divergence registered in this pack's handoff; a future pack implementing SPEC-API-MANAGEMENT-001's real presign/confirm flow should replace this the same way gallery/ crest/banner uploads are already flagged to (see NEXT_STEPS.md).

Unlike gallery images, evidence is never public: it is never embedded in any public DTO, and no target-facing (denunciado) or moderation/admin endpoint exists in this pack to read it back — only the reporter's own GET /reports/my / GET /support-requests/my echo it, which already satisfies SPEC-DOMAIN-REPORT-001 "Evidências têm acesso restrito" structurally.

url
required
string
mimeType
required
string
sizeBytes
required
number

Responses

Request samples

Content type
application/json
{
  • "kind": "image",
  • "url": "string",
  • "mimeType": "string",
  • "sizeBytes": 0
}

Response samples

Content type
application/json
{
  • "evidence": {
    }
}

ReportController_createReport

Request Body schema: application/json
required
required
object (ReportTargetDto)
reason
required
string (ReportReason)
Enum: "false_information" "inappropriate_content" "offensive_content" "spam" "impersonation" "fraud_or_scam" "other"

Standardized, product-neutral reasons (SPEC-UX-REPORTS-001 "Report Reason": "Motivos padronizados com exemplos curtos"). false_information matches the literal SPEC-API-AUXILIARY-001 example.

description
required
string
evidenceAssetIds
Array of strings (ID)

Responses

Request samples

Content type
application/json
{
  • "target": {
    },
  • "reason": "false_information",
  • "description": "string",
  • "evidenceAssetIds": [
    ]
}

Response samples

Content type
application/json
{
  • "report": {
    }
}

ReportController_listMyReports

Responses

Response samples

Content type
application/json
{
  • "reports": [
    ]
}

ReportController_listOperationalCases

Responses

Response samples

Content type
application/json
{
  • "cases": [
    ]
}

ReportController_triage

Request Body schema: application/json
required
version
required
number
severity
required
string (ModerationSeverity)
Enum: "low" "medium" "high" "critical"
note
string

Responses

Request samples

Content type
application/json
{
  • "version": 0,
  • "severity": "low",
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "case": {
    }
}

ReportController_requestComplement

Request Body schema: application/json
required
version
required
number
message
required
string

Responses

Request samples

Content type
application/json
{
  • "version": 0,
  • "message": "string"
}

Response samples

Content type
application/json
{
  • "case": {
    }
}

ReportController_resolve

Request Body schema: application/json
required
version
required
number
reason
required
string
effects
Array of strings (ModerationEffect)
Items Enum: "no_action" "preventive_suspension" "claim_approved" "merge_approved" "correction_approved" "privacy_approved"

Responses

Request samples

Content type
application/json
{
  • "version": 0,
  • "reason": "string",
  • "effects": [
    ]
}

Response samples

Content type
application/json
{
  • "case": {
    }
}

ReportController_reject

Request Body schema: application/json
required
version
required
number
reason
required
string
effects
Array of strings (ModerationEffect)
Items Enum: "no_action" "preventive_suspension" "claim_approved" "merge_approved" "correction_approved" "privacy_approved"

Responses

Request samples

Content type
application/json
{
  • "version": 0,
  • "reason": "string",
  • "effects": [
    ]
}

Response samples

Content type
application/json
{
  • "case": {
    }
}

SupportRequest

SupportRequestController_createSupportRequest

Request Body schema: application/json
required
type
required
string (SupportRequestType)
Enum: "claim" "correction" "merge" "privacy"

Domain-level canonical vocabulary (SPEC-DOMAIN-REPORT-001 "Support Request"/"Entity Claim" concepts; IS-MVP-14.2 "Requisitos funcionais detalhados": "Claim abandoned/inactive/unclaimed eligibility", "Correction/merge/privacy/anon request types"). IS-MVP-14.1 created the full SupportRequestDto/SubmitSupportRequest contract and the generic engine (create/list/detail/ cancel — the literal SPEC-API-AUXILIARY-001 endpoint table); IS-MVP-14.2 adds the per-type eligibility gate (CLAIM_NOT_ELIGIBLE against abandoned/inactive/unclaimed status) and correction/merge target-pair validation on top of that same engine — see SupportRequestApplicationService#createSupportRequest. Nothing in this codebase auto-applies a SupportRequest's effect once accepted (claim never auto-transfers ownership, correction never auto-edits data) — SPEC-DOMAIN-REPORT-001's own invariant is "Operação analisa, decide e aplica status" for every type; the eligibility gate only decides whether the request can be opened, not whether it succeeds.

object (ReportTargetDto)
claimRelationship
string (ClaimRelationship)
Enum: "owner" "manager" "player" "provider" "representative"

IS-MVP-14.2 "Claim Form: Vínculo, justificativa e evidências" (SPEC-UX-REPORTS-001) — the requester's declared relationship to the target entity, alongside the generic description (justificativa) and evidenceAssetIds. Only meaningful when type === 'claim'; Operação still verifies the relationship manually before any effect is applied (SPEC-DOMAIN-REPORT-001 "Claim de entidade").

object (ReportTargetDto)
description
required
string
evidenceAssetIds
Array of strings (ID)

Responses

Request samples

Content type
application/json
{
  • "type": "claim",
  • "target": {
    },
  • "claimRelationship": "owner",
  • "duplicateOfTarget": {
    },
  • "description": "string",
  • "evidenceAssetIds": [
    ]
}

Response samples

Content type
application/json
{
  • "supportRequest": {
    }
}

SupportRequestController_listMyRequests

Responses

Response samples

Content type
application/json
{
  • "supportRequests": [
    ]
}

SupportRequestController_getRequestDetail

Responses

Response samples

Content type
application/json
{
  • "supportRequest": {
    }
}

SupportRequestController_cancelRequest

Responses

Response samples

Content type
application/json
{
  • "supportRequest": {
    }
}

SupportRequestController_listOperationalCases

Responses

Response samples

Content type
application/json
{
  • "cases": [
    ]
}

SupportRequestController_triage

Request Body schema: application/json
required
version
required
number
severity
required
string (ModerationSeverity)
Enum: "low" "medium" "high" "critical"
note
string

Responses

Request samples

Content type
application/json
{
  • "version": 0,
  • "severity": "low",
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "case": {
    }
}

SupportRequestController_requestComplement

Request Body schema: application/json
required
version
required
number
message
required
string

Responses

Request samples

Content type
application/json
{
  • "version": 0,
  • "message": "string"
}

Response samples

Content type
application/json
{
  • "case": {
    }
}

SupportRequestController_resolve

Request Body schema: application/json
required
version
required
number
reason
required
string
effects
Array of strings (ModerationEffect)
Items Enum: "no_action" "preventive_suspension" "claim_approved" "merge_approved" "correction_approved" "privacy_approved"

Responses

Request samples

Content type
application/json
{
  • "version": 0,
  • "reason": "string",
  • "effects": [
    ]
}

Response samples

Content type
application/json
{
  • "case": {
    }
}

SupportRequestController_reject

Request Body schema: application/json
required
version
required
number
reason
required
string
effects
Array of strings (ModerationEffect)
Items Enum: "no_action" "preventive_suspension" "claim_approved" "merge_approved" "correction_approved" "privacy_approved"

Responses

Request samples

Content type
application/json
{
  • "version": 0,
  • "reason": "string",
  • "effects": [
    ]
}

Response samples

Content type
application/json
{
  • "case": {
    }
}