<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?enunciate-assumed-base-uri /lk2020/?>
<wadl:application xmlns:wadl="http://wadl.dev.java.net/2009/02" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <wadl:doc xmlns:enunciate="http://enunciate.webcohesion.com/" enunciate:generatedBy="Enunciate-2.0"/>
  
  <wadl:grammars>
  </wadl:grammars>

  <wadl:resources base="/lk2020/">

    <wadl:resource path="rankinglists">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[<p>Returns a filtered and paginated list of DTB ranking lists.</p>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="limit" style="query">
            <wadl:doc><![CDATA[optional filter for maximum number of results; 0 for no limit]]></wadl:doc>
          </wadl:param>
          <wadl:param name="offset" style="query">
            <wadl:doc><![CDATA[optional filter for pagination offset, defaults to 0]]></wadl:doc>
          </wadl:param>
          <wadl:param name="state" style="query">
            <wadl:doc><![CDATA[optional filter by ranking list state (Public, Archive for production; Public, Archive, Complete if not production)]]></wadl:doc>
          </wadl:param>
          <wadl:param name="type" style="query">
            <wadl:doc><![CDATA[optional filter by calculation type (JuAk or Seniors)]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[array of DTBRankinglistDTO]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="dwz/tournaments">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Retrieves a list of DSBTournamentDTO

<p>This endpoint supports filtering via multiple optional query parameters.
If no parameters are provided, all available tournaments are returned.</p>

<h3>Query Parameters</h3>
<ul>
<li><b>label</b> – Filter by tournament label (substring match, matches anywhere in the label,
max length: 255 characters)</li>
<li><b>vkz</b> – Filter by VKZ (prefix match, max length: 255 characters)</li>
<li><b>fromDate</b> – Minimum end date of the tournament (inclusive, ISO-8601 format, e.g. 2024-01-31)</li>
<li><b>toDate</b> – Maximum end date of the tournament (inclusive, ISO-8601 format, e.g. 2024-12-31)</li>
<li><b>referentFirstname</b> – Filter by referent first name (prefix match, matches main or additional referent, max length: 255 characters)</li>
<li><b>referentLastname</b> – Filter by referent last name (prefix match, matches main or additional referent, max length: 255 characters)</li>
<li><b>processingState</b> – Filter by processing state. Possible values: NEW, PROCESSING, DONE </li>
<li><b>ratingState</b> – Filter by rating state. Possible values: RATED or NOT_RATED </li>
<li><b>location</b> – Filter by location (prefix match, max length: 255 characters)</li>
<li><b>limit</b> – Maximum number of results to return. If omitted, all matching results are returned.</li>
<li><b>offset</b> – Zero-based index of the first result to return. Defaults to 0 if omitted.</li>
</ul>

<h3>Response</h3>
<ul>
<li><b>200 OK</b> – Returns a PagedResponse containing DSBTournamentDTO objects
matching the filters, along with pagination metadata (limit, offset, totalCount)
and PageNavigationLinks (self, first, last, next, previous).</li>
<li><b>400 Bad Request</b> – If limit or offset is negative, or fromDate is after toDate.</li>
<li><b>401 Unauthorized</b> – If the subject is not authorized.</li>
<li><b>500 Internal Server Error</b> – If an error occurs while processing the request.</li>
</ul>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="fromDate" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="label" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="limit" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="location" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="offset" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="processingState" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="ratingState" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="referentFirstname" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="referentLastname" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="toDate" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="vkz" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[paged result with matching tournaments, pagination metadata and navigation links.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="lkservice/info">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[]]></wadl:doc>
        <wadl:response>
          <wadl:doc><![CDATA[]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="lkservice/load">
      <wadl:method name="POST">
        <wadl:doc><![CDATA[]]></wadl:doc>
        <wadl:response>
          <wadl:doc><![CDATA[]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="lkservice/load">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[]]></wadl:doc>
        <wadl:response>
          <wadl:doc><![CDATA[]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="lkservice/ready">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[]]></wadl:doc>
        <wadl:response>
          <wadl:doc><![CDATA[]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="nusport/players">
      <wadl:method name="PUT">
        <wadl:doc><![CDATA[<p>Syncs nuSport persons and their properties to the player pool of the lk2020 service and returns the currently valid LKs.</p>

<p>nuSport is regarded as the leading instance for all personal properties, except the LK.
This endpoint shall be called for the totality of all NTDB persons in small batches of about 100 persons.
If a pushed person isn't present in lk2020's players pool <b>and</b> that person has no <code>fedRankOld</code> (Einstufungs-LK),
then this person is skipped.
If a pushed person isn't present in lk2020's players pool <b>and</b> that person <b>has a</b> <code>fedRankOld</code>,
then this person is added to the pool and the pushed LK is treated as initial LK starting from 01.10.2020.
This behavior will be changed, as soon as the classic LK is fixed.
</p>

<p>You shall use this endpoint for querying the currently valid LKs for a set of persons as well.
In this case, persons shall be pushed with all properties never the less.</p>]]></wadl:doc>
        <wadl:request>
          <wadl:doc><![CDATA[List of NTDB persons with their current properties to be synchronized to the player pool of the lk2020 service.]]></wadl:doc>
          <wadl:representation mediaType="application/json">
          </wadl:representation>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[List of {personUUID, lk, lkBegleitwert} tuples with the currently valid LKs.
Persons, that are present in the request, but who are missing in the lk2020 service's player pool will be skipped. // TODO???
Persons, that are present in the request, who's LK has been cleared (§ 12) will be returned without the <code>lk</code> property.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="rankinglists/{rankinglistUuid}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[<p>Returns a ranking list together with its filtered and paginated entries.</p>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="ageCategory" style="query">
            <wadl:doc><![CDATA[optional filter by age category (e.g. M21, W18)]]></wadl:doc>
          </wadl:param>
          <wadl:param name="clubUuid" style="query">
            <wadl:doc><![CDATA[optional filter by club UUID (e.g. 43d28ccb-65d2-43e5-bb91-8457b5d8c122)]]></wadl:doc>
          </wadl:param>
          <wadl:param name="dtbIdNr" style="query">
            <wadl:doc><![CDATA[optional filter by DTB ID number]]></wadl:doc>
          </wadl:param>
          <wadl:param name="federation" style="query">
            <wadl:doc><![CDATA[optional filter by federation nickname (e.g. "BAD", "BTV")]]></wadl:doc>
          </wadl:param>
          <wadl:param name="firstname" style="query">
            <wadl:doc><![CDATA[optional filter by first name (substring match)]]></wadl:doc>
          </wadl:param>
          <wadl:param name="fromPoints" style="query">
            <wadl:doc><![CDATA[optional lower bound for points (inclusive) (Integer)]]></wadl:doc>
          </wadl:param>
          <wadl:param name="fromRank" style="query">
            <wadl:doc><![CDATA[optional lower bound for rank (inclusive) (Integer)]]></wadl:doc>
          </wadl:param>
          <wadl:param name="gender" style="query">
            <wadl:doc><![CDATA[optional filter by gender (MALE or FEMALE)]]></wadl:doc>
          </wadl:param>
          <wadl:param name="lastname" style="query">
            <wadl:doc><![CDATA[optional filter by last name (substring match)]]></wadl:doc>
          </wadl:param>
          <wadl:param name="limit" style="query">
            <wadl:doc><![CDATA[optional filter for maximum number of entries; 0 for no limit]]></wadl:doc>
          </wadl:param>
          <wadl:param name="nationality" style="query">
            <wadl:doc><![CDATA[optional filter by nationality (e.g. "GER") (IoC country code)]]></wadl:doc>
          </wadl:param>
          <wadl:param name="offset" style="query">
            <wadl:doc><![CDATA[optional filter for pagination offset, defaults to 0]]></wadl:doc>
          </wadl:param>
          <wadl:param name="state" style="query">
            <wadl:doc><![CDATA[optional filter by players country / club state {allowed values: GERMAN, FOREIGN, CLUBLESS]]></wadl:doc>
          </wadl:param>
          <wadl:param name="toPoints" style="query">
            <wadl:doc><![CDATA[optional upper bound for points (inclusive) (Integer)]]></wadl:doc>
          </wadl:param>
          <wadl:param name="toRank" style="query">
            <wadl:doc><![CDATA[optional upper bound for rank (inclusive) (Integer)]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[RankinglistResponse containing the ranking list and matching entries]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="rankinglistUuid" style="template">
        <wadl:doc><![CDATA[UUID of the ranking list]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="dwz/dwzliste/clubs">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Retrieves a paginated list of chess clubs.

<p>This endpoint supports filtering via multiple optional query parameters.
String-based filters perform a prefix match (LIKE 'value%').
If no parameters are provided, all available clubs are returned.</p>

<h3>Query Parameters</h3>
<ul>
<li><b>vkz</b> – Filter by club number (VKZ). Supports partial prefix matching. Max length:
255 characters.</li>
<li><b>clubName</b> – Filter by club name. Supports partial prefix matching. Max length: 255
characters.</li>
<li><b>federationName</b> – Filter by federation name (Verband). Supports partial prefix
matching. Max length: 255 characters.</li>
<li><b>regionName</b> – Filter by region name (übergeordneter Verband). Supports partial
prefix matching. Max length: 255 characters.</li>
<li><b>limit</b> – Maximum number of results to return. If omitted, all matching results are
returned.</li>
<li><b>offset</b> – Zero-based index of the first result to return. Defaults to 0 if
omitted.</li>
<li><b>includeArchived</b> – If true, deleted clubs are included as well. Defaults
to false, i.e. only non-deleted clubs are returned. Applies to this JSON
endpoint only; the CSV export always returns non-deleted clubs exclusively.</li>
</ul>

<h3>Field Constraints</h3>
<ul>
<li>All string-based fields are stored as <b>VARCHAR(255)</b></li>
<li>Maximum allowed length for string inputs: <b>255 characters</b></li>
</ul>

<h3>Response</h3>
<ul>
<li><b>200 OK</b> – Returns a PagedResponse containing DSBClubDTO objects
matching the filters, along with pagination metadata (limit, offset,
totalCount) and PageNavigationLinks (self, first,
last, next, previous).
Each DSBClubDTO contains:
<ul>
<li>clubVkz – Club number (VKZ / Vereinskennziffer)</li>
<li>clubName – Name of the club</li>
<li>federation – VKZ of the federation (Verband) the club belongs to</li>
<li>parentFederation – VKZ of the parent federation (übergeordneter Verband)</li>
<li>state – State of the club (DELETE_STATE_FALSE or
DELETE_STATE_TRUE)</li>
</ul>
</li>
<li><b>401 Unauthorized</b> – If the subject is not authorized.</li>
<li><b>500 Internal Server Error</b> – If an error occurs while processing the request.</li>
</ul>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="clubName" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="federationName" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="includeArchived" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="limit" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="offset" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="regionName" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="vkz" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[paged result with matching clubs, pagination metadata and navigation links.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="dwz/dwzliste/federations">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Retrieves a paginated list of federations.

<p>This endpoint supports filtering via optional query parameters.
If no parameters are provided, all available federations are returned.</p>

<h3>Query Parameters</h3>
<ul>
<li><b>federationName</b> – Filter by federation name (prefix match, max length: 255 characters).</li>
<li><b>limit</b> – Maximum number of results to return. If omitted, all matching results
are returned.</li>
<li><b>offset</b> – Zero-based index of the first result to return. Defaults to 0 if
omitted.</li>
</ul>

<h3>Response</h3>
<ul>
<li><b>200 OK</b> – Returns a PagedResponse containing DSBFederationDTO
objects matching the filters, along with pagination metadata (limit,
offset, totalCount) and PageNavigationLinks (self,
first, last, next, previous).
Each DSBFederationDTO contains:
<ul>
<li>federationNumber – VKZ of the federation</li>
<li>federation – Top-level federation identifier</li>
<li>parentFederation – VKZ of the immediate parent federation. null if no parent exists.</li>
<li>federationName – Name of the federation</li>
</ul>
</li>
<li><b>401 Unauthorized</b> – If the subject is not authorized.</li>
<li><b>500 Internal Server Error</b> – If an error occurs while processing the request.</li>
</ul>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="federationName" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="limit" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="offset" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[paged result with matching federations, pagination metadata and navigation links.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="dwz/dwzliste/persons">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Retrieves a list of persons along with their latest known DWZ rating and index and all current club memberships.

<p>This endpoint supports filtering via multiple optional query parameters.
If no parameters are provided, all available persons are returned.</p>

<p>A person is included if at least one of their current memberships (a membership without an
until date) matches the membership-related filters (clubName, vkz, memberNo,
regionName, federationName). Pagination (limit / offset) and
totalCount operate on distinct persons, so every person appears once regardless of how
many current memberships they have.</p>

<h3>Query Parameters</h3>
<ul>
<li><b>firstname</b> – Filter by first name (max length: 255 characters)</li>
<li><b>lastname</b> – Filter by last name (max length: 255 characters)</li>
<li><b>clubName</b> – Filter by club name (max length: 255 characters)</li>
<li><b>vkz</b> – Filter by VKZ (prefix match, max length: 255 characters)</li>
<li><b>memberNo</b> – Filter by member number</li>
<li><b>regionName</b> – Filter by region name (max length: 255 characters)</li>
<li><b>federationName</b> – Filter by federation name (max length: 255 characters)</li>
<li><b>minRating</b> – Minimum DWZ rating (inclusive)</li>
<li><b>maxRating</b> – Maximum DWZ rating (inclusive)</li>
<li><b>fideId</b> – Filter by FIDE ID</li>
<li><b>gender</b> – Filter by gender (MALE or FEMALE); matches the value
exposed in the gender field of each DSBPersonDTO.</li>
<li><b>minAge</b> – Minimum age (inclusive). Age is computed as the year of the current
checkpoint's reference date minus the person's year of birth, so it only reflects the
year of birth (consistent with the data exposed by this API). Persons without a known
year of birth are excluded when an age filter is set.</li>
<li><b>maxAge</b> – Maximum age (inclusive). Same age definition as minAge.</li>
<li><b>limit</b> – Maximum number of results to return. Defaults to 1000 if omitted.</li>
<li><b>offset</b> – Zero-based index of the first result to return. Defaults to 0 if omitted.</li>
</ul>

<h3>Response</h3>
<ul>
<li><b>200 OK</b> – Returns a PagedResponse containing DSBPersonDTO objects
matching the filters, along with pagination metadata (limit, offset, totalCount)
and PageNavigationLinks (self, first, last, next, previous).
Each DSBPersonDTO includes weekOfLastTournamentEvaluation formatted as
YYYYWW (e.g. 202503), indicating the ISO week of the most recent rated
tournament the person participated in. null if no rated tournament exists.
Each DSBPersonDTO also includes a memberships array holding all current
club memberships of the person. Each entry contains:
<ul>
<li>vkz – VKZ (Vereinskennzeichen) of the club</li>
<li>memberNo – DSB member number (licence number) within the club</li>
<li>clubName – Name of the club</li>
<li>licenceState – Licence state of the membership (ACTIVE or PASSIVE).</li>
<li>regionName – Name of the region the club belongs to</li>
<li>federationName – Name of the federation the club belongs to</li>
</ul>
The array contains <b>all</b> current memberships of the person; the membership-related
filters only restrict which persons are returned, not which memberships are listed.</li>
<li><b>400 Bad Request</b> – If minAge is greater than maxAge.</li>
<li><b>401 Unauthorized</b> – If the subject is not authorized.</li>
<li><b>500 Internal Server Error</b> – If an error occurs while processing the request.</li>
</ul>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="clubName" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="federationName" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="fideId" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="firstname" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="gender" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="lastname" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="limit" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="maxAge" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="maxRating" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="memberNo" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="minAge" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="minRating" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="offset" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="regionName" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="vkz" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[paged result with matching persons, pagination metadata and navigation links.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="dwz/tournaments/{uuid}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Retrieves a single tournament by its UUID.

<p>In addition to the metadata contained in DSBTournamentDTO, the detail
response carries aggregate counts (playerCount, matchCount) that
are not provided for the tournament list endpoint.</p>

<h3>Response</h3>
<ul>
<li><b>200 OK</b> – Returns a DSBTournamentDetailDTO matching the given UUID.</li>
<li><b>401 Unauthorized</b> – If the subject is not authorized.</li>
<li><b>404 Not Found</b> – If no tournament with the given UUID exists.</li>
<li><b>500 Internal Server Error</b> – If an error occurs while processing the request.</li>
</ul>]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the matching tournament including aggregate counts.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="uuid" style="template">
        <wadl:doc><![CDATA[the UUID of the tournament to retrieve.]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/calculator/double">
      <wadl:method name="POST">
        <wadl:doc><![CDATA[LK results of a double match: A1 and A2 against B1 and B2]]></wadl:doc>
        <wadl:request>
          <wadl:param name="altersklasse" style="query">
            <wadl:doc><![CDATA[Altersklasse of the contest of the match]]></wadl:doc>
          </wadl:param>
          <wadl:param name="lkA1" style="query">
            <wadl:doc><![CDATA[LK of player A1, a float in the range 1.0 ... 25.00]]></wadl:doc>
          </wadl:param>
          <wadl:param name="lkA2" style="query">
            <wadl:doc><![CDATA[LK of player A2, a float in the range 1.0 ... 25.00]]></wadl:doc>
          </wadl:param>
          <wadl:param name="lkB1" style="query">
            <wadl:doc><![CDATA[LK of player B1, a float in the range 1.0 ... 25.00]]></wadl:doc>
          </wadl:param>
          <wadl:param name="lkB2" style="query">
            <wadl:doc><![CDATA[LK of player B2, a float in the range 1.0 ... 25.00]]></wadl:doc>
          </wadl:param>
          <wadl:param name="teamBonus" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="zaehlweise" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the possible "LK-Verbesserungen" and calculation parameters for A or B]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="mybigpoint/calculator/single">
      <wadl:method name="POST">
        <wadl:doc><![CDATA[LK results of a single match: A against B]]></wadl:doc>
        <wadl:request>
          <wadl:param name="altersklasse" style="query">
            <wadl:doc><![CDATA[Altersklasse of the contest of the match]]></wadl:doc>
          </wadl:param>
          <wadl:param name="lkA" style="query">
            <wadl:doc><![CDATA[LK of player A, a float in the range 1.0 ... 25.00]]></wadl:doc>
          </wadl:param>
          <wadl:param name="lkB" style="query">
            <wadl:doc><![CDATA[LK of player B, a float in the range 1.0 ... 25.00]]></wadl:doc>
          </wadl:param>
          <wadl:param name="teamBonus" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="zaehlweise" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the possible "LK-Verbesserungen" and calculation parameters for A or B]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="mybigpoint/club-race/{year}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Club Race]]></wadl:doc>
        <wadl:request>
          <wadl:param name="club-id" style="query">
            <wadl:doc><![CDATA[id of the club used by the mybigpoint API (nuLiga primary key).]]></wadl:doc>
          </wadl:param>
          <wadl:param name="federation-nickname" style="query">
            <wadl:doc><![CDATA[nickname of the federation, e.g. "BTV". If provided: get the club race within the given federation.]]></wadl:doc>
          </wadl:param>
          <wadl:param name="gender" style="query">
            <wadl:doc><![CDATA[if provided: only players of the given gender will be accounted for the clubs sum of points (the best 5 players of the given gender).]]></wadl:doc>
          </wadl:param>
          <wadl:param name="v2" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[<ul>
<li>if <code>club-id</code> is provided: a partial subset of the club race which covers the given club +/- 5 ranks;</li>
<li>else: the top 100 clubs filtered by the optional parameters <code>federation-nickname</code> and <code>gender</code>.</li>
</ul>]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="year" style="template">
        <wadl:doc><![CDATA[calendar year of the race; each year, the race starts from scratch.]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/club-race-dummy/{year}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Dummy for endpoint <code>/club-race/{year}</code>.]]></wadl:doc>
        <wadl:request>
          <wadl:param name="club-id" style="query">
            <wadl:doc><![CDATA[Valid club IDs used by the dummy:
<ul>
<li>1001 ... 1110</li>
<li>2001 ... 2100</li>
<li>3001 ... 3090</li>
</ul>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="federation-nickname" style="query">
            <wadl:doc><![CDATA[Valid federation nicknames used by the dummy:
<ul>
<li>BTV</li>
<li>TNB</li>
</ul>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="gender" style="query">
            <wadl:doc><![CDATA[see <code>/club-race/{year}</code>]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[see <code>/club-race/{year}</code>]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="year" style="template">
        <wadl:doc><![CDATA[see <code>/club-race/{year}</code>]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/protocol/dummy">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[<p>Get the dummy "LK-Protokoll".</p>]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/protocol/search">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[]]></wadl:doc>
        <wadl:request>
          <wadl:param name="id-nr" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="mybigpoint/protocol/{nuLigaPersonId}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[<p>Get the "LK-Protokoll" of a player.</p>

<p>Property <code>prognosis</code> contains matches and other steps of the week, that hasn't been finished so far.
On Wednesday 00:00 the preceding week from Monday 00:00 until Sunday 24:00 will be finally computed.
In the time frame from Monday 00:00 after that week and Wednesday 00:00 (the time of computation),
the prognosis will contain the matches of the preceding week only. This means, that matches of Monday and Tuesday
will be visible as the new prognosis as soon as the computation has been performed and will be invisible before Wednesday 00:00.
</p>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="filterCustomNa" style="query">
            <wadl:doc><![CDATA[filter custom na dto's <code>MBPCustomNoShowDTO</code> within the steps (default <code>true</code>)]]></wadl:doc>
          </wadl:param>
          <wadl:param name="maxLimit" style="query">
            <wadl:doc><![CDATA[limit for the property <code>steps</code>]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the protocol.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[id of the nuLiga-player used in the mybigpoint API]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/single-race/hall-of-fame">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Hall of Fame: the best-ever annual and monthly scores.]]></wadl:doc>
        <wadl:request>
          <wadl:param name="club-id" style="query">
            <wadl:doc><![CDATA[optional: hall of fame of that club. If club is given, an optional federation parameter will be ignored.]]></wadl:doc>
          </wadl:param>
          <wadl:param name="federation-nickname" style="query">
            <wadl:doc><![CDATA[nickname of the federation, e.g. "BTV". If provided, hall of fame of that federation.]]></wadl:doc>
          </wadl:param>
          <wadl:param name="gender" style="query">
            <wadl:doc><![CDATA[optional: hall of fame filtered by gender and possibly other optional parameter.]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[a 2-element array "scores" with:
<ul>
<li>score[0]: all-time best in annual ranking;</li>
<li>score[1]: all-time best in monthly ranking.</li>
</ul>]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="mybigpoint/single-race-dummy/hall-of-fame">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Dummy for endpoint <code>/single-race/best-by-month/{year}</code>.]]></wadl:doc>
        <wadl:request>
          <wadl:param name="club-id" style="query">
            <wadl:doc><![CDATA[Valid club IDs used by the dummy:
<ul>
<li>10001</li>
<li>10002</li>
<li>20003</li>
</ul>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="federation-nickname" style="query">
            <wadl:doc><![CDATA[Valid federation nicknames used by the dummy:
<ul>
<li>BTV</li>
<li>TNB</li>
</ul>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="gender" style="query">
            <wadl:doc><![CDATA[see <code>/single-race/best-by-month/{year}</code>]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[see <code>/single-race/best-by-month/{year}</code>]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="nusport/competitions/{competitionUUID}">
      <wadl:method name="PUT">
        <wadl:doc><![CDATA[Create or replace a complete competition in the lk2020 service.]]></wadl:doc>
        <wadl:request>
          <wadl:doc><![CDATA[the competition with all matches]]></wadl:doc>
          <wadl:representation mediaType="application/json">
          </wadl:representation>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[The event wrapper { eventUUID, [match, ...] } with all matches.
The returned match tuples {matchUUID, lkA1, lkB1} or
{matchUUID, lkA1, lkB1, lkA2, lkB2} will be amended with the LKs of the players.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="competitionUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the competition]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/competitions/{competitionUUID}">
      <wadl:method name="DELETE">
        <wadl:doc><![CDATA[Delete a competition in the lk2020 service.]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[empty body and http-status ACCEPTED, if successful.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="competitionUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the competition]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/meetings/{meetingUUID}">
      <wadl:method name="PUT">
        <wadl:doc><![CDATA[Create or replace a complete meeting in the lk2020 service.]]></wadl:doc>
        <wadl:request>
          <wadl:doc><![CDATA[the meeting with all matches]]></wadl:doc>
          <wadl:representation mediaType="application/json">
          </wadl:representation>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[The event wrapper { eventUUID, [match, ...] } with all matches.
The returned match tuples {matchUUID, lkA1, lkB1} or
{matchUUID, lkA1, lkB1, lkA2, lkB2} will be amended with the LKs of the players.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="meetingUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the meeting]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/meetings/{meetingUUID}">
      <wadl:method name="DELETE">
        <wadl:doc><![CDATA[Delete a meeting in the lk2020 service.]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[empty body and http-status ACCEPTED, if successful.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="meetingUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the meeting]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/players/{personUUID}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[get the player's LK at a specified <code>referenceDate</code> in the past.]]></wadl:doc>
        <wadl:request>
          <wadl:param name="referenceDate" style="query">
            <wadl:doc><![CDATA[if null, then the currently valid LK will be returned.]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[A tuple {personUUID, lk} with the (historic) LK of that player.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="personUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the player]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/players/{personUUID}">
      <wadl:method name="DELETE">
        <wadl:doc><![CDATA[Delete player with personUUID from player pool of the lk2020 service (including DB).]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[true, if a player with personUUID existed and could be deleted successfully]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="personUUID" style="template">
        <wadl:doc><![CDATA[UUID of the person in nuSport]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/players/{personUUID}">
      <wadl:method name="PATCH">
        <wadl:doc><![CDATA[Notify the lk2020 service about the merger of different player instances in the NTDB, who represent the same (natural) player.]]></wadl:doc>
        <wadl:request>
          <wadl:doc><![CDATA[A DTO indicating which operations are to be performed on the player (identified by <code>personUUID</code>)]]></wadl:doc>
          <wadl:representation mediaType="application/json">
          </wadl:representation>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[A tuple {personUUID, lk, lkBegleitwert} with the (merged?) LK of <code>personUUID</code> or no content]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="personUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the resulting (i.e. leading) merged player.]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="dwz/dwzliste/download/{fileName}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Downloads the DWZ list for a specific federation as a ZIP archive in the official DSB format.

<p>All three CSV files are filtered to only include records belonging to the specified
federation (persons and clubs by VKZ prefix, federations by their top-level VKZ character).
The special value 0 disables all filtering and returns the complete unfiltered dataset.
The archive is generated at most once every 15 minutes per unique combination of federation,
charset and delimiter, and cached in memory thereafter.</p>

<h3>Path Parameters</h3>
<ul>
<li><b>fileName</b> – Name of the returned ZIP file (e.g. LV-B-dwzliste.zip).
The character at index 3 is extracted as the federation identifier (case-insensitive,
converted to uppercase internally) and must be one of:
0–9, A–H, L, M.
The filename must be at least 4 characters long.</li>
</ul>

<h3>Query Parameters</h3>
<ul>
<li><b>charset</b> – Character encoding of the CSV files. Defaults to windows-1252
(ANSI, DSB-compatible). Any IANA charset name supported by the JVM is accepted
(e.g. utf-8).</li>
<li><b>delimiter</b> – Field delimiter used in the CSV files. Defaults to ,.
Only the first character of the value is used.</li>
</ul>

<h3>Archive Contents</h3>
<ul>
<li><b>spieler.csv</b> – Persons whose club VKZ starts with the federation identifier,
sorted by DWZ. One row per current club membership, so a person with several current
memberships (memberships without an until date) produces one row per club.
Columns: {@code ID, ZPS, Mitgliedsnummer, Status, "Name,Vorname",
Geschlecht, Spielberechtigung, Geburtsjahr, WocheLetztesRatingturnier, DWZ, Index,
FIDE-Elozahl, FIDE-Titel, FIDE-ID, FIDE-Land, Vorname, Nachname}.
ZPS, Mitgliedsnummer and Status reflect the respective membership.
Spielberechtigung, FIDE-Elozahl, FIDE-Titel and
FIDE-Land are always empty. Status is A (aktiv) or
P (passiv). Geschlecht is M (männlich) or W (weiblich).</li>
<li><b>vereine.csv</b> – Clubs whose VKZ starts with the federation identifier, sorted by
ZPS-Nummer. Columns: ZPS-Nummer, Landesverband, UebergeordneterVerband, Vereinsname.</li>
<li><b>verbaende.csv</b> – Federations belonging to the specified federation group, sorted by
Verbandnummer. Columns: Verbandnummer, Landesverband, UebergeordneterVerband, Verbandname.</li>
<li><b>README.txt</b> – Header with the top-level federation name, generation date, record
counts, charset and delimiter, plus column documentation for all three CSV files.</li>
</ul>
Fields containing the delimiter or double quotes are enclosed in double quotes per RFC 4180.

<h3>Response</h3>
<ul>
<li><b>200 OK</b> – Returns the ZIP archive as application/zip with
Content-Disposition: attachment; filename="<fileName>".</li>
<li><b>401 Unauthorized</b> – If the subject is not authorized.</li>
<li><b>404 Not Found</b> – If fileName is shorter than 4 characters, the character
at index 3 is not a valid federation identifier (0–9, A–H, L, M), or
charset is not supported by the JVM.</li>
<li><b>500 Internal Server Error</b> – If an error occurs while building the archive.</li>
</ul>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="charset" style="query">
            <wadl:doc><![CDATA[IANA charset name for the CSV content (default: windows-1252).]]></wadl:doc>
          </wadl:param>
          <wadl:param name="delimiter" style="query">
            <wadl:doc><![CDATA[single-character field delimiter for the CSV files (default: ,).]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[ZIP archive containing federation-filtered CSV exports in DSB format.]]></wadl:doc>
          <wadl:representation mediaType="application/zip"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="fileName" style="template">
        <wadl:doc><![CDATA[name of the returned ZIP file; character at index 3 is the federation identifier.]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="dwz/dwzliste/persons/{nuLigaId}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Retrieves a single person with their latest known DWZ rating and index and all current club memberships.

<h3>Response</h3>
<ul>
<li><b>200 OK</b> – Returns a DSBPersonDTO matching the given nuLigaId. The DTO includes
a memberships array holding all current club memberships (memberships without an
until date), each with vkz, memberNo, clubName, licenceState,
regionName and federationName. See DSBPersonDTO.</li>
<li><b>401 Unauthorized</b> – If the subject is not authorized.</li>
<li><b>404 Not Found</b> – If no person with the given nuLigaId exists.</li>
<li><b>500 Internal Server Error</b> – If an error occurs while processing the request.</li>
</ul>]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the matching person.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaId" style="template">
        <wadl:doc><![CDATA[the nuLiga ID of the person to retrieve.]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="dwz/persons/{nuLigaPersonId}/history">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Retrieves the complete DWZ tournament history for a single person by their nuLiga ID.

<p>Returns all player records across all tournaments in which the person participated,
ordered by tournament end date descending (most recent first).</p>

<h3>Response</h3>
<ul>
<li><b>200 OK</b> – Returns a DSBTournamentHistoryDTO containing the person's
current DWZ data, a list of jpa.nu.liga.lk2020.services.dwz.rest.dto.DSBTournamentHistoryEntryDTO
entries, each pairing the tournament metadata with the player's DWZ evaluation data, and a list of
jpa.nu.liga.lk2020.services.dwz.rest.dto.DSBUpgradeDTO upgrades (DWZ-Umstufungen) of the person.
Returns empty lists if the person has no tournament history or no upgrades.</li>
<li><b>401 Unauthorized</b> – If the subject is not authorized.</li>
<li><b>500 Internal Server Error</b> – If an error occurs while processing the request.</li>
</ul>]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the player's tournament history.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[the nuLiga person ID whose tournament history should be retrieved.]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="dwz/tournaments/{uuid}/evaluation">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Retrieves the DWZ evaluation for a single tournament by its UUID.

<p>Only tournaments with rating state RATED have an evaluation.
Tournaments that exist but have not been rated yet will return 404.</p>

<h3>Response</h3>
<ul>
<li><b>200 OK</b> – Returns a DSBTournamentEvaluationDTO containing the tournament
(as a DSBTournamentDetailDTO including aggregate counts) and its list of rated
players (DSBPlayerDTO) with DWZ evaluation data.</li>
<li><b>401 Unauthorized</b> – If the subject is not authorized.</li>
<li><b>404 Not Found</b> – If no tournament with the given UUID exists, or if the tournament
has not been rated yet.</li>
<li><b>500 Internal Server Error</b> – If an error occurs while processing the request.</li>
</ul>]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the tournament evaluation.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="uuid" style="template">
        <wadl:doc><![CDATA[the UUID of the tournament whose evaluation should be retrieved.]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="dwz/tournaments/{uuid}/matches">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Retrieves the chess games for a single tournament by its UUID.

<p>This endpoint supports filtering via optional query parameters.
Results are ordered by round number ascending.</p>

<h3>Query Parameters</h3>
<ul>
<li><b>round</b> – Filter by round number (exact match).</li>
<li><b>playerLastname</b> – Filter by player last name (prefix match, matches white or black player).</li>
<li><b>limit</b> – Maximum number of results to return. If omitted, all matching results are returned.</li>
<li><b>offset</b> – Zero-based index of the first result to return. Defaults to 0 if omitted.</li>
</ul>

<h3>Response</h3>
<ul>
<li><b>200 OK</b> – Returns a PagedResponse containing DSBMatchDTO objects
matching the filters, along with pagination metadata (limit, offset, totalCount)
and PageNavigationLinks (self, first, last, next, previous).
Returns an empty list if no games exist for the given tournament UUID.</li>
<li><b>400 Bad Request</b> – If limit or offset is negative.</li>
<li><b>401 Unauthorized</b> – If the subject is not authorized.</li>
<li><b>500 Internal Server Error</b> – If an error occurs while processing the request.</li>
</ul>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="limit" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="offset" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="playerLastname" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
          <wadl:param name="round" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[paged result with matching games, pagination metadata and navigation links.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="uuid" style="template">
        <wadl:doc><![CDATA[the UUID of the tournament whose games should be retrieved.]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/persons/{nuLigaPersonId}/allmatches">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[<p>Get all kind of matches of a player.</p>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="maxLimit" style="query">
            <wadl:doc><![CDATA[limit of the match list]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the capped list of the lastest X <code>MBPMatch</code> as <code>MBPMatch[]</code>]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[id of the nuLiga-player used in the mybigpoint API]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/persons/{nuLigaPersonId}/matches">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[<p>Get filtered matches of a player.</p>

<p>direct and indirect compare match list.</p>
<ul>
<li>direct compare filter with compareType <code>H2HCompareType.DIRECT_COMPARE</code> and opponentNuLigaPersonId</>
<li>indirect compare filter with compareType <code>H2HCompareType.INDIRECT_COMPARE</code> and opponentNuLigaPersonId</>
<li>direct and indirect compare filter with compareType <code>NULL</code> and opponentNuLigaPersonId</>
</ul>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="compareType" style="query">
            <wadl:doc><![CDATA[not filtered if <code>null</code>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="eventContexts" style="query">
            <wadl:doc><![CDATA[not filtered if <code>null</code>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="fromIncl" style="query">
            <wadl:doc><![CDATA[not capped if <code>null</code>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="lkRanking" style="query">
            <wadl:doc><![CDATA[not filtered if <code>null</code>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="matchTypes" style="query">
            <wadl:doc><![CDATA[not filtered if <code>null</code>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="opponentCompare" style="query">
            <wadl:doc><![CDATA[filters by own vs. opponents' LK (BETTER_LK / WEAKER_LK); not filtered if <code>null</code> or ALL]]></wadl:doc>
          </wadl:param>
          <wadl:param name="opponentNuLigaPersonId" style="query">
            <wadl:doc><![CDATA[not filtered if <code>null</code>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="rlRanking" style="query">
            <wadl:doc><![CDATA[not filtered if <code>null</code>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="sportTypes" style="query">
            <wadl:doc><![CDATA[not filtered if <code>null</code>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="untilIncl" style="query">
            <wadl:doc><![CDATA[not capped if <code>null</code>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="win" style="query">
            <wadl:doc><![CDATA[not filtered if <code>null</code>]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the list of the filtered matches]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[id of the nuLiga-player used in the mybigpoint API]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/protocol/dummy/prognosis">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[For the dummy: get current LK, LK-Begleitwert and a LK-delta forecast packed as <code>MBPWeekDTO</code>.]]></wadl:doc>
        <wadl:response>
          <wadl:doc><![CDATA[]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="mybigpoint/protocol/dummy/statistics">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[For the dummy: get match statistics for the whole LK 2.0 epoche as well as the current year.]]></wadl:doc>
        <wadl:response>
          <wadl:doc><![CDATA[The match statistics as an 2-element array of <code>MBPStatisticsDTO</code>.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
    </wadl:resource>

    <wadl:resource path="mybigpoint/protocol/{nuLigaPersonId}/prognosis">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Get current LK, LK-Begleitwert and a LK-delta forecast packed as <code>MBPWeekDTO</code>, the wrapper-DTO of a week.]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[{ lk: truncated LK at start of week, lkBegleitwert: ... at start of week, lkDelta: collected points so far, motivationsaufschlag: ... at start of week }.
The returned  <code>MBPWeekDTO</code> will <b>not</b> contain items.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/protocol/{nuLigaPersonId}/statistics">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[]]></wadl:doc>
        <wadl:request>
          <wadl:param name="year" style="query">
            <wadl:doc><![CDATA[calendar year, for which the statistics shall be gathered. If null, the current year will be taken.]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[An array of statistic records. First element: the whole LK 2.0 period, 2nd element: statistics for the requested year.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[id of the nuLiga-player used in the mybigpoint API]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/protocol/{nuLigaPersonId}/weeks">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[<p>Get all available weeks from the "LK-Protokoll" of a player.</p>]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the list of the available <code>MBPWeekDTO</code> of the <code>MBPProtocolDTO</code> as <code>MBPWeekDTO[]</code>]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[id of the nuLiga-player used in the mybigpoint API]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/single-race/best-by-month/{year}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Jahres-Bestenliste: get the best scores for each month of the given year.]]></wadl:doc>
        <wadl:request>
          <wadl:param name="club-id" style="query">
            <wadl:doc><![CDATA[optional: Bestenliste of that club. If club is given, the optional <code>federation-nickname</code> parameter will be ignored.]]></wadl:doc>
          </wadl:param>
          <wadl:param name="federation-nickname" style="query">
            <wadl:doc><![CDATA[nickname of the federation, e.g. "BTV". If provided, Bestenliste of that federation.]]></wadl:doc>
          </wadl:param>
          <wadl:param name="gender" style="query">
            <wadl:doc><![CDATA[optional: Bestenliste filtered by gender and possibly other optional parameter.]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[a list of up to 12 scores, one for each month of the requested year. More specifically: all scores with rank == 1 per month will be returned, so there might be more than 12 entries.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="year" style="template">
        <wadl:doc><![CDATA[the year in question]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/single-race/best-by-month-dummy/{year}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Dummy for endpoint <code>/single-race/best-by-month/{year}</code>.]]></wadl:doc>
        <wadl:request>
          <wadl:param name="club-id" style="query">
            <wadl:doc><![CDATA[Valid club IDs used by the dummy:
<ul>
<li>10001</li>
<li>10002</li>
<li>20003</li>
</ul>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="federation-nickname" style="query">
            <wadl:doc><![CDATA[Valid federation nicknames used by the dummy:
<ul>
<li>BTV</li>
<li>TNB</li>
</ul>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="gender" style="query">
            <wadl:doc><![CDATA[see  endpoint <code>/single-race/best-by-month/{year}</code>]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[see  endpoint <code>/single-race/best-by-month/{year}</code>]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="year" style="template">
        <wadl:doc><![CDATA[see  endpoint <code>/single-race/best-by-month/{year}</code>]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/single-race/livescore/{year}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Get the single-race annual livescore (if month is missing) or monthly livescore (if query parameter month is provided).

<p>Depending on the provided parameters, the player pool will be filtered,
and sorted by the appropriate rank and the resulting scores will be returned.
<ul>
<li>if query param <code>club-id</code> is provided: if gender is present, rank = the gendered club rank, otherwise rank = total club rank;</li>
<li>if query param <code>federation-nickname</code> is provided: if gender is present, rank = the gendered LV rank, otherwise rank = total LV rank;</li>
<li>if these two params are absent: if gender is present, rank = the total rank within that gender, otherwise rank = the total rank;</li>
</ul>
</p>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="club-id" style="query">
            <wadl:doc><![CDATA[if present, the result will be filtered by that club and the club-internal rank will be provided.]]></wadl:doc>
          </wadl:param>
          <wadl:param name="federation-nickname" style="query">
            <wadl:doc><![CDATA[nickname of the federation, e.g. "BTV". If present and nuLigaClubID is missing, the result will be filtered by that federation and the federation-internal rank will be provided.]]></wadl:doc>
          </wadl:param>
          <wadl:param name="gender" style="query">
            <wadl:doc><![CDATA[if present, the result will be filtered by the given gender and the gendered rank will be returned. This parameter might be combined with all other parameters.]]></wadl:doc>
          </wadl:param>
          <wadl:param name="month" style="query">
            <wadl:doc><![CDATA[the requested month starting with Jan = 1. If missing, then return the annual score.]]></wadl:doc>
          </wadl:param>
          <wadl:param name="v2" style="query">
            <wadl:doc><![CDATA[]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[if month == null: players with annual rank up to 100 as an array of <code>MBPRacePlayerRankDTO</code>; else: players with monthly rank up to 5]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="year" style="template">
        <wadl:doc><![CDATA[the calendar year as 4-digit integer. If year = 0: the cached scores of the current year/month will be returned.]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/single-race/profile/{nuLigaPersonId}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Personal Race Profile]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[a 4-element array "scores" with:
<ul>
<li>score[0]: annual ranking of requested player</li>
<li>score[1]: monthly ranking of requested player</li>
<li>score[2]: best annual ranking. Can be null, if there are no rankings at the start of the year.</li>
<li>score[3]: best monthly ranking. Can be null, if there are no rankings at the start of the month.</li>
</ul>]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[id of the nuLiga-player used in the mybigpoint API]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/single-race-dummy/livescore/{year}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Dummy for endpoint <code>/single-race/livescore/{year}</code>.]]></wadl:doc>
        <wadl:request>
          <wadl:param name="club-id" style="query">
            <wadl:doc><![CDATA[Valid club IDs used by the dummy:
<ul>
<li>10001</li>
<li>10002</li>
<li>20003</li>
</ul>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="federation-nickname" style="query">
            <wadl:doc><![CDATA[Valid federation nicknames used by the dummy:
<ul>
<li>BTV</li>
<li>TNB</li>
</ul>]]></wadl:doc>
          </wadl:param>
          <wadl:param name="gender" style="query">
            <wadl:doc><![CDATA[see endpoint <code>/single-race/livescore/{year}]]></wadl:doc>
          </wadl:param>
          <wadl:param name="month" style="query">
            <wadl:doc><![CDATA[see endpoint <code>/single-race/livescore/{year}]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[see endpoint <code>/single-race/livescore/{year}]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="year" style="template">
        <wadl:doc><![CDATA[see endpoint <code>/single-race/livescore/{year}]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/single-race-dummy/profile/{nuLigaPersonId}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Dummy for endpoint <code>/single-race/{nuLigaPersonId}</code>.]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[will be ignored. This endpoint always returns a result for <code>nuLigaPersonId</code>=NU12099]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/rankinglists/{rankingDate}/{altersklasse}">
      <wadl:method name="PUT">
        <wadl:doc><![CDATA[<p>"Bestanpassung" anhand einer Rangliste laut §10.</p>

<p>Given the complete "Deutsche Rangliste" for the given <code>altersklasse</code> and "Stichtag" <code>rankingDate</code>,
<code>/rankinglists/{rankingDate}/{altersklasse}</code>.
</p>]]></wadl:doc>
        <wadl:request>
          <wadl:doc><![CDATA[Officially ranked players, whose LK shall be classified.]]></wadl:doc>
          <wadl:representation mediaType="application/json">
          </wadl:representation>
        </wadl:request>
      </wadl:method>
      <wadl:param name="rankingDate" style="template">
        <wadl:doc><![CDATA[]]></wadl:doc>
      </wadl:param>
      <wadl:param name="altersklasse" style="template">
        <wadl:doc><![CDATA[Alterklasse of the ranking list.]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/rankinglists/{rankingDate}/{altersklasse}">
      <wadl:method name="DELETE">
        <wadl:doc><![CDATA[]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="rankingDate" style="template">
        <wadl:doc><![CDATA[]]></wadl:doc>
      </wadl:param>
      <wadl:param name="altersklasse" style="template">
        <wadl:doc><![CDATA[]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="rankinglists/{rankinglistUuid}/entries/{rankinglistEntryUuid}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[<p>Returns a single ranking list entry together with its paginated results.</p>]]></wadl:doc>
        <wadl:request>
          <wadl:param name="limit" style="query">
            <wadl:doc><![CDATA[optional filter for maximum number of results; 0 for no limit]]></wadl:doc>
          </wadl:param>
          <wadl:param name="offset" style="query">
            <wadl:doc><![CDATA[optional filter for pagination offset, defaults to 0]]></wadl:doc>
          </wadl:param>
          <wadl:param name="rated" style="query">
            <wadl:doc><![CDATA[optional filter to find only rated results (true , @{code false})]]></wadl:doc>
          </wadl:param>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[RankinglistEntryResponse containing the ranking list, the entry and its results]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="rankinglistEntryUuid" style="template">
        <wadl:doc><![CDATA[UUID of the ranking list entry]]></wadl:doc>
      </wadl:param>
      <wadl:param name="rankinglistUuid" style="template">
        <wadl:doc><![CDATA[UUID of the ranking list]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/protocol/{nuLigaPersonId}/statistics/annual">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[An array of annual lk records of the person. The array also includes all annual lk entries from the classic LK of the NTDB.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[id of the nuLiga-player used in the mybigpoint API]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="mybigpoint/protocol/{nuLigaPersonId}/weeks/{weekCount}">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[<p>Get the latest x weeks from the "LK-Protokoll" of a player.</p>

<p>The list contains matches and other steps of the latest x weeks and the week that hasn't been finished so far.
</p>]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the capped list of the lastest X <code>MBPWeekDTO</code> inclusive the <code>prognosis</code> of the <code>MBPProtocolDTO</code> as <code>MBPWeekDTO[]</code>]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="nuLigaPersonId" style="template">
        <wadl:doc><![CDATA[id of the nuLiga-player used in the mybigpoint API]]></wadl:doc>
      </wadl:param>
      <wadl:param name="weekCount" style="template">
        <wadl:doc><![CDATA[limit for the property <code>steps</code>]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/competitions/{competitionUUID}/matches/{matchUUID}">
      <wadl:method name="PUT">
        <wadl:doc><![CDATA[Create or replace a match within a competition. If the competition didn't exist before, it will be created.
The client is supposed to deliver all the information of the competition.]]></wadl:doc>
        <wadl:request>
          <wadl:doc><![CDATA[the competition wrapper (with all the attributes), but containing only one match.]]></wadl:doc>
          <wadl:representation mediaType="application/json">
          </wadl:representation>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[The event wrapper { eventUUID, [ match ] } with one match tuple {matchUUID, lkA1, lkB1} or
{matchUUID, lkA1, lkB1, lkA2, lkB2}, amended with the LKs of the players.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="matchUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the match to be created/replaced]]></wadl:doc>
      </wadl:param>
      <wadl:param name="competitionUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the competition]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/meetings/{meetingUUID}/matches/{matchUUID}">
      <wadl:method name="PUT">
        <wadl:doc><![CDATA[Replace or create a match within a meeting. If the meeting didn't exist before, it will be created.]]></wadl:doc>
        <wadl:request>
          <wadl:doc><![CDATA[The meeting wrapper containing only one match. The wrapper should contain at least:
{ eventUUID, altersklasse, bonus, [ match ] }]]></wadl:doc>
          <wadl:representation mediaType="application/json">
          </wadl:representation>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[The event wrapper { eventUUID, [ match ] } with one match tuple {matchUUID, lkA1, lkB1} or
{matchUUID, lkA1, lkB1, lkA2, lkB2}, amended with the LKs of the players.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="matchUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the match to be created/replaced]]></wadl:doc>
      </wadl:param>
      <wadl:param name="meetingUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the meeting]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/players/{personUUID}/gradings/{gradingUUID}">
      <wadl:method name="PUT">
        <wadl:doc><![CDATA[<p>Classify a player with a new LK.</p>

<p>Use this endpoint to signal grading events of these types: CLASSIFICATION, RECLASSIFICATION
In all cases, the new LK must be provided by the <code>gradedLK</code> property of the NUGradingDTO in the request body.</p>
<p><b>Only gradings of the current week, not graded for a future date, are effective immediately.</b></p>]]></wadl:doc>
        <wadl:request>
          <wadl:doc><![CDATA[The grading including the property <code>gradedLK</code>, which shall be the new, classified LK value.]]></wadl:doc>
          <wadl:representation mediaType="application/json">
          </wadl:representation>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[A tuple {personUUID, lk, lkBegleitwert} with the current LK or no content]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="personUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the player to be classified]]></wadl:doc>
      </wadl:param>
      <wadl:param name="gradingUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the LKClassification object]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="nusport/players/{personUUID}/gradings/{gradingUUID}">
      <wadl:method name="DELETE">
        <wadl:doc><![CDATA[<p>Remove Classification for a player.</p>

<p>Use this endpoint to signal delets of grading events of these types: CLASSIFICATION, RECLASSIFICATION
<p><b>Only gradings of the current week, not graded for a future date, are effective immediately.</b></p>]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[A tuple {personUUID, lk, lkBegleitwert} with the current LK or no content]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="personUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the player to be classified]]></wadl:doc>
      </wadl:param>
      <wadl:param name="gradingUUID" style="template">
        <wadl:doc><![CDATA[nuSport UUID of the LKClassification object]]></wadl:doc>
      </wadl:param>
    </wadl:resource>

    <wadl:resource path="dwz/tournaments/{tournamentUuid}/players/{playerUuid}/scoresheet">
      <wadl:method name="GET">
        <wadl:doc><![CDATA[Retrieves the scoresheet of a specific player within a tournament.

<p>The player UUID is included in the DSBPlayerDTO
returned by the evaluation endpoint.</p>

<p>The scoresheet contains all games of the player in the current tournament
(matches), ordered by round. If the player has old restgames
from previous tournaments they are additionally returned in
restpartienAlt, ordered by tournament end date and round.</p>

<h3>Response</h3>
<ul>
<li><b>200 OK</b> – Returns a DSBScoresheetDTO containing the player's games.</li>
<li><b>401 Unauthorized</b> – If the subject is not authorized.</li>
<li><b>500 Internal Server Error</b> – If an error occurs while processing the request.</li>
</ul>]]></wadl:doc>
        <wadl:request>
        </wadl:request>
        <wadl:response>
          <wadl:doc><![CDATA[the player's scoresheet.]]></wadl:doc>
          <wadl:representation mediaType="application/json"/>
        </wadl:response>
      </wadl:method>
      <wadl:param name="playerUuid" style="template">
        <wadl:doc><![CDATA[the UUID of the player.]]></wadl:doc>
      </wadl:param>
      <wadl:param name="tournamentUuid" style="template">
        <wadl:doc><![CDATA[the UUID of the tournament.]]></wadl:doc>
      </wadl:param>
    </wadl:resource>
  </wadl:resources>
</wadl:application>
