diff --git a/dist/core/OpenAPI.js b/dist/core/OpenAPI.js index a614989..666e99d 100644 --- a/dist/core/OpenAPI.js +++ b/dist/core/OpenAPI.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.OpenAPI = void 0; exports.OpenAPI = { BASE: '', - VERSION: '0.13.0', + VERSION: '0.13.1', WITH_CREDENTIALS: false, TOKEN: undefined, USERNAME: undefined, diff --git a/dist/core/request.d.ts b/dist/core/request.d.ts index 10c785c..425f4ca 100644 --- a/dist/core/request.d.ts +++ b/dist/core/request.d.ts @@ -3,7 +3,7 @@ import type { ApiResult } from './ApiResult'; /** * Request using fetch client * @param options The request options from the the service - * @returns ApiResult + * @result ApiResult * @throws ApiError */ export declare function request(options: ApiRequestOptions): Promise; diff --git a/dist/core/request.js b/dist/core/request.js index 7ac80d5..27342f5 100644 --- a/dist/core/request.js +++ b/dist/core/request.js @@ -111,9 +111,6 @@ async function sendRequest(options, url) { headers: await getHeaders(options), body: getRequestBody(options), }; - if (OpenAPI_1.OpenAPI.WITH_CREDENTIALS) { - request.credentials = 'include'; - } return await fetch(url, request); } function getResponseHeader(response, responseHeader) { @@ -165,7 +162,7 @@ function catchErrors(options, result) { /** * Request using fetch client * @param options The request options from the the service - * @returns ApiResult + * @result ApiResult * @throws ApiError */ async function request(options) { diff --git a/dist/services/AuthService.d.ts b/dist/services/AuthService.d.ts index 85f0d31..a78b085 100644 --- a/dist/services/AuthService.d.ts +++ b/dist/services/AuthService.d.ts @@ -17,28 +17,28 @@ export declare class AuthService { /** * Login * Login with your username/email and password.
You will receive: - * * access token (use it as a bearer token) - * * refresh token (will also be sent as a cookie) + * * access token (use it as a bearer token) + * * refresh token (will also be sent as a cookie) * @param requestBody CreateAuth - * @returns any + * @result any * @throws ApiError */ - static authControllerLogin(requestBody?: CreateAuth): Promise<(ResponseAuth | InvalidCredentialsError | UserNotFoundError | UsernameOrEmailNeededError | PasswordNeededError)>; + static authControllerLogin(requestBody?: CreateAuth): Promise<(ResponseAuth | InvalidCredentialsError | UserNotFoundError | UsernameOrEmailNeededError | PasswordNeededError | InvalidCredentialsError)>; /** * Logout * Logout using your refresh token.
This instantly invalidates all your access and refresh tokens. * @param requestBody HandleLogout - * @returns any + * @result any * @throws ApiError */ - static authControllerLogout(requestBody?: HandleLogout): Promise<(Logout | InvalidCredentialsError | UserNotFoundError | UsernameOrEmailNeededError | PasswordNeededError)>; + static authControllerLogout(requestBody?: HandleLogout): Promise<(Logout | InvalidCredentialsError | UserNotFoundError | UsernameOrEmailNeededError | PasswordNeededError | InvalidCredentialsError)>; /** * Refresh * Refresh your access and refresh tokens using a valid refresh token.
You will receive: - * * access token (use it as a bearer token) - * * refresh token (will also be sent as a cookie) + * * access token (use it as a bearer token) + * * refresh token (will also be sent as a cookie) * @param requestBody RefreshAuth - * @returns any + * @result any * @throws ApiError */ static authControllerRefresh(requestBody?: RefreshAuth): Promise<(ResponseAuth | JwtNotProvidedError | IllegalJWTError | UserNotFoundError | RefreshTokenCountInvalidError)>; @@ -47,7 +47,7 @@ export declare class AuthService { * Request a password reset token.
This will provide you with a reset token that you can use by posting to /api/auth/reset/{token}. * @param locale * @param requestBody CreateResetToken - * @returns ResponseEmpty + * @result ResponseEmpty * @throws ApiError */ static authControllerGetResetToken(locale?: string, requestBody?: CreateResetToken): Promise; @@ -56,7 +56,7 @@ export declare class AuthService { * Reset a user's utilising a valid password reset token.
This will set the user's password to the one you provided in the body.
To get a reset token post to /api/auth/reset with your username. * @param token * @param requestBody ResetPassword - * @returns any + * @result any * @throws ApiError */ static authControllerResetPassword(token: string, requestBody?: ResetPassword): Promise<(ResponseAuth | UserNotFoundError | UsernameOrEmailNeededError)>; diff --git a/dist/services/AuthService.js b/dist/services/AuthService.js index 5e0438b..33981ff 100644 --- a/dist/services/AuthService.js +++ b/dist/services/AuthService.js @@ -6,10 +6,10 @@ class AuthService { /** * Login * Login with your username/email and password.
You will receive: - * * access token (use it as a bearer token) - * * refresh token (will also be sent as a cookie) + * * access token (use it as a bearer token) + * * refresh token (will also be sent as a cookie) * @param requestBody CreateAuth - * @returns any + * @result any * @throws ApiError */ static async authControllerLogin(requestBody) { @@ -24,7 +24,7 @@ class AuthService { * Logout * Logout using your refresh token.
This instantly invalidates all your access and refresh tokens. * @param requestBody HandleLogout - * @returns any + * @result any * @throws ApiError */ static async authControllerLogout(requestBody) { @@ -38,10 +38,10 @@ class AuthService { /** * Refresh * Refresh your access and refresh tokens using a valid refresh token.
You will receive: - * * access token (use it as a bearer token) - * * refresh token (will also be sent as a cookie) + * * access token (use it as a bearer token) + * * refresh token (will also be sent as a cookie) * @param requestBody RefreshAuth - * @returns any + * @result any * @throws ApiError */ static async authControllerRefresh(requestBody) { @@ -57,7 +57,7 @@ class AuthService { * Request a password reset token.
This will provide you with a reset token that you can use by posting to /api/auth/reset/{token}. * @param locale * @param requestBody CreateResetToken - * @returns ResponseEmpty + * @result ResponseEmpty * @throws ApiError */ static async authControllerGetResetToken(locale, requestBody) { @@ -76,7 +76,7 @@ class AuthService { * Reset a user's utilising a valid password reset token.
This will set the user's password to the one you provided in the body.
To get a reset token post to /api/auth/reset with your username. * @param token * @param requestBody ResetPassword - * @returns any + * @result any * @throws ApiError */ static async authControllerResetPassword(token, requestBody) { diff --git a/dist/services/DonationService.d.ts b/dist/services/DonationService.d.ts index f0a5bab..fc2c5a2 100644 --- a/dist/services/DonationService.d.ts +++ b/dist/services/DonationService.d.ts @@ -9,7 +9,7 @@ export declare class DonationService { /** * Get all * Lists all donations (fixed or distance based) from all donors.
This includes the donations's runner's distance ran(if distance donation). - * @returns any + * @result any * @throws ApiError */ static donationControllerGetAll(): Promise<(Array | Array)>; @@ -17,7 +17,7 @@ export declare class DonationService { * Get one * Lists all information about the donation whose id got provided. This includes the donation's runner's distance ran (if distance donation). * @param id - * @returns any + * @result any * @throws ApiError */ static donationControllerGetOne(id: number): Promise<(ResponseDonation | ResponseDistanceDonation)>; @@ -26,8 +26,8 @@ export declare class DonationService { * Delete the donation whose id you provided.
If no donation with this id exists it will just return 204(no content). * @param id * @param force - * @returns any - * @returns ResponseEmpty + * @result any + * @result ResponseEmpty * @throws ApiError */ static donationControllerRemove(id: number, force?: boolean): Promise<(ResponseDonation | ResponseDistanceDonation) | ResponseEmpty>; @@ -35,7 +35,7 @@ export declare class DonationService { * Post fixed * Create a fixed donation (not distance donation - use /donations/distance instead).
Please rmemember to provide the donation's donors's id and amount. * @param requestBody CreateFixedDonation - * @returns ResponseDonation + * @result ResponseDonation * @throws ApiError */ static donationControllerPostFixed(requestBody?: CreateFixedDonation): Promise; @@ -43,7 +43,7 @@ export declare class DonationService { * Post distance * Create a distance donation (not fixed donation - use /donations/fixed instead).
Please rmemember to provide the donation's donors's and runners ids and amount per distance (kilometer). * @param requestBody CreateDistanceDonation - * @returns ResponseDistanceDonation + * @result ResponseDistanceDonation * @throws ApiError */ static donationControllerPostDistance(requestBody?: CreateDistanceDonation): Promise; @@ -52,7 +52,7 @@ export declare class DonationService { * Update the fixed donation (not distance donation - use /donations/distance instead) whose id you provided.
Please remember that ids can't be changed and amounts must be positive. * @param id * @param requestBody UpdateFixedDonation - * @returns ResponseDonation + * @result ResponseDonation * @throws ApiError */ static donationControllerPutFixed(id: number, requestBody?: UpdateFixedDonation): Promise; @@ -61,7 +61,7 @@ export declare class DonationService { * Update the distance donation (not fixed donation - use /donations/fixed instead) whose id you provided.
Please remember that ids can't be changed and amountPerDistance must be positive. * @param id * @param requestBody UpdateDistanceDonation - * @returns ResponseDonation + * @result ResponseDonation * @throws ApiError */ static donationControllerPutDistance(id: number, requestBody?: UpdateDistanceDonation): Promise; diff --git a/dist/services/DonationService.js b/dist/services/DonationService.js index 32344dc..f36bde5 100644 --- a/dist/services/DonationService.js +++ b/dist/services/DonationService.js @@ -6,7 +6,7 @@ class DonationService { /** * Get all * Lists all donations (fixed or distance based) from all donors.
This includes the donations's runner's distance ran(if distance donation). - * @returns any + * @result any * @throws ApiError */ static async donationControllerGetAll() { @@ -20,7 +20,7 @@ class DonationService { * Get one * Lists all information about the donation whose id got provided. This includes the donation's runner's distance ran (if distance donation). * @param id - * @returns any + * @result any * @throws ApiError */ static async donationControllerGetOne(id) { @@ -35,8 +35,8 @@ class DonationService { * Delete the donation whose id you provided.
If no donation with this id exists it will just return 204(no content). * @param id * @param force - * @returns any - * @returns ResponseEmpty + * @result any + * @result ResponseEmpty * @throws ApiError */ static async donationControllerRemove(id, force) { @@ -53,7 +53,7 @@ class DonationService { * Post fixed * Create a fixed donation (not distance donation - use /donations/distance instead).
Please rmemember to provide the donation's donors's id and amount. * @param requestBody CreateFixedDonation - * @returns ResponseDonation + * @result ResponseDonation * @throws ApiError */ static async donationControllerPostFixed(requestBody) { @@ -68,7 +68,7 @@ class DonationService { * Post distance * Create a distance donation (not fixed donation - use /donations/fixed instead).
Please rmemember to provide the donation's donors's and runners ids and amount per distance (kilometer). * @param requestBody CreateDistanceDonation - * @returns ResponseDistanceDonation + * @result ResponseDistanceDonation * @throws ApiError */ static async donationControllerPostDistance(requestBody) { @@ -84,7 +84,7 @@ class DonationService { * Update the fixed donation (not distance donation - use /donations/distance instead) whose id you provided.
Please remember that ids can't be changed and amounts must be positive. * @param id * @param requestBody UpdateFixedDonation - * @returns ResponseDonation + * @result ResponseDonation * @throws ApiError */ static async donationControllerPutFixed(id, requestBody) { @@ -100,7 +100,7 @@ class DonationService { * Update the distance donation (not fixed donation - use /donations/fixed instead) whose id you provided.
Please remember that ids can't be changed and amountPerDistance must be positive. * @param id * @param requestBody UpdateDistanceDonation - * @returns ResponseDonation + * @result ResponseDonation * @throws ApiError */ static async donationControllerPutDistance(id, requestBody) { diff --git a/dist/services/DonorService.d.ts b/dist/services/DonorService.d.ts index 3a521a2..247a506 100644 --- a/dist/services/DonorService.d.ts +++ b/dist/services/DonorService.d.ts @@ -6,7 +6,7 @@ export declare class DonorService { /** * Get all * Lists all donor.
This includes the donor's current donation amount. - * @returns ResponseDonor + * @result ResponseDonor * @throws ApiError */ static donorControllerGetAll(): Promise>; @@ -14,7 +14,7 @@ export declare class DonorService { * Post * Create a new donor. * @param requestBody CreateDonor - * @returns ResponseDonor + * @result ResponseDonor * @throws ApiError */ static donorControllerPost(requestBody?: CreateDonor): Promise; @@ -22,7 +22,7 @@ export declare class DonorService { * Get one * Lists all information about the donor whose id got provided.
This includes the donor's current donation amount. * @param id - * @returns ResponseDonor + * @result ResponseDonor * @throws ApiError */ static donorControllerGetOne(id: number): Promise; @@ -31,7 +31,7 @@ export declare class DonorService { * Update the donor whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateDonor - * @returns ResponseDonor + * @result ResponseDonor * @throws ApiError */ static donorControllerPut(id: number, requestBody?: UpdateDonor): Promise; @@ -40,8 +40,8 @@ export declare class DonorService { * Delete the donor whose id you provided.
If no donor with this id exists it will just return 204(no content).
If the donor still has donations associated this will fail, please provide the query param ?force=true to delete the donor with all associated donations. * @param id * @param force - * @returns ResponseDonor - * @returns ResponseEmpty + * @result ResponseDonor + * @result ResponseEmpty * @throws ApiError */ static donorControllerRemove(id: number, force?: boolean): Promise; diff --git a/dist/services/DonorService.js b/dist/services/DonorService.js index cfe0ef6..f78f67f 100644 --- a/dist/services/DonorService.js +++ b/dist/services/DonorService.js @@ -6,7 +6,7 @@ class DonorService { /** * Get all * Lists all donor.
This includes the donor's current donation amount. - * @returns ResponseDonor + * @result ResponseDonor * @throws ApiError */ static async donorControllerGetAll() { @@ -20,7 +20,7 @@ class DonorService { * Post * Create a new donor. * @param requestBody CreateDonor - * @returns ResponseDonor + * @result ResponseDonor * @throws ApiError */ static async donorControllerPost(requestBody) { @@ -35,7 +35,7 @@ class DonorService { * Get one * Lists all information about the donor whose id got provided.
This includes the donor's current donation amount. * @param id - * @returns ResponseDonor + * @result ResponseDonor * @throws ApiError */ static async donorControllerGetOne(id) { @@ -50,7 +50,7 @@ class DonorService { * Update the donor whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateDonor - * @returns ResponseDonor + * @result ResponseDonor * @throws ApiError */ static async donorControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class DonorService { * Delete the donor whose id you provided.
If no donor with this id exists it will just return 204(no content).
If the donor still has donations associated this will fail, please provide the query param ?force=true to delete the donor with all associated donations. * @param id * @param force - * @returns ResponseDonor - * @returns ResponseEmpty + * @result ResponseDonor + * @result ResponseEmpty * @throws ApiError */ static async donorControllerRemove(id, force) { diff --git a/dist/services/GroupContactService.d.ts b/dist/services/GroupContactService.d.ts index 3a56e67..d783af3 100644 --- a/dist/services/GroupContactService.d.ts +++ b/dist/services/GroupContactService.d.ts @@ -6,7 +6,7 @@ export declare class GroupContactService { /** * Get all * Lists all contacts.
This includes the contact's associated groups. - * @returns ResponseGroupContact + * @result ResponseGroupContact * @throws ApiError */ static groupContactControllerGetAll(): Promise>; @@ -14,7 +14,7 @@ export declare class GroupContactService { * Post * Create a new contact. * @param requestBody CreateGroupContact - * @returns ResponseGroupContact + * @result ResponseGroupContact * @throws ApiError */ static groupContactControllerPost(requestBody?: CreateGroupContact): Promise; @@ -22,7 +22,7 @@ export declare class GroupContactService { * Get one * Lists all information about the contact whose id got provided.
This includes the contact's associated groups. * @param id - * @returns ResponseGroupContact + * @result ResponseGroupContact * @throws ApiError */ static groupContactControllerGetOne(id: number): Promise; @@ -31,7 +31,7 @@ export declare class GroupContactService { * Update the contact whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateGroupContact - * @returns ResponseGroupContact + * @result ResponseGroupContact * @throws ApiError */ static groupContactControllerPut(id: number, requestBody?: UpdateGroupContact): Promise; @@ -40,8 +40,8 @@ export declare class GroupContactService { * Delete the contact whose id you provided.
If no contact with this id exists it will just return 204(no content).
This won't delete any groups associated with the contact. * @param id * @param force - * @returns ResponseGroupContact - * @returns ResponseEmpty + * @result ResponseGroupContact + * @result ResponseEmpty * @throws ApiError */ static groupContactControllerRemove(id: number, force?: boolean): Promise; diff --git a/dist/services/GroupContactService.js b/dist/services/GroupContactService.js index 8add9c3..f48e7b9 100644 --- a/dist/services/GroupContactService.js +++ b/dist/services/GroupContactService.js @@ -6,7 +6,7 @@ class GroupContactService { /** * Get all * Lists all contacts.
This includes the contact's associated groups. - * @returns ResponseGroupContact + * @result ResponseGroupContact * @throws ApiError */ static async groupContactControllerGetAll() { @@ -20,7 +20,7 @@ class GroupContactService { * Post * Create a new contact. * @param requestBody CreateGroupContact - * @returns ResponseGroupContact + * @result ResponseGroupContact * @throws ApiError */ static async groupContactControllerPost(requestBody) { @@ -35,7 +35,7 @@ class GroupContactService { * Get one * Lists all information about the contact whose id got provided.
This includes the contact's associated groups. * @param id - * @returns ResponseGroupContact + * @result ResponseGroupContact * @throws ApiError */ static async groupContactControllerGetOne(id) { @@ -50,7 +50,7 @@ class GroupContactService { * Update the contact whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateGroupContact - * @returns ResponseGroupContact + * @result ResponseGroupContact * @throws ApiError */ static async groupContactControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class GroupContactService { * Delete the contact whose id you provided.
If no contact with this id exists it will just return 204(no content).
This won't delete any groups associated with the contact. * @param id * @param force - * @returns ResponseGroupContact - * @returns ResponseEmpty + * @result ResponseGroupContact + * @result ResponseEmpty * @throws ApiError */ static async groupContactControllerRemove(id, force) { diff --git a/dist/services/ImportService.d.ts b/dist/services/ImportService.d.ts index 3977284..5cd9e52 100644 --- a/dist/services/ImportService.d.ts +++ b/dist/services/ImportService.d.ts @@ -6,7 +6,7 @@ export declare class ImportService { * Create new runners from json and insert them into the provided group.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead. * @param group * @param requestBody ImportRunner - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static importControllerPostJson(group?: number, requestBody?: Array): Promise>; @@ -15,7 +15,7 @@ export declare class ImportService { * Create new runners from json and insert them into the provided org.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead. * @param id * @param requestBody ImportRunner - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static importControllerPostOrgsJson(id: number, requestBody?: Array): Promise>; @@ -24,7 +24,7 @@ export declare class ImportService { * Create new runners from json and insert them into the provided team * @param id * @param requestBody ImportRunner - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static importControllerPostTeamsJson(id: number, requestBody?: Array): Promise>; @@ -32,7 +32,7 @@ export declare class ImportService { * Post csv * Create new runners from csv and insert them into the provided group.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead. * @param group - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static importControllerPostCsv(group?: number): Promise>; @@ -40,7 +40,7 @@ export declare class ImportService { * Post orgs csv * Create new runners from csv and insert them into the provided org.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead. * @param id - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static importControllerPostOrgsCsv(id: number): Promise>; @@ -48,7 +48,7 @@ export declare class ImportService { * Post teams csv * Create new runners from csv and insert them into the provided team * @param id - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static importControllerPostTeamsCsv(id: number): Promise>; diff --git a/dist/services/ImportService.js b/dist/services/ImportService.js index a7cf7e0..af7bbe0 100644 --- a/dist/services/ImportService.js +++ b/dist/services/ImportService.js @@ -8,7 +8,7 @@ class ImportService { * Create new runners from json and insert them into the provided group.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead. * @param group * @param requestBody ImportRunner - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static async importControllerPostJson(group, requestBody) { @@ -27,7 +27,7 @@ class ImportService { * Create new runners from json and insert them into the provided org.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead. * @param id * @param requestBody ImportRunner - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static async importControllerPostOrgsJson(id, requestBody) { @@ -43,7 +43,7 @@ class ImportService { * Create new runners from json and insert them into the provided team * @param id * @param requestBody ImportRunner - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static async importControllerPostTeamsJson(id, requestBody) { @@ -58,7 +58,7 @@ class ImportService { * Post csv * Create new runners from csv and insert them into the provided group.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead. * @param group - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static async importControllerPostCsv(group) { @@ -75,7 +75,7 @@ class ImportService { * Post orgs csv * Create new runners from csv and insert them into the provided org.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead. * @param id - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static async importControllerPostOrgsCsv(id) { @@ -89,7 +89,7 @@ class ImportService { * Post teams csv * Create new runners from csv and insert them into the provided team * @param id - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static async importControllerPostTeamsCsv(id) { diff --git a/dist/services/MeService.d.ts b/dist/services/MeService.d.ts index 928758f..de908cd 100644 --- a/dist/services/MeService.d.ts +++ b/dist/services/MeService.d.ts @@ -5,7 +5,7 @@ export declare class MeService { /** * Get * Lists all information about yourself. - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static meControllerGet(): Promise; @@ -13,7 +13,7 @@ export declare class MeService { * Put * Update the yourself.
You can't edit your own permissions or group memberships here - Please use the /api/users/:id enpoint instead.
Please remember that ids can't be changed. * @param requestBody UpdateUser - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static meControllerPut(requestBody?: UpdateUser): Promise; @@ -21,14 +21,14 @@ export declare class MeService { * Remove * Delete yourself.
You have to confirm your decision by providing the ?force=true query param.
If there are any permissions directly granted to you they will get deleted as well. * @param force - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static meControllerRemove(force?: boolean): Promise; /** * Get permissions * Lists all permissions granted to the you sorted into directly granted and inherited as permission response objects. - * @returns ResponseUserPermissions + * @result ResponseUserPermissions * @throws ApiError */ static meControllerGetPermissions(): Promise; diff --git a/dist/services/MeService.js b/dist/services/MeService.js index 5c551a6..9d0d533 100644 --- a/dist/services/MeService.js +++ b/dist/services/MeService.js @@ -6,7 +6,7 @@ class MeService { /** * Get * Lists all information about yourself. - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static async meControllerGet() { @@ -20,7 +20,7 @@ class MeService { * Put * Update the yourself.
You can't edit your own permissions or group memberships here - Please use the /api/users/:id enpoint instead.
Please remember that ids can't be changed. * @param requestBody UpdateUser - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static async meControllerPut(requestBody) { @@ -35,7 +35,7 @@ class MeService { * Remove * Delete yourself.
You have to confirm your decision by providing the ?force=true query param.
If there are any permissions directly granted to you they will get deleted as well. * @param force - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static async meControllerRemove(force) { @@ -51,7 +51,7 @@ class MeService { /** * Get permissions * Lists all permissions granted to the you sorted into directly granted and inherited as permission response objects. - * @returns ResponseUserPermissions + * @result ResponseUserPermissions * @throws ApiError */ static async meControllerGetPermissions() { diff --git a/dist/services/PermissionService.d.ts b/dist/services/PermissionService.d.ts index 3092e86..0911cce 100644 --- a/dist/services/PermissionService.d.ts +++ b/dist/services/PermissionService.d.ts @@ -7,7 +7,7 @@ export declare class PermissionService { /** * Get all * Lists all permissions for all users and groups. - * @returns ResponsePermission + * @result ResponsePermission * @throws ApiError */ static permissionControllerGetAll(): Promise>; @@ -15,7 +15,7 @@ export declare class PermissionService { * Post * Create a new permission for a existing principal(user/group).
If a permission with this target, action and prinicpal already exists that permission will be returned instead of creating a new one. * @param requestBody CreatePermission - * @returns ResponsePermission + * @result ResponsePermission * @throws ApiError */ static permissionControllerPost(requestBody?: CreatePermission): Promise; @@ -23,7 +23,7 @@ export declare class PermissionService { * Get one * Lists all information about the permission whose id got provided. * @param id - * @returns ResponsePermission + * @result ResponsePermission * @throws ApiError */ static permissionControllerGetOne(id: number): Promise; @@ -32,7 +32,7 @@ export declare class PermissionService { * Update a permission object.
If updateing the permission object would result in duplicate permission (same target, action and principal) this permission will get deleted and the existing permission will be returned.
Please remember that ids can't be changed. * @param id * @param requestBody UpdatePermission - * @returns ResponsePrincipal + * @result ResponsePrincipal * @throws ApiError */ static permissionControllerPut(id: number, requestBody?: UpdatePermission): Promise; @@ -41,8 +41,8 @@ export declare class PermissionService { * Deletes the permission whose id you provide.
If no permission with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponsePermission - * @returns ResponseEmpty + * @result ResponsePermission + * @result ResponseEmpty * @throws ApiError */ static permissionControllerRemove(id: number, force?: boolean): Promise; diff --git a/dist/services/PermissionService.js b/dist/services/PermissionService.js index 05bc703..b18aada 100644 --- a/dist/services/PermissionService.js +++ b/dist/services/PermissionService.js @@ -6,7 +6,7 @@ class PermissionService { /** * Get all * Lists all permissions for all users and groups. - * @returns ResponsePermission + * @result ResponsePermission * @throws ApiError */ static async permissionControllerGetAll() { @@ -20,7 +20,7 @@ class PermissionService { * Post * Create a new permission for a existing principal(user/group).
If a permission with this target, action and prinicpal already exists that permission will be returned instead of creating a new one. * @param requestBody CreatePermission - * @returns ResponsePermission + * @result ResponsePermission * @throws ApiError */ static async permissionControllerPost(requestBody) { @@ -35,7 +35,7 @@ class PermissionService { * Get one * Lists all information about the permission whose id got provided. * @param id - * @returns ResponsePermission + * @result ResponsePermission * @throws ApiError */ static async permissionControllerGetOne(id) { @@ -50,7 +50,7 @@ class PermissionService { * Update a permission object.
If updateing the permission object would result in duplicate permission (same target, action and principal) this permission will get deleted and the existing permission will be returned.
Please remember that ids can't be changed. * @param id * @param requestBody UpdatePermission - * @returns ResponsePrincipal + * @result ResponsePrincipal * @throws ApiError */ static async permissionControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class PermissionService { * Deletes the permission whose id you provide.
If no permission with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponsePermission - * @returns ResponseEmpty + * @result ResponsePermission + * @result ResponseEmpty * @throws ApiError */ static async permissionControllerRemove(id, force) { diff --git a/dist/services/RunnerCardService.d.ts b/dist/services/RunnerCardService.d.ts index c51817b..351f03b 100644 --- a/dist/services/RunnerCardService.d.ts +++ b/dist/services/RunnerCardService.d.ts @@ -6,7 +6,7 @@ export declare class RunnerCardService { /** * Get all * Lists all card. - * @returns ResponseRunnerCard + * @result ResponseRunnerCard * @throws ApiError */ static runnerCardControllerGetAll(): Promise>; @@ -14,7 +14,7 @@ export declare class RunnerCardService { * Post * Create a new card.
You can provide a associated runner by id but you don't have to. * @param requestBody CreateRunnerCard - * @returns ResponseRunnerCard + * @result ResponseRunnerCard * @throws ApiError */ static runnerCardControllerPost(requestBody?: CreateRunnerCard): Promise; @@ -22,7 +22,7 @@ export declare class RunnerCardService { * Get one * Lists all information about the card whose id got provided. * @param id - * @returns ResponseRunnerCard + * @result ResponseRunnerCard * @throws ApiError */ static runnerCardControllerGetOne(id: number): Promise; @@ -31,7 +31,7 @@ export declare class RunnerCardService { * Update the card whose id you provided.
Scans created via this card will still be associated with the old runner.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateRunnerCard - * @returns ResponseRunnerCard + * @result ResponseRunnerCard * @throws ApiError */ static runnerCardControllerPut(id: number, requestBody?: UpdateRunnerCard): Promise; @@ -40,8 +40,8 @@ export declare class RunnerCardService { * Delete the card whose id you provided.
If no card with this id exists it will just return 204(no content).
If the card still has scans associated you have to provide the force=true query param (warning: this deletes all scans associated with by this card - please disable it instead or just remove the runner association). * @param id * @param force - * @returns ResponseRunnerCard - * @returns ResponseEmpty + * @result ResponseRunnerCard + * @result ResponseEmpty * @throws ApiError */ static runnerCardControllerRemove(id: number, force?: boolean): Promise; @@ -50,7 +50,7 @@ export declare class RunnerCardService { * Create blank cards in bulk.
Just provide the count as a query param and wait for the 200 response.
You can provide the 'returnCards' query param if you want to receive the RESPONSERUNNERCARD objects in the response. * @param count * @param returnCards - * @returns ResponseEmpty + * @result ResponseEmpty * @throws ApiError */ static runnerCardControllerPostBlancoBulk(count?: number, returnCards?: boolean): Promise; diff --git a/dist/services/RunnerCardService.js b/dist/services/RunnerCardService.js index 5c03707..2cd65ab 100644 --- a/dist/services/RunnerCardService.js +++ b/dist/services/RunnerCardService.js @@ -6,7 +6,7 @@ class RunnerCardService { /** * Get all * Lists all card. - * @returns ResponseRunnerCard + * @result ResponseRunnerCard * @throws ApiError */ static async runnerCardControllerGetAll() { @@ -20,7 +20,7 @@ class RunnerCardService { * Post * Create a new card.
You can provide a associated runner by id but you don't have to. * @param requestBody CreateRunnerCard - * @returns ResponseRunnerCard + * @result ResponseRunnerCard * @throws ApiError */ static async runnerCardControllerPost(requestBody) { @@ -35,7 +35,7 @@ class RunnerCardService { * Get one * Lists all information about the card whose id got provided. * @param id - * @returns ResponseRunnerCard + * @result ResponseRunnerCard * @throws ApiError */ static async runnerCardControllerGetOne(id) { @@ -50,7 +50,7 @@ class RunnerCardService { * Update the card whose id you provided.
Scans created via this card will still be associated with the old runner.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateRunnerCard - * @returns ResponseRunnerCard + * @result ResponseRunnerCard * @throws ApiError */ static async runnerCardControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class RunnerCardService { * Delete the card whose id you provided.
If no card with this id exists it will just return 204(no content).
If the card still has scans associated you have to provide the force=true query param (warning: this deletes all scans associated with by this card - please disable it instead or just remove the runner association). * @param id * @param force - * @returns ResponseRunnerCard - * @returns ResponseEmpty + * @result ResponseRunnerCard + * @result ResponseEmpty * @throws ApiError */ static async runnerCardControllerRemove(id, force) { @@ -85,7 +85,7 @@ class RunnerCardService { * Create blank cards in bulk.
Just provide the count as a query param and wait for the 200 response.
You can provide the 'returnCards' query param if you want to receive the RESPONSERUNNERCARD objects in the response. * @param count * @param returnCards - * @returns ResponseEmpty + * @result ResponseEmpty * @throws ApiError */ static async runnerCardControllerPostBlancoBulk(count, returnCards) { diff --git a/dist/services/RunnerOrganizationService.d.ts b/dist/services/RunnerOrganizationService.d.ts index 4d3f00f..326b9fa 100644 --- a/dist/services/RunnerOrganizationService.d.ts +++ b/dist/services/RunnerOrganizationService.d.ts @@ -7,7 +7,7 @@ export declare class RunnerOrganizationService { /** * Get all * Lists all organizations.
This includes their address, contact and teams (if existing/associated). - * @returns ResponseRunnerOrganization + * @result ResponseRunnerOrganization * @throws ApiError */ static runnerOrganizationControllerGetAll(): Promise>; @@ -15,7 +15,7 @@ export declare class RunnerOrganizationService { * Post * Create a new organsisation. * @param requestBody CreateRunnerOrganization - * @returns ResponseRunnerOrganization + * @result ResponseRunnerOrganization * @throws ApiError */ static runnerOrganizationControllerPost(requestBody?: CreateRunnerOrganization): Promise; @@ -23,7 +23,7 @@ export declare class RunnerOrganizationService { * Get one * Lists all information about the organization whose id got provided. * @param id - * @returns ResponseRunnerOrganization + * @result ResponseRunnerOrganization * @throws ApiError */ static runnerOrganizationControllerGetOne(id: number): Promise; @@ -32,7 +32,7 @@ export declare class RunnerOrganizationService { * Update the organization whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateRunnerOrganization - * @returns ResponseRunnerOrganization + * @result ResponseRunnerOrganization * @throws ApiError */ static runnerOrganizationControllerPut(id: number, requestBody?: UpdateRunnerOrganization): Promise; @@ -41,8 +41,8 @@ export declare class RunnerOrganizationService { * Delete the organsisation whose id you provided.
If the organization still has runners and/or teams associated this will fail.
To delete the organization with all associated runners and teams set the force QueryParam to true (cascading deletion might take a while).
This won't delete the associated contact.
If no organization with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseRunnerOrganization - * @returns ResponseEmpty + * @result ResponseRunnerOrganization + * @result ResponseEmpty * @throws ApiError */ static runnerOrganizationControllerRemove(id: number, force?: boolean): Promise; @@ -51,7 +51,7 @@ export declare class RunnerOrganizationService { * Lists all runners from this org and it's teams (if you don't provide the ?onlyDirect=true param).
This includes the runner's group and distance ran. * @param id * @param onlyDirect - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static runnerOrganizationControllerGetRunners(id: number, onlyDirect?: boolean): Promise>; diff --git a/dist/services/RunnerOrganizationService.js b/dist/services/RunnerOrganizationService.js index 09afb4d..78466fa 100644 --- a/dist/services/RunnerOrganizationService.js +++ b/dist/services/RunnerOrganizationService.js @@ -6,7 +6,7 @@ class RunnerOrganizationService { /** * Get all * Lists all organizations.
This includes their address, contact and teams (if existing/associated). - * @returns ResponseRunnerOrganization + * @result ResponseRunnerOrganization * @throws ApiError */ static async runnerOrganizationControllerGetAll() { @@ -20,7 +20,7 @@ class RunnerOrganizationService { * Post * Create a new organsisation. * @param requestBody CreateRunnerOrganization - * @returns ResponseRunnerOrganization + * @result ResponseRunnerOrganization * @throws ApiError */ static async runnerOrganizationControllerPost(requestBody) { @@ -35,7 +35,7 @@ class RunnerOrganizationService { * Get one * Lists all information about the organization whose id got provided. * @param id - * @returns ResponseRunnerOrganization + * @result ResponseRunnerOrganization * @throws ApiError */ static async runnerOrganizationControllerGetOne(id) { @@ -50,7 +50,7 @@ class RunnerOrganizationService { * Update the organization whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateRunnerOrganization - * @returns ResponseRunnerOrganization + * @result ResponseRunnerOrganization * @throws ApiError */ static async runnerOrganizationControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class RunnerOrganizationService { * Delete the organsisation whose id you provided.
If the organization still has runners and/or teams associated this will fail.
To delete the organization with all associated runners and teams set the force QueryParam to true (cascading deletion might take a while).
This won't delete the associated contact.
If no organization with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseRunnerOrganization - * @returns ResponseEmpty + * @result ResponseRunnerOrganization + * @result ResponseEmpty * @throws ApiError */ static async runnerOrganizationControllerRemove(id, force) { @@ -85,7 +85,7 @@ class RunnerOrganizationService { * Lists all runners from this org and it's teams (if you don't provide the ?onlyDirect=true param).
This includes the runner's group and distance ran. * @param id * @param onlyDirect - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static async runnerOrganizationControllerGetRunners(id, onlyDirect) { diff --git a/dist/services/RunnerSelfService.d.ts b/dist/services/RunnerSelfService.d.ts index 1f9a9d4..f9b8769 100644 --- a/dist/services/RunnerSelfService.d.ts +++ b/dist/services/RunnerSelfService.d.ts @@ -9,7 +9,7 @@ export declare class RunnerSelfService { * Get * Lists all information about yourself.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please use the forgot endpoint. * @param jwt - * @returns ResponseSelfServiceRunner + * @result ResponseSelfServiceRunner * @throws ApiError */ static runnerSelfServiceControllerGet(jwt: string): Promise; @@ -18,7 +18,7 @@ export declare class RunnerSelfService { * Deletes all information about yourself.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please use the forgot endpoint. * @param jwt * @param force - * @returns ResponseSelfServiceRunner + * @result ResponseSelfServiceRunner * @throws ApiError */ static runnerSelfServiceControllerRemove(jwt: string, force?: boolean): Promise; @@ -26,23 +26,23 @@ export declare class RunnerSelfService { * Get scans * Lists all your (runner) scans.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please contact support. * @param jwt - * @returns ResponseSelfServiceScan + * @result ResponseSelfServiceScan * @throws ApiError */ static runnerSelfServiceControllerGetScans(jwt: string): Promise>; /** * Get station me * Lists basic information about the station whose token got provided.
This includes it's associated track. - * @returns ResponseScanStation + * @result ResponseScanStation * @throws ApiError */ static runnerSelfServiceControllerGetStationMe(): Promise; /** * Request new token - * Use this endpoint to reuqest a new selfservice token/link to be sent to your mail address (rate limited to one mail every 24hrs). + * Use this endpoint to reuqest a new selfservice magic-login-link to be sent to your mail address (rate limited to one mail every 24hrs). * @param mail * @param locale - * @returns any Successful response + * @result any Successful response * @throws ApiError */ static runnerSelfServiceControllerRequestNewToken(mail?: string, locale?: string): Promise; @@ -51,7 +51,7 @@ export declare class RunnerSelfService { * Create a new selfservice runner in the citizen org.
This endpoint shoud be used to allow "everyday citizen" to register themselves.
You have to provide a mail address, b/c the future we'll implement email verification. * @param locale * @param requestBody CreateSelfServiceCitizenRunner - * @returns ResponseSelfServiceRunner + * @result ResponseSelfServiceRunner * @throws ApiError */ static runnerSelfServiceControllerRegisterRunner(locale?: string, requestBody?: CreateSelfServiceCitizenRunner): Promise; @@ -61,7 +61,7 @@ export declare class RunnerSelfService { * @param token * @param locale * @param requestBody CreateSelfServiceRunner - * @returns ResponseSelfServiceRunner + * @result ResponseSelfServiceRunner * @throws ApiError */ static runnerSelfServiceControllerRegisterOrganizationRunner(token: string, locale?: string, requestBody?: CreateSelfServiceRunner): Promise; @@ -69,7 +69,7 @@ export declare class RunnerSelfService { * Get selfservice org * Get the basic info and teams for a org. * @param token - * @returns ResponseSelfServiceOrganisation + * @result ResponseSelfServiceOrganisation * @throws ApiError */ static runnerSelfServiceControllerGetSelfserviceOrg(token: string): Promise; diff --git a/dist/services/RunnerSelfService.js b/dist/services/RunnerSelfService.js index 20cf66d..bbc3e39 100644 --- a/dist/services/RunnerSelfService.js +++ b/dist/services/RunnerSelfService.js @@ -7,7 +7,7 @@ class RunnerSelfService { * Get * Lists all information about yourself.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please use the forgot endpoint. * @param jwt - * @returns ResponseSelfServiceRunner + * @result ResponseSelfServiceRunner * @throws ApiError */ static async runnerSelfServiceControllerGet(jwt) { @@ -22,7 +22,7 @@ class RunnerSelfService { * Deletes all information about yourself.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please use the forgot endpoint. * @param jwt * @param force - * @returns ResponseSelfServiceRunner + * @result ResponseSelfServiceRunner * @throws ApiError */ static async runnerSelfServiceControllerRemove(jwt, force) { @@ -39,7 +39,7 @@ class RunnerSelfService { * Get scans * Lists all your (runner) scans.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please contact support. * @param jwt - * @returns ResponseSelfServiceScan + * @result ResponseSelfServiceScan * @throws ApiError */ static async runnerSelfServiceControllerGetScans(jwt) { @@ -52,7 +52,7 @@ class RunnerSelfService { /** * Get station me * Lists basic information about the station whose token got provided.
This includes it's associated track. - * @returns ResponseScanStation + * @result ResponseScanStation * @throws ApiError */ static async runnerSelfServiceControllerGetStationMe() { @@ -64,10 +64,10 @@ class RunnerSelfService { } /** * Request new token - * Use this endpoint to reuqest a new selfservice token/link to be sent to your mail address (rate limited to one mail every 24hrs). + * Use this endpoint to reuqest a new selfservice magic-login-link to be sent to your mail address (rate limited to one mail every 24hrs). * @param mail * @param locale - * @returns any Successful response + * @result any Successful response * @throws ApiError */ static async runnerSelfServiceControllerRequestNewToken(mail, locale) { @@ -86,7 +86,7 @@ class RunnerSelfService { * Create a new selfservice runner in the citizen org.
This endpoint shoud be used to allow "everyday citizen" to register themselves.
You have to provide a mail address, b/c the future we'll implement email verification. * @param locale * @param requestBody CreateSelfServiceCitizenRunner - * @returns ResponseSelfServiceRunner + * @result ResponseSelfServiceRunner * @throws ApiError */ static async runnerSelfServiceControllerRegisterRunner(locale, requestBody) { @@ -106,7 +106,7 @@ class RunnerSelfService { * @param token * @param locale * @param requestBody CreateSelfServiceRunner - * @returns ResponseSelfServiceRunner + * @result ResponseSelfServiceRunner * @throws ApiError */ static async runnerSelfServiceControllerRegisterOrganizationRunner(token, locale, requestBody) { @@ -124,7 +124,7 @@ class RunnerSelfService { * Get selfservice org * Get the basic info and teams for a org. * @param token - * @returns ResponseSelfServiceOrganisation + * @result ResponseSelfServiceOrganisation * @throws ApiError */ static async runnerSelfServiceControllerGetSelfserviceOrg(token) { diff --git a/dist/services/RunnerService.d.ts b/dist/services/RunnerService.d.ts index 48684e6..735b349 100644 --- a/dist/services/RunnerService.d.ts +++ b/dist/services/RunnerService.d.ts @@ -10,7 +10,7 @@ export declare class RunnerService { /** * Get all * Lists all runners from all teams/orgs.
This includes the runner's group and distance ran. - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static runnerControllerGetAll(): Promise>; @@ -18,7 +18,7 @@ export declare class RunnerService { * Post * Create a new runner.
Please remeber to provide the runner's group's id. * @param requestBody CreateRunner - * @returns any + * @result any * @throws ApiError */ static runnerControllerPost(requestBody?: CreateRunner): Promise<(ResponseRunner | RunnerGroupNeededError | RunnerGroupNotFoundError)>; @@ -26,7 +26,7 @@ export declare class RunnerService { * Get one * Lists all information about the runner whose id got provided. * @param id - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static runnerControllerGetOne(id: number): Promise; @@ -35,7 +35,7 @@ export declare class RunnerService { * Update the runner whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateRunner - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static runnerControllerPut(id: number, requestBody?: UpdateRunner): Promise; @@ -44,8 +44,8 @@ export declare class RunnerService { * Delete the runner whose id you provided.
This will also delete all scans and cards associated with the runner.
If no runner with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseRunner - * @returns ResponseEmpty + * @result ResponseRunner + * @result ResponseEmpty * @throws ApiError */ static runnerControllerRemove(id: number, force?: boolean): Promise; @@ -53,7 +53,7 @@ export declare class RunnerService { * Get scans * Lists all scans of the runner whose id got provided.
If you only want the valid scans just add the ?onlyValid=true query param. * @param id - * @returns any + * @result any * @throws ApiError */ static runnerControllerGetScans(id: number): Promise<(Array | Array)>; diff --git a/dist/services/RunnerService.js b/dist/services/RunnerService.js index f5b5aa4..8e20171 100644 --- a/dist/services/RunnerService.js +++ b/dist/services/RunnerService.js @@ -6,7 +6,7 @@ class RunnerService { /** * Get all * Lists all runners from all teams/orgs.
This includes the runner's group and distance ran. - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static async runnerControllerGetAll() { @@ -20,7 +20,7 @@ class RunnerService { * Post * Create a new runner.
Please remeber to provide the runner's group's id. * @param requestBody CreateRunner - * @returns any + * @result any * @throws ApiError */ static async runnerControllerPost(requestBody) { @@ -35,7 +35,7 @@ class RunnerService { * Get one * Lists all information about the runner whose id got provided. * @param id - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static async runnerControllerGetOne(id) { @@ -50,7 +50,7 @@ class RunnerService { * Update the runner whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateRunner - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static async runnerControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class RunnerService { * Delete the runner whose id you provided.
This will also delete all scans and cards associated with the runner.
If no runner with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseRunner - * @returns ResponseEmpty + * @result ResponseRunner + * @result ResponseEmpty * @throws ApiError */ static async runnerControllerRemove(id, force) { @@ -84,7 +84,7 @@ class RunnerService { * Get scans * Lists all scans of the runner whose id got provided.
If you only want the valid scans just add the ?onlyValid=true query param. * @param id - * @returns any + * @result any * @throws ApiError */ static async runnerControllerGetScans(id) { diff --git a/dist/services/RunnerTeamService.d.ts b/dist/services/RunnerTeamService.d.ts index 69f22e3..5819fb1 100644 --- a/dist/services/RunnerTeamService.d.ts +++ b/dist/services/RunnerTeamService.d.ts @@ -7,7 +7,7 @@ export declare class RunnerTeamService { /** * Get all * Lists all teams.
This includes their parent organization and contact (if existing/associated). - * @returns ResponseRunnerTeam + * @result ResponseRunnerTeam * @throws ApiError */ static runnerTeamControllerGetAll(): Promise>; @@ -15,7 +15,7 @@ export declare class RunnerTeamService { * Post * Create a new organsisation.
Please remember to provide it's parent group's id. * @param requestBody CreateRunnerTeam - * @returns ResponseRunnerTeam + * @result ResponseRunnerTeam * @throws ApiError */ static runnerTeamControllerPost(requestBody?: CreateRunnerTeam): Promise; @@ -23,7 +23,7 @@ export declare class RunnerTeamService { * Get one * Lists all information about the team whose id got provided. * @param id - * @returns ResponseRunnerTeam + * @result ResponseRunnerTeam * @throws ApiError */ static runnerTeamControllerGetOne(id: number): Promise; @@ -32,7 +32,7 @@ export declare class RunnerTeamService { * Update the team whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateRunnerTeam - * @returns ResponseRunnerTeam + * @result ResponseRunnerTeam * @throws ApiError */ static runnerTeamControllerPut(id: number, requestBody?: UpdateRunnerTeam): Promise; @@ -41,8 +41,8 @@ export declare class RunnerTeamService { * Delete the team whose id you provided.
If the team still has runners associated this will fail.
To delete the team with all associated runners set the force QueryParam to true (cascading deletion might take a while).
This won't delete the associated contact.
If no team with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseRunnerTeam - * @returns ResponseEmpty + * @result ResponseRunnerTeam + * @result ResponseEmpty * @throws ApiError */ static runnerTeamControllerRemove(id: number, force?: boolean): Promise; @@ -50,7 +50,7 @@ export declare class RunnerTeamService { * Get runners * Lists all runners from this team.
This includes the runner's group and distance ran. * @param id - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static runnerTeamControllerGetRunners(id: number): Promise>; diff --git a/dist/services/RunnerTeamService.js b/dist/services/RunnerTeamService.js index e57a8c2..2aae3ca 100644 --- a/dist/services/RunnerTeamService.js +++ b/dist/services/RunnerTeamService.js @@ -6,7 +6,7 @@ class RunnerTeamService { /** * Get all * Lists all teams.
This includes their parent organization and contact (if existing/associated). - * @returns ResponseRunnerTeam + * @result ResponseRunnerTeam * @throws ApiError */ static async runnerTeamControllerGetAll() { @@ -20,7 +20,7 @@ class RunnerTeamService { * Post * Create a new organsisation.
Please remember to provide it's parent group's id. * @param requestBody CreateRunnerTeam - * @returns ResponseRunnerTeam + * @result ResponseRunnerTeam * @throws ApiError */ static async runnerTeamControllerPost(requestBody) { @@ -35,7 +35,7 @@ class RunnerTeamService { * Get one * Lists all information about the team whose id got provided. * @param id - * @returns ResponseRunnerTeam + * @result ResponseRunnerTeam * @throws ApiError */ static async runnerTeamControllerGetOne(id) { @@ -50,7 +50,7 @@ class RunnerTeamService { * Update the team whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateRunnerTeam - * @returns ResponseRunnerTeam + * @result ResponseRunnerTeam * @throws ApiError */ static async runnerTeamControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class RunnerTeamService { * Delete the team whose id you provided.
If the team still has runners associated this will fail.
To delete the team with all associated runners set the force QueryParam to true (cascading deletion might take a while).
This won't delete the associated contact.
If no team with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseRunnerTeam - * @returns ResponseEmpty + * @result ResponseRunnerTeam + * @result ResponseEmpty * @throws ApiError */ static async runnerTeamControllerRemove(id, force) { @@ -84,7 +84,7 @@ class RunnerTeamService { * Get runners * Lists all runners from this team.
This includes the runner's group and distance ran. * @param id - * @returns ResponseRunner + * @result ResponseRunner * @throws ApiError */ static async runnerTeamControllerGetRunners(id) { diff --git a/dist/services/ScanService.d.ts b/dist/services/ScanService.d.ts index f732db5..28338e3 100644 --- a/dist/services/ScanService.d.ts +++ b/dist/services/ScanService.d.ts @@ -9,7 +9,7 @@ export declare class ScanService { /** * Get all * Lists all scans (normal or track) from all runners.
This includes the scan's runner's distance ran. - * @returns any + * @result any * @throws ApiError */ static scanControllerGetAll(): Promise<(Array | Array)>; @@ -17,7 +17,7 @@ export declare class ScanService { * Post * Create a new scan (not track scan - use /scans/trackscans instead).
Please rmemember to provide the scan's runner's id and distance. * @param requestBody CreateScan - * @returns ResponseScan + * @result ResponseScan * @throws ApiError */ static scanControllerPost(requestBody?: CreateScan): Promise; @@ -25,7 +25,7 @@ export declare class ScanService { * Get one * Lists all information about the scan whose id got provided. This includes the scan's runner's distance ran. * @param id - * @returns any + * @result any * @throws ApiError */ static scanControllerGetOne(id: number): Promise<(ResponseScan | ResponseTrackScan)>; @@ -34,7 +34,7 @@ export declare class ScanService { * Update the scan (not track scan use /scans/trackscans/:id instead) whose id you provided.
Please remember that ids can't be changed and distances must be positive. * @param id * @param requestBody UpdateScan - * @returns ResponseScan + * @result ResponseScan * @throws ApiError */ static scanControllerPut(id: number, requestBody?: UpdateScan): Promise; @@ -43,8 +43,8 @@ export declare class ScanService { * Delete the scan whose id you provided.
If no scan with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseScan - * @returns ResponseEmpty + * @result ResponseScan + * @result ResponseEmpty * @throws ApiError */ static scanControllerRemove(id: number, force?: boolean): Promise; @@ -52,7 +52,7 @@ export declare class ScanService { * Post track scans * Create a new track scan (for "normal" scans use /scans instead).
Please remember that to provide the scan's card's station's id. * @param requestBody CreateTrackScan - * @returns ResponseTrackScan + * @result ResponseTrackScan * @throws ApiError */ static scanControllerPostTrackScans(requestBody?: CreateTrackScan): Promise; @@ -61,7 +61,7 @@ export declare class ScanService { * Update the track scan (not "normal" scan use /scans/trackscans/:id instead) whose id you provided.
Please remember that only the validity, runner and track can be changed. * @param id * @param requestBody UpdateTrackScan - * @returns ResponseTrackScan + * @result ResponseTrackScan * @throws ApiError */ static scanControllerPutTrackScan(id: number, requestBody?: UpdateTrackScan): Promise; diff --git a/dist/services/ScanService.js b/dist/services/ScanService.js index bbe931c..abcf2e8 100644 --- a/dist/services/ScanService.js +++ b/dist/services/ScanService.js @@ -6,7 +6,7 @@ class ScanService { /** * Get all * Lists all scans (normal or track) from all runners.
This includes the scan's runner's distance ran. - * @returns any + * @result any * @throws ApiError */ static async scanControllerGetAll() { @@ -20,7 +20,7 @@ class ScanService { * Post * Create a new scan (not track scan - use /scans/trackscans instead).
Please rmemember to provide the scan's runner's id and distance. * @param requestBody CreateScan - * @returns ResponseScan + * @result ResponseScan * @throws ApiError */ static async scanControllerPost(requestBody) { @@ -35,7 +35,7 @@ class ScanService { * Get one * Lists all information about the scan whose id got provided. This includes the scan's runner's distance ran. * @param id - * @returns any + * @result any * @throws ApiError */ static async scanControllerGetOne(id) { @@ -50,7 +50,7 @@ class ScanService { * Update the scan (not track scan use /scans/trackscans/:id instead) whose id you provided.
Please remember that ids can't be changed and distances must be positive. * @param id * @param requestBody UpdateScan - * @returns ResponseScan + * @result ResponseScan * @throws ApiError */ static async scanControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class ScanService { * Delete the scan whose id you provided.
If no scan with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseScan - * @returns ResponseEmpty + * @result ResponseScan + * @result ResponseEmpty * @throws ApiError */ static async scanControllerRemove(id, force) { @@ -84,7 +84,7 @@ class ScanService { * Post track scans * Create a new track scan (for "normal" scans use /scans instead).
Please remember that to provide the scan's card's station's id. * @param requestBody CreateTrackScan - * @returns ResponseTrackScan + * @result ResponseTrackScan * @throws ApiError */ static async scanControllerPostTrackScans(requestBody) { @@ -100,7 +100,7 @@ class ScanService { * Update the track scan (not "normal" scan use /scans/trackscans/:id instead) whose id you provided.
Please remember that only the validity, runner and track can be changed. * @param id * @param requestBody UpdateTrackScan - * @returns ResponseTrackScan + * @result ResponseTrackScan * @throws ApiError */ static async scanControllerPutTrackScan(id, requestBody) { diff --git a/dist/services/ScanStationService.d.ts b/dist/services/ScanStationService.d.ts index 43375a0..79ee286 100644 --- a/dist/services/ScanStationService.d.ts +++ b/dist/services/ScanStationService.d.ts @@ -6,7 +6,7 @@ export declare class ScanStationService { /** * Get all * Lists all stations.
This includes their associated tracks. - * @returns ResponseScanStation + * @result ResponseScanStation * @throws ApiError */ static scanStationControllerGetAll(): Promise>; @@ -14,7 +14,7 @@ export declare class ScanStationService { * Post * Create a new station.
Please remeber to provide the station's track's id.
Please also remember that the station key is only visibe on creation. * @param requestBody CreateScanStation - * @returns ResponseScanStation + * @result ResponseScanStation * @throws ApiError */ static scanStationControllerPost(requestBody?: CreateScanStation): Promise; @@ -22,7 +22,7 @@ export declare class ScanStationService { * Get one * Lists all information about the station whose id got provided.
This includes it's associated track. * @param id - * @returns ResponseScanStation + * @result ResponseScanStation * @throws ApiError */ static scanStationControllerGetOne(id: number): Promise; @@ -31,7 +31,7 @@ export declare class ScanStationService { * Update the station whose id you provided.
Please remember that only the description and enabled state can be changed. * @param id * @param requestBody UpdateScanStation - * @returns ResponseScanStation + * @result ResponseScanStation * @throws ApiError */ static scanStationControllerPut(id: number, requestBody?: UpdateScanStation): Promise; @@ -40,8 +40,8 @@ export declare class ScanStationService { * Delete the station whose id you provided.
If no station with this id exists it will just return 204(no content).
If the station still has scans associated you have to provide the force=true query param (warning: this deletes all scans associated with/created by this station - please disable it instead). * @param id * @param force - * @returns ResponseScanStation - * @returns ResponseEmpty + * @result ResponseScanStation + * @result ResponseEmpty * @throws ApiError */ static scanStationControllerRemove(id: number, force?: boolean): Promise; diff --git a/dist/services/ScanStationService.js b/dist/services/ScanStationService.js index 514a9b1..9c5ce94 100644 --- a/dist/services/ScanStationService.js +++ b/dist/services/ScanStationService.js @@ -6,7 +6,7 @@ class ScanStationService { /** * Get all * Lists all stations.
This includes their associated tracks. - * @returns ResponseScanStation + * @result ResponseScanStation * @throws ApiError */ static async scanStationControllerGetAll() { @@ -20,7 +20,7 @@ class ScanStationService { * Post * Create a new station.
Please remeber to provide the station's track's id.
Please also remember that the station key is only visibe on creation. * @param requestBody CreateScanStation - * @returns ResponseScanStation + * @result ResponseScanStation * @throws ApiError */ static async scanStationControllerPost(requestBody) { @@ -35,7 +35,7 @@ class ScanStationService { * Get one * Lists all information about the station whose id got provided.
This includes it's associated track. * @param id - * @returns ResponseScanStation + * @result ResponseScanStation * @throws ApiError */ static async scanStationControllerGetOne(id) { @@ -50,7 +50,7 @@ class ScanStationService { * Update the station whose id you provided.
Please remember that only the description and enabled state can be changed. * @param id * @param requestBody UpdateScanStation - * @returns ResponseScanStation + * @result ResponseScanStation * @throws ApiError */ static async scanStationControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class ScanStationService { * Delete the station whose id you provided.
If no station with this id exists it will just return 204(no content).
If the station still has scans associated you have to provide the force=true query param (warning: this deletes all scans associated with/created by this station - please disable it instead). * @param id * @param force - * @returns ResponseScanStation - * @returns ResponseEmpty + * @result ResponseScanStation + * @result ResponseEmpty * @throws ApiError */ static async scanStationControllerRemove(id, force) { diff --git a/dist/services/StatsClientService.d.ts b/dist/services/StatsClientService.d.ts index b917634..29d2d0a 100644 --- a/dist/services/StatsClientService.d.ts +++ b/dist/services/StatsClientService.d.ts @@ -5,7 +5,7 @@ export declare class StatsClientService { /** * Get all * Lists all stats clients. Please remember that the key can only be viewed on creation. - * @returns ResponseStatsClient + * @result ResponseStatsClient * @throws ApiError */ static statsClientControllerGetAll(): Promise>; @@ -13,7 +13,7 @@ export declare class StatsClientService { * Post * Create a new stats client.
Please remember that the client's key will be generated automaticly and that it can only be viewed on creation. * @param requestBody CreateStatsClient - * @returns ResponseStatsClient + * @result ResponseStatsClient * @throws ApiError */ static statsClientControllerPost(requestBody?: CreateStatsClient): Promise; @@ -21,7 +21,7 @@ export declare class StatsClientService { * Get one * Lists all information about the stats client whose id got provided. Please remember that the key can only be viewed on creation. * @param id - * @returns ResponseStatsClient + * @result ResponseStatsClient * @throws ApiError */ static statsClientControllerGetOne(id: number): Promise; @@ -30,8 +30,8 @@ export declare class StatsClientService { * Delete the stats client whose id you provided.
If no client with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseStatsClient - * @returns ResponseEmpty + * @result ResponseStatsClient + * @result ResponseEmpty * @throws ApiError */ static statsClientControllerRemove(id: number, force?: boolean): Promise; diff --git a/dist/services/StatsClientService.js b/dist/services/StatsClientService.js index 07fbcb9..cda7a4b 100644 --- a/dist/services/StatsClientService.js +++ b/dist/services/StatsClientService.js @@ -6,7 +6,7 @@ class StatsClientService { /** * Get all * Lists all stats clients. Please remember that the key can only be viewed on creation. - * @returns ResponseStatsClient + * @result ResponseStatsClient * @throws ApiError */ static async statsClientControllerGetAll() { @@ -20,7 +20,7 @@ class StatsClientService { * Post * Create a new stats client.
Please remember that the client's key will be generated automaticly and that it can only be viewed on creation. * @param requestBody CreateStatsClient - * @returns ResponseStatsClient + * @result ResponseStatsClient * @throws ApiError */ static async statsClientControllerPost(requestBody) { @@ -35,7 +35,7 @@ class StatsClientService { * Get one * Lists all information about the stats client whose id got provided. Please remember that the key can only be viewed on creation. * @param id - * @returns ResponseStatsClient + * @result ResponseStatsClient * @throws ApiError */ static async statsClientControllerGetOne(id) { @@ -50,8 +50,8 @@ class StatsClientService { * Delete the stats client whose id you provided.
If no client with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseStatsClient - * @returns ResponseEmpty + * @result ResponseStatsClient + * @result ResponseEmpty * @throws ApiError */ static async statsClientControllerRemove(id, force) { diff --git a/dist/services/StatsService.d.ts b/dist/services/StatsService.d.ts index 7b758f0..57fba52 100644 --- a/dist/services/StatsService.d.ts +++ b/dist/services/StatsService.d.ts @@ -6,21 +6,21 @@ export declare class StatsService { /** * Get * A very basic stats endpoint providing basic counters for a dashboard or simmilar - * @returns ResponseStats + * @result ResponseStats * @throws ApiError */ static statsControllerGet(): Promise; /** * Get top runners by distance * Returns the top ten runners by distance. - * @returns ResponseStatsRunner + * @result ResponseStatsRunner * @throws ApiError */ static statsControllerGetTopRunnersByDistance(): Promise>; /** * Get top runners by donations * Returns the top ten runners by donations. - * @returns ResponseStatsRunner + * @result ResponseStatsRunner * @throws ApiError */ static statsControllerGetTopRunnersByDonations(): Promise>; @@ -28,42 +28,42 @@ export declare class StatsService { * Get top runners by laptime * Returns the top ten runners by fastest laptime on your selected track (track by id). * @param track - * @returns ResponseStatsRunner + * @result ResponseStatsRunner * @throws ApiError */ static statsControllerGetTopRunnersByLaptime(track?: number): Promise>; /** * Get top runners by track time * Returns the top ten fastest track times (with their runner and the runner's group). - * @returns ResponseStatsRunner + * @result ResponseStatsRunner * @throws ApiError */ static statsControllerGetTopRunnersByTrackTime(): Promise>; /** * Get top teams by distance * Returns the top ten teams by distance. - * @returns ResponseStatsTeam + * @result ResponseStatsTeam * @throws ApiError */ static statsControllerGetTopTeamsByDistance(): Promise>; /** * Get top teams by donations * Returns the top ten teams by donations. - * @returns ResponseStatsTeam + * @result ResponseStatsTeam * @throws ApiError */ static statsControllerGetTopTeamsByDonations(): Promise>; /** * Get top orgs by distance * Returns the top ten organizations by distance. - * @returns ResponseStatsOrgnisation + * @result ResponseStatsOrgnisation * @throws ApiError */ static statsControllerGetTopOrgsByDistance(): Promise>; /** * Get top orgs by donations * Returns the top ten organizations by donations. - * @returns ResponseStatsOrgnisation + * @result ResponseStatsOrgnisation * @throws ApiError */ static statsControllerGetTopOrgsByDonations(): Promise>; diff --git a/dist/services/StatsService.js b/dist/services/StatsService.js index d7fc733..1cbf692 100644 --- a/dist/services/StatsService.js +++ b/dist/services/StatsService.js @@ -6,7 +6,7 @@ class StatsService { /** * Get * A very basic stats endpoint providing basic counters for a dashboard or simmilar - * @returns ResponseStats + * @result ResponseStats * @throws ApiError */ static async statsControllerGet() { @@ -19,7 +19,7 @@ class StatsService { /** * Get top runners by distance * Returns the top ten runners by distance. - * @returns ResponseStatsRunner + * @result ResponseStatsRunner * @throws ApiError */ static async statsControllerGetTopRunnersByDistance() { @@ -32,7 +32,7 @@ class StatsService { /** * Get top runners by donations * Returns the top ten runners by donations. - * @returns ResponseStatsRunner + * @result ResponseStatsRunner * @throws ApiError */ static async statsControllerGetTopRunnersByDonations() { @@ -46,7 +46,7 @@ class StatsService { * Get top runners by laptime * Returns the top ten runners by fastest laptime on your selected track (track by id). * @param track - * @returns ResponseStatsRunner + * @result ResponseStatsRunner * @throws ApiError */ static async statsControllerGetTopRunnersByLaptime(track) { @@ -62,7 +62,7 @@ class StatsService { /** * Get top runners by track time * Returns the top ten fastest track times (with their runner and the runner's group). - * @returns ResponseStatsRunner + * @result ResponseStatsRunner * @throws ApiError */ static async statsControllerGetTopRunnersByTrackTime() { @@ -75,7 +75,7 @@ class StatsService { /** * Get top teams by distance * Returns the top ten teams by distance. - * @returns ResponseStatsTeam + * @result ResponseStatsTeam * @throws ApiError */ static async statsControllerGetTopTeamsByDistance() { @@ -88,7 +88,7 @@ class StatsService { /** * Get top teams by donations * Returns the top ten teams by donations. - * @returns ResponseStatsTeam + * @result ResponseStatsTeam * @throws ApiError */ static async statsControllerGetTopTeamsByDonations() { @@ -101,7 +101,7 @@ class StatsService { /** * Get top orgs by distance * Returns the top ten organizations by distance. - * @returns ResponseStatsOrgnisation + * @result ResponseStatsOrgnisation * @throws ApiError */ static async statsControllerGetTopOrgsByDistance() { @@ -114,7 +114,7 @@ class StatsService { /** * Get top orgs by donations * Returns the top ten organizations by donations. - * @returns ResponseStatsOrgnisation + * @result ResponseStatsOrgnisation * @throws ApiError */ static async statsControllerGetTopOrgsByDonations() { diff --git a/dist/services/StatusService.d.ts b/dist/services/StatusService.d.ts index b923096..d783578 100644 --- a/dist/services/StatusService.d.ts +++ b/dist/services/StatusService.d.ts @@ -2,14 +2,14 @@ export declare class StatusService { /** * Get * A very basic status/health endpoint that just checks if the database connection is available.
The available information depth will be expanded later. - * @returns any Successful response + * @result any Successful response * @throws ApiError */ static statusControllerGet(): Promise; /** * Get version * A very basic endpoint that just returns the curent package version. - * @returns any Successful response + * @result any Successful response * @throws ApiError */ static statusControllerGetVersion(): Promise; diff --git a/dist/services/StatusService.js b/dist/services/StatusService.js index 41b1582..068f207 100644 --- a/dist/services/StatusService.js +++ b/dist/services/StatusService.js @@ -9,7 +9,7 @@ class StatusService { /** * Get * A very basic status/health endpoint that just checks if the database connection is available.
The available information depth will be expanded later. - * @returns any Successful response + * @result any Successful response * @throws ApiError */ static async statusControllerGet() { @@ -22,7 +22,7 @@ class StatusService { /** * Get version * A very basic endpoint that just returns the curent package version. - * @returns any Successful response + * @result any Successful response * @throws ApiError */ static async statusControllerGetVersion() { diff --git a/dist/services/TrackService.d.ts b/dist/services/TrackService.d.ts index e6feb2b..c974848 100644 --- a/dist/services/TrackService.d.ts +++ b/dist/services/TrackService.d.ts @@ -6,7 +6,7 @@ export declare class TrackService { /** * Get all * Lists all tracks. - * @returns ResponseTrack + * @result ResponseTrack * @throws ApiError */ static trackControllerGetAll(): Promise>; @@ -14,7 +14,7 @@ export declare class TrackService { * Post * Create a new track.
Please remember that the track's distance must be greater than 0. * @param requestBody CreateTrack - * @returns ResponseTrack + * @result ResponseTrack * @throws ApiError */ static trackControllerPost(requestBody?: CreateTrack): Promise; @@ -22,7 +22,7 @@ export declare class TrackService { * Get one * Lists all information about the track whose id got provided. * @param id - * @returns ResponseTrack + * @result ResponseTrack * @throws ApiError */ static trackControllerGetOne(id: number): Promise; @@ -31,7 +31,7 @@ export declare class TrackService { * Update the track whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateTrack - * @returns ResponseTrack + * @result ResponseTrack * @throws ApiError */ static trackControllerPut(id: number, requestBody?: UpdateTrack): Promise; @@ -40,8 +40,8 @@ export declare class TrackService { * Delete the track whose id you provided.
If no track with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseTrack - * @returns ResponseEmpty + * @result ResponseTrack + * @result ResponseEmpty * @throws ApiError */ static trackControllerRemove(id: number, force?: boolean): Promise; diff --git a/dist/services/TrackService.js b/dist/services/TrackService.js index 5ef8d0a..76c3658 100644 --- a/dist/services/TrackService.js +++ b/dist/services/TrackService.js @@ -6,7 +6,7 @@ class TrackService { /** * Get all * Lists all tracks. - * @returns ResponseTrack + * @result ResponseTrack * @throws ApiError */ static async trackControllerGetAll() { @@ -20,7 +20,7 @@ class TrackService { * Post * Create a new track.
Please remember that the track's distance must be greater than 0. * @param requestBody CreateTrack - * @returns ResponseTrack + * @result ResponseTrack * @throws ApiError */ static async trackControllerPost(requestBody) { @@ -35,7 +35,7 @@ class TrackService { * Get one * Lists all information about the track whose id got provided. * @param id - * @returns ResponseTrack + * @result ResponseTrack * @throws ApiError */ static async trackControllerGetOne(id) { @@ -50,7 +50,7 @@ class TrackService { * Update the track whose id you provided.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateTrack - * @returns ResponseTrack + * @result ResponseTrack * @throws ApiError */ static async trackControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class TrackService { * Delete the track whose id you provided.
If no track with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseTrack - * @returns ResponseEmpty + * @result ResponseTrack + * @result ResponseEmpty * @throws ApiError */ static async trackControllerRemove(id, force) { diff --git a/dist/services/UserGroupService.d.ts b/dist/services/UserGroupService.d.ts index 570ce18..c343dcb 100644 --- a/dist/services/UserGroupService.d.ts +++ b/dist/services/UserGroupService.d.ts @@ -9,7 +9,7 @@ export declare class UserGroupService { /** * Get all * Lists all groups.
The information provided might change while the project continues to evolve. - * @returns ResponseUserGroup + * @result ResponseUserGroup * @throws ApiError */ static userGroupControllerGetAll(): Promise>; @@ -17,7 +17,7 @@ export declare class UserGroupService { * Post * Create a new group.
If you want to grant permissions to the group you have to create them seperately by posting to /api/permissions after creating the group. * @param requestBody CreateUserGroup - * @returns any + * @result any * @throws ApiError */ static userGroupControllerPost(requestBody?: CreateUserGroup): Promise<(UserGroup | UserGroupNotFoundError)>; @@ -25,7 +25,7 @@ export declare class UserGroupService { * Get one * Lists all information about the group whose id got provided.
The information provided might change while the project continues to evolve. * @param id - * @returns ResponseUserGroup + * @result ResponseUserGroup * @throws ApiError */ static userGroupControllerGetOne(id: number): Promise; @@ -34,7 +34,7 @@ export declare class UserGroupService { * Update the group whose id you provided.
To change the permissions granted to the group please use /api/permissions instead.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateUserGroup - * @returns UserGroup + * @result UserGroup * @throws ApiError */ static userGroupControllerPut(id: number, requestBody?: UpdateUserGroup): Promise; @@ -43,8 +43,8 @@ export declare class UserGroupService { * Delete the group whose id you provided.
If there are any permissions directly granted to the group they will get deleted as well.
Users associated with this group won't get deleted - just deassociated.
If no group with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseUserGroup - * @returns ResponseEmpty + * @result ResponseUserGroup + * @result ResponseEmpty * @throws ApiError */ static userGroupControllerRemove(id: number, force?: boolean): Promise; @@ -52,7 +52,7 @@ export declare class UserGroupService { * Get permissions * Lists all permissions granted to the group as permission response objects. * @param id - * @returns ResponseUserGroupPermissions + * @result ResponseUserGroupPermissions * @throws ApiError */ static userGroupControllerGetPermissions(id: number): Promise; diff --git a/dist/services/UserGroupService.js b/dist/services/UserGroupService.js index 2c8fa0c..36d41e6 100644 --- a/dist/services/UserGroupService.js +++ b/dist/services/UserGroupService.js @@ -6,7 +6,7 @@ class UserGroupService { /** * Get all * Lists all groups.
The information provided might change while the project continues to evolve. - * @returns ResponseUserGroup + * @result ResponseUserGroup * @throws ApiError */ static async userGroupControllerGetAll() { @@ -20,7 +20,7 @@ class UserGroupService { * Post * Create a new group.
If you want to grant permissions to the group you have to create them seperately by posting to /api/permissions after creating the group. * @param requestBody CreateUserGroup - * @returns any + * @result any * @throws ApiError */ static async userGroupControllerPost(requestBody) { @@ -35,7 +35,7 @@ class UserGroupService { * Get one * Lists all information about the group whose id got provided.
The information provided might change while the project continues to evolve. * @param id - * @returns ResponseUserGroup + * @result ResponseUserGroup * @throws ApiError */ static async userGroupControllerGetOne(id) { @@ -50,7 +50,7 @@ class UserGroupService { * Update the group whose id you provided.
To change the permissions granted to the group please use /api/permissions instead.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateUserGroup - * @returns UserGroup + * @result UserGroup * @throws ApiError */ static async userGroupControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class UserGroupService { * Delete the group whose id you provided.
If there are any permissions directly granted to the group they will get deleted as well.
Users associated with this group won't get deleted - just deassociated.
If no group with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseUserGroup - * @returns ResponseEmpty + * @result ResponseUserGroup + * @result ResponseEmpty * @throws ApiError */ static async userGroupControllerRemove(id, force) { @@ -84,7 +84,7 @@ class UserGroupService { * Get permissions * Lists all permissions granted to the group as permission response objects. * @param id - * @returns ResponseUserGroupPermissions + * @result ResponseUserGroupPermissions * @throws ApiError */ static async userGroupControllerGetPermissions(id) { diff --git a/dist/services/UserService.d.ts b/dist/services/UserService.d.ts index 2eed7ca..8a8bcb7 100644 --- a/dist/services/UserService.d.ts +++ b/dist/services/UserService.d.ts @@ -6,7 +6,7 @@ export declare class UserService { /** * Get all * Lists all users.
This includes their groups and permissions granted to them. - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static userControllerGetAll(): Promise>; @@ -14,7 +14,7 @@ export declare class UserService { * Post * Create a new user.
If you want to grant permissions to the user you have to create them seperately by posting to /api/permissions after creating the user. * @param requestBody CreateUser - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static userControllerPost(requestBody?: CreateUser): Promise; @@ -22,7 +22,7 @@ export declare class UserService { * Get one * Lists all information about the user whose id got provided.
Please remember that all permissions granted to the user will show up here. * @param id - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static userControllerGetOne(id: number): Promise; @@ -31,7 +31,7 @@ export declare class UserService { * Update the user whose id you provided.
To change the permissions directly granted to the user please use /api/permissions instead.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateUser - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static userControllerPut(id: number, requestBody?: UpdateUser): Promise; @@ -40,8 +40,8 @@ export declare class UserService { * Delete the user whose id you provided.
You have to confirm your decision by providing the ?force=true query param.
If there are any permissions directly granted to the user they will get deleted as well.
If no user with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseUser - * @returns ResponseEmpty + * @result ResponseUser + * @result ResponseEmpty * @throws ApiError */ static userControllerRemove(id: number, force?: boolean): Promise; @@ -49,7 +49,7 @@ export declare class UserService { * Get permissions * Lists all permissions granted to the user sorted into directly granted and inherited as permission response objects. * @param id - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static userControllerGetPermissions(id: number): Promise; diff --git a/dist/services/UserService.js b/dist/services/UserService.js index 663f449..3a39c41 100644 --- a/dist/services/UserService.js +++ b/dist/services/UserService.js @@ -6,7 +6,7 @@ class UserService { /** * Get all * Lists all users.
This includes their groups and permissions granted to them. - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static async userControllerGetAll() { @@ -20,7 +20,7 @@ class UserService { * Post * Create a new user.
If you want to grant permissions to the user you have to create them seperately by posting to /api/permissions after creating the user. * @param requestBody CreateUser - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static async userControllerPost(requestBody) { @@ -35,7 +35,7 @@ class UserService { * Get one * Lists all information about the user whose id got provided.
Please remember that all permissions granted to the user will show up here. * @param id - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static async userControllerGetOne(id) { @@ -50,7 +50,7 @@ class UserService { * Update the user whose id you provided.
To change the permissions directly granted to the user please use /api/permissions instead.
Please remember that ids can't be changed. * @param id * @param requestBody UpdateUser - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static async userControllerPut(id, requestBody) { @@ -66,8 +66,8 @@ class UserService { * Delete the user whose id you provided.
You have to confirm your decision by providing the ?force=true query param.
If there are any permissions directly granted to the user they will get deleted as well.
If no user with this id exists it will just return 204(no content). * @param id * @param force - * @returns ResponseUser - * @returns ResponseEmpty + * @result ResponseUser + * @result ResponseEmpty * @throws ApiError */ static async userControllerRemove(id, force) { @@ -84,7 +84,7 @@ class UserService { * Get permissions * Lists all permissions granted to the user sorted into directly granted and inherited as permission response objects. * @param id - * @returns ResponseUser + * @result ResponseUser * @throws ApiError */ static async userControllerGetPermissions(id) { diff --git a/openapi.json b/openapi.json index 40310fe..db702b5 100644 --- a/openapi.json +++ b/openapi.json @@ -1 +1 @@ -{"components":{"schemas":{"IllegalJWTError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserNonexistantOrRefreshtokenInvalidError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"InvalidCredentialsError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"NoPermissionError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UsernameOrEmailNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PasswordNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"JwtNotProvidedError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserNotFoundOrRefreshTokenCountInvalidError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RefreshTokenCountInvalidError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResetAlreadyRequestedError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserDisabledError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"JwtUser":{"properties":{"id":{"type":"integer"},"uuid":{"format":"uuid","type":"string"},"email":{"format":"email","type":"string"},"username":{"type":"string"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"enabled":{"type":"boolean"},"refreshTokenCount":{"minLength":1,"type":"integer"},"profilePic":{"type":"string"}},"type":"object","required":["id","uuid","firstname","lastname","enabled","refreshTokenCount"]},"ResponsePrincipal":{"properties":{"id":{"type":"integer"}},"type":"object","required":["id"]},"ResponseUser":{"properties":{"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"username":{"type":"string"},"enabled":{"type":"boolean"},"profilePic":{"type":"string"},"groups":{"items":{},"type":"array"},"permissions":{"items":{},"type":"array"},"id":{"type":"integer"}},"type":"object","required":["firstname","middlename","lastname","phone","email","username","enabled","profilePic","id"]},"ResponsePermission":{"properties":{"id":{"type":"integer"},"principal":{"minLength":1,"type":"object"},"target":{"enum":["RUNNER","ORGANIZATION","TEAM","TRACK","USER","USERGROUP","PERMISSION","STATSCLIENT","DONOR","SCAN","STATION","CARD","DONATION","CONTACT","MAIL"],"type":"string","minLength":1},"action":{"enum":["GET","CREATE","UPDATE","DELETE","IMPORT"],"type":"string","minLength":1}},"type":"object","required":["id","principal","target","action"]},"Permission":{"properties":{"id":{"type":"integer"},"target":{"enum":["RUNNER","ORGANIZATION","TEAM","TRACK","USER","USERGROUP","PERMISSION","STATSCLIENT","DONOR","SCAN","STATION","CARD","DONATION","CONTACT","MAIL"],"type":"string","minLength":1},"action":{"enum":["GET","CREATE","UPDATE","DELETE","IMPORT"],"type":"string"}},"type":"object","required":["id","target","action"]},"Principal":{"properties":{"id":{"type":"integer"}},"type":"object","required":["id"]},"UserAction":{"properties":{"id":{"type":"integer"},"target":{"type":"string","minLength":1},"action":{"enum":["GET","CREATE","UPDATE","DELETE","IMPORT"],"type":"string"},"changed":{"type":"string"}},"type":"object","required":["id","target","action"]},"ResponseUserGroup":{"properties":{"name":{"type":"string","minLength":1},"description":{"type":"string"},"permissions":{"items":{},"type":"array"},"id":{"type":"integer"}},"type":"object","required":["name","id"]},"UserGroup":{"properties":{"name":{"type":"string","minLength":1},"description":{"type":"string"},"id":{"type":"integer"}},"type":"object","required":["name","id"]},"User":{"properties":{"uuid":{"format":"uuid","type":"string"},"email":{"minLength":1,"type":"string","format":"email"},"phone":{"type":"string"},"username":{"type":"string"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"password":{"minLength":1,"type":"string"},"groups":{},"enabled":{"type":"boolean"},"refreshTokenCount":{"type":"integer"},"profilePic":{"format":"url","type":"string"},"resetRequestedTimestamp":{"type":"string"},"actions":{},"id":{"type":"integer"}},"type":"object","required":["uuid","email","username","firstname","lastname","password","enabled","refreshTokenCount","profilePic","id"]},"MailSendingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UsernameContainsIllegalCharacterError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserEmailNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserDeletionNotConfirmedError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PasswordMustContainUppercaseLetterError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PasswordMustContainLowercaseLetterError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PasswordMustContainNumberError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PasswordTooShortError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResponseAuth":{"properties":{"access_token":{"type":"string"},"refresh_token":{"type":"string"},"access_token_expires_at":{"type":"integer"},"refresh_token_expires_at":{"type":"integer"}},"type":"object","required":["access_token","refresh_token","access_token_expires_at","refresh_token_expires_at"]},"CreateAuth":{"properties":{"username":{"type":"string"},"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":1}},"type":"object","required":["password"]},"CreateResetToken":{"properties":{"email":{"type":"string","format":"email","minLength":1}},"type":"object","required":["email"]},"Logout":{"properties":{"timestamp":{"type":"string"}},"type":"object","required":["timestamp"]},"HandleLogout":{"properties":{"token":{"type":"string"}},"type":"object"},"RefreshAuth":{"properties":{"token":{"type":"string"}},"type":"object"},"ResetPassword":{"properties":{"resetToken":{"type":"string"},"password":{"type":"string","minLength":1}},"type":"object","required":["password"]},"ResponseEmpty":{"properties":{"response":{"type":"string"}},"type":"object","required":["response"]},"DonationNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"DonationIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"DonorNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"DonorIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"DonorReceiptAddressNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"DonorHasDonationsError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerGroupNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerEmailNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerSelfserviceTimeoutError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerHasDistanceDonationsError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"AddressPostalCodeInvalidError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"AddressFirstLineEmptyError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"AddressPostalCodeEmptyError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"AddressCityEmptyError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"AddressCountryEmptyError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"Address":{"properties":{"address1":{"type":"string"},"address2":{"type":"string"},"postalcode":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"}},"type":"object","required":["address1","address2","postalcode","city","country"]},"ResponseParticipant":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"type":"object"}},"type":"object","required":["id","firstname","middlename","lastname","phone","email"]},"ResponseDonor":{"properties":{"receiptNeeded":{"type":"boolean"},"donationAmount":{"type":"integer"},"paidDonationAmount":{"type":"integer"},"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"type":"object"}},"type":"object","required":["receiptNeeded","donationAmount","paidDonationAmount","id","firstname","middlename","lastname","phone","email"]},"ResponseDonation":{"properties":{"id":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"donor":{"minLength":1,"type":"string"},"amount":{"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["id","donor","amount","paidAmount"]},"ResponseGroupContact":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"groups":{"type":"object"},"address":{"type":"object"}},"type":"object","required":["id","firstname","middlename","lastname","phone","email","groups","address"]},"ResponseRunnerGroup":{"properties":{"id":{"minLength":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"contact":{"type":"object"}},"type":"object","required":["id","name"]},"ResponseRunner":{"properties":{"distance":{"type":"integer"},"group":{"type":"object"},"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"type":"object"}},"type":"object","required":["distance","group","id","firstname","middlename","lastname","phone","email"]},"ResponseDistanceDonation":{"properties":{"runner":{"type":"object"},"amountPerDistance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"id":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"donor":{"minLength":1,"type":"string"},"amount":{"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["runner","amountPerDistance","id","donor","amount","paidAmount"]},"Participant":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"phone":{"type":"string"},"email":{"format":"email","type":"string"}},"type":"object","required":["id","firstname","lastname"]},"Donor":{"properties":{"receiptNeeded":{"type":"boolean"},"donationAmount":{"type":"integer"},"paidDonationAmount":{"type":"integer"},"id":{"type":"integer"},"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"phone":{"type":"string"},"email":{"format":"email","type":"string"}},"type":"object","required":["receiptNeeded","donationAmount","paidDonationAmount","id","firstname","lastname"]},"Donation":{"properties":{"id":{"type":"integer"},"donor":{"minLength":1,"type":"string"},"paidAmount":{"type":"integer"}},"type":"object","required":["id","donor","paidAmount"]},"RunnerCardNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerCardIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerCardHasScansError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerCardIdOutOfRangeError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResponseRunnerCard":{"properties":{"id":{"type":"integer"},"runner":{"type":"object"},"code":{"minLength":1,"type":"string"},"enabled":{"type":"boolean"}},"type":"object","required":["id","runner","code","enabled"]},"ResponseScan":{"properties":{"id":{"type":"integer"},"runner":{"minLength":1,"type":"string"},"valid":{"type":"boolean"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["id","runner","valid","distance"]},"TrackNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"TrackIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"TrackLapTimeCantBeNegativeError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"TrackHasScanStationsError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResponseTrack":{"properties":{"id":{"type":"integer"},"name":{"type":"string"},"distance":{"type":"integer"},"minimumLapTime":{"type":"integer"}},"type":"object","required":["id","name","distance"]},"ResponseScanStation":{"properties":{"id":{"type":"integer"},"description":{"type":"string"},"key":{"type":"string"},"prefix":{"minLength":1,"type":"string"},"track":{"minLength":1,"type":"object"},"enabled":{"type":"boolean"}},"type":"object","required":["id","prefix","track","enabled"]},"ResponseTrackScan":{"properties":{"track":{"minLength":1,"type":"string"},"card":{"minLength":1,"type":"string"},"station":{"minLength":1,"type":"string"},"timestamp":{"minLength":1,"type":"string","pattern":"d{4}-[01]d-[0-3]dT[0-2]d:[0-5]d:[0-5]d.d+Z?"},"lapTime":{"type":"number"},"id":{"type":"integer"},"runner":{"minLength":1,"type":"string"},"valid":{"type":"boolean"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["track","card","station","timestamp","lapTime","id","runner","valid","distance"]},"Scan":{"properties":{"id":{"type":"integer"},"runner":{"minLength":1,"type":"string"},"valid":{"type":"boolean"},"_distance":{"type":"integer"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["id","runner","valid","_distance","distance"]},"Track":{"properties":{"id":{"type":"integer"},"name":{"minLength":1,"type":"string"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"minimumLapTime":{"type":"integer"}},"type":"object","required":["id","name","distance"]},"ScanStation":{"properties":{"id":{"type":"integer"},"description":{"type":"string"},"track":{"minLength":1,"type":"string"},"prefix":{"type":"string"},"key":{"type":"string","minLength":1},"cleartextkey":{"type":"string"},"enabled":{"type":"boolean"}},"type":"object","required":["id","track","prefix","key","enabled"]},"TrackScan":{"properties":{"track":{"minLength":1,"type":"string"},"card":{"minLength":1,"type":"string"},"station":{"minLength":1,"type":"string"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"timestamp":{"type":"integer"},"lapTime":{"type":"number"},"id":{"type":"integer"},"runner":{"minLength":1,"type":"string"},"valid":{"type":"boolean"},"_distance":{"type":"integer"}},"type":"object","required":["track","card","station","distance","timestamp","lapTime","id","runner","valid","_distance"]},"RunnerCard":{"properties":{"id":{"type":"integer"},"runner":{},"enabled":{"type":"boolean"}},"type":"object","required":["id","enabled"]},"GroupContact":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"phone":{"type":"string"},"email":{"format":"email","type":"string"}},"type":"object","required":["id","firstname","lastname"]},"RunnerGroup":{"properties":{"id":{"type":"integer"},"name":{"type":"string","minLength":1},"contact":{},"distance":{"type":"integer"},"distanceDonationAmount":{"type":"integer"}},"type":"object","required":["id","name","distance","distanceDonationAmount"]},"Runner":{"properties":{"group":{"minLength":1,"type":"string"},"resetRequestedTimestamp":{"type":"string"},"distance":{"type":"integer"},"distanceDonationAmount":{"type":"integer"},"id":{"type":"integer"},"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"phone":{"type":"string"},"email":{"format":"email","type":"string"}},"type":"object","required":["group","distance","distanceDonationAmount","id","firstname","lastname"]},"DistanceDonation":{"properties":{"runner":{"minLength":1,"type":"string"},"amountPerDistance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"id":{"type":"integer"},"donor":{"minLength":1,"type":"string"},"paidAmount":{"type":"integer"}},"type":"object","required":["runner","amountPerDistance","id","donor","paidAmount"]},"CreateDonation":{"properties":{"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["donor"]},"CreateDistanceDonation":{"properties":{"runner":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"amountPerDistance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["runner","amountPerDistance","donor"]},"FixedDonation":{"properties":{"_amount":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"amount":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"id":{"type":"integer"},"donor":{"minLength":1,"type":"string"},"paidAmount":{"type":"integer"}},"type":"object","required":["_amount","amount","id","donor","paidAmount"]},"CreateFixedDonation":{"properties":{"amount":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["amount","donor"]},"UpdateDonation":{"properties":{"id":{"type":"integer"},"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["id","donor"]},"UpdateDistanceDonation":{"properties":{"runner":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"amountPerDistance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"id":{"type":"integer"},"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["runner","amountPerDistance","id","donor"]},"UpdateFixedDonation":{"properties":{"amount":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"id":{"type":"integer"},"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["amount","id","donor"]},"CreateParticipant":{"properties":{"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["firstname","lastname"]},"CreateDonor":{"properties":{"receiptNeeded":{"type":"boolean"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["firstname","lastname"]},"UpdateDonor":{"properties":{"id":{"type":"integer"},"receiptNeeded":{"type":"boolean"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["id","firstname","lastname"]},"GroupContactNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"GroupContactIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerGroupNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"CreateGroupContact":{"properties":{"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"address":{"type":"object"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"groups":{}},"type":"object","required":["firstname","lastname"]},"UpdateGroupContact":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"address":{"type":"object"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"groups":{}},"type":"object","required":["id","firstname","lastname"]},"RunnerOrganizationNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerOrganizationIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerOrganizationHasRunnersError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerOrganizationHasTeamsError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerOrganizationWrongTypeError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResponseRunnerOrganization":{"properties":{"address":{"type":"object"},"teams":{"items":{},"type":"array"},"registrationKey":{"format":"base64","type":"string"},"registrationEnabled":{"type":"boolean"},"id":{"minLength":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"contact":{"type":"object"}},"type":"object","required":["teams","id","name"]},"ResponseRunnerTeam":{"properties":{"parentGroup":{"minLength":1,"type":"object"},"id":{"minLength":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"contact":{"type":"object"}},"type":"object","required":["parentGroup","id","name"]},"RunnerTeam":{"properties":{"parentGroup":{"minLength":1,"type":"string"},"id":{"type":"integer"},"name":{"type":"string","minLength":1},"contact":{},"distance":{"type":"integer"},"distanceDonationAmount":{"type":"integer"}},"type":"object","required":["parentGroup","id","name","distance","distanceDonationAmount"]},"RunnerOrganization":{"properties":{"address":{},"key":{"type":"string"},"distance":{"type":"integer"},"distanceDonationAmount":{"type":"integer"},"id":{"type":"integer"},"name":{"type":"string","minLength":1},"contact":{}},"type":"object","required":["distance","distanceDonationAmount","id","name"]},"RunnerTeamNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerTeamIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerTeamHasRunnersError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerTeamNeedsParentError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"CreateRunner":{"properties":{"group":{"type":"integer"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["group","firstname","lastname"]},"ImportRunner":{"properties":{"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"team":{"type":"string"},"class":{"type":"string"}},"type":"object","required":["firstname","lastname"]},"UpdateRunner":{"properties":{"id":{"type":"integer"},"group":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["id","group","firstname","lastname"]},"CreateRunnerCard":{"properties":{"runner":{"type":"integer"},"enabled":{"type":"boolean"}},"type":"object","required":["enabled"]},"UpdateRunnerCard":{"properties":{"id":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"runner":{"type":"integer"},"enabled":{"type":"boolean"}},"type":"object","required":["id","enabled"]},"ScanNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ScanIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ScanStationNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ScanStationIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ScanStationHasScansError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"CreateScan":{"properties":{"runner":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"valid":{"type":"boolean"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["runner","distance"]},"CreateTrackScan":{"properties":{"card":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"station":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["card"]},"UpdateScan":{"properties":{"id":{"type":"integer"},"runner":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"valid":{"type":"boolean"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["id","runner","distance"]},"UpdateTrackScan":{"properties":{"id":{"type":"integer"},"runner":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"valid":{"type":"boolean"},"track":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["id","runner","track"]},"GroupNameNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserGroupNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserGroupIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UpdateUser":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"username":{"type":"string"},"email":{"minLength":1,"type":"string","format":"email"},"phone":{"type":"string"},"password":{"type":"string"},"enabled":{"type":"boolean"},"groups":{},"profilePic":{"format":"url","type":"string"}},"type":"object","required":["id","firstname","lastname","email"]},"ResponseUserPermissions":{"properties":{"directlyGranted":{"items":{},"type":"array"},"inherited":{"items":{},"type":"array"}},"type":"object"},"PermissionNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PermissionIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PermissionNeedsPrincipalError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PrincipalNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PrincipalWrongTypeError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"CreatePermission":{"properties":{"principal":{"minLength":1,"type":"integer"},"target":{"enum":["RUNNER","ORGANIZATION","TEAM","TRACK","USER","USERGROUP","PERMISSION","STATSCLIENT","DONOR","SCAN","STATION","CARD","DONATION","CONTACT","MAIL"],"type":"string","minLength":1},"action":{"enum":["GET","CREATE","UPDATE","DELETE","IMPORT"],"type":"string","minLength":1}},"type":"object","required":["principal","target","action"]},"UpdatePermission":{"properties":{"id":{"type":"integer"},"principal":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"target":{"minLength":1,"type":"string"},"action":{"minLength":1,"type":"string"}},"type":"object","required":["id","principal","target","action"]},"CreateRunnerGroup":{"properties":{"name":{"type":"string","minLength":1},"contact":{"type":"integer"}},"type":"object","required":["name"]},"CreateRunnerOrganization":{"properties":{"address":{"type":"object"},"registrationEnabled":{"type":"boolean"},"name":{"type":"string","minLength":1},"contact":{"type":"integer"}},"type":"object","required":["name"]},"UpdateRunnerOrganization":{"properties":{"id":{"type":"integer"},"address":{"type":"object"},"registrationEnabled":{"type":"boolean"},"name":{"type":"string","minLength":1},"contact":{"type":"integer"}},"type":"object","required":["id","name"]},"CreateRunnerTeam":{"properties":{"parentGroup":{"minLength":1,"type":"integer"},"name":{"type":"string","minLength":1},"contact":{"type":"integer"}},"type":"object","required":["parentGroup","name"]},"UpdateRunnerTeam":{"properties":{"id":{"type":"integer"},"parentGroup":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"name":{"type":"string","minLength":1},"contact":{"type":"integer"}},"type":"object","required":["id","parentGroup","name"]},"CreateSelfServiceCitizenRunner":{"properties":{"email":{"format":"email","type":"string","minLength":1},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"address":{"type":"object"}},"type":"object","required":["firstname","lastname"]},"CreateSelfServiceRunner":{"properties":{"team":{"type":"integer"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["firstname","lastname"]},"ResponseSelfServiceTeam":{"properties":{"name":{"type":"string","minLength":1},"id":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["name","id"]},"ResponseSelfServiceOrganisation":{"properties":{"name":{"type":"string","minLength":1},"teams":{"items":{},"type":"array"}},"type":"object","required":["name","teams"]},"ResponseSelfServiceDonor":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"}},"type":"object","required":["id","firstname","middlename","lastname"]},"ResponseSelfServiceDonation":{"properties":{"donor":{"minLength":1,"type":"string"},"amount":{"type":"integer"},"amountPerDistance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["donor","amount","amountPerDistance"]},"ResponseSelfServiceRunner":{"properties":{"distance":{"type":"integer"},"donationAmount":{"type":"integer"},"group":{"type":"string"},"distanceDonations":{"type":"string"},"token":{"type":"string"},"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"type":"object"}},"type":"object","required":["distance","donationAmount","group","distanceDonations","id","firstname","middlename","lastname","phone","email"]},"ResponseSelfServiceScan":{"properties":{"id":{"type":"integer"},"valid":{"type":"boolean"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"lapTime":{"minLength":1,"type":"integer"}},"type":"object","required":["id","valid","distance","lapTime"]},"CreateScanStation":{"properties":{"description":{"type":"string"},"track":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"enabled":{"type":"boolean"}},"type":"object","required":["track"]},"UpdateScanStation":{"properties":{"id":{"type":"integer"},"description":{"type":"string"},"enabled":{"type":"boolean"}},"type":"object","required":["id"]},"StatsClientNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"StatsClientIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResponseStatsClient":{"properties":{"id":{"type":"integer"},"description":{"type":"string"},"key":{"type":"string"},"prefix":{"minLength":1,"type":"string"}},"type":"object","required":["id","prefix"]},"StatsClient":{"properties":{"id":{"type":"integer"},"description":{"type":"string"},"prefix":{"type":"string"},"key":{"type":"string"},"cleartextkey":{"type":"string"}},"type":"object","required":["id","prefix","key"]},"CreateStatsClient":{"properties":{"description":{"type":"string"}},"type":"object"},"ResponseStats":{"properties":{"total_runners":{"type":"integer"},"total_teams":{"type":"integer"},"total_orgs":{"type":"integer"},"total_users":{"type":"integer"},"total_scans":{"type":"integer"},"total_distance":{"type":"integer"},"total_donation":{"type":"integer"},"average_distance":{"type":"integer"}},"type":"object","required":["total_runners","total_teams","total_orgs","total_users","total_scans","total_distance","total_donation","average_distance"]},"ResponseStatsOrgnisation":{"properties":{"id":{"type":"integer"},"name":{"type":"string"},"distance":{"type":"integer"},"donationAmount":{"type":"integer"}},"type":"object","required":["id","name","distance","donationAmount"]},"ResponseStatsRunner":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"distance":{"type":"integer"},"donationAmount":{"type":"integer"},"minLaptime":{"type":"integer"},"group":{"type":"object"}},"type":"object","required":["id","firstname","middlename","lastname","distance","donationAmount","group"]},"ResponseStatsTeam":{"properties":{"id":{"type":"integer"},"name":{"type":"string"},"distance":{"type":"integer"},"donationAmount":{"type":"integer"},"parent":{"type":"object"}},"type":"object","required":["id","name","distance","donationAmount","parent"]},"CreateTrack":{"properties":{"name":{"minLength":1,"type":"string"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"minimumLapTime":{"type":"integer"}},"type":"object","required":["name","distance"]},"UpdateTrack":{"properties":{"id":{"type":"integer"},"name":{"minLength":1,"type":"string"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"minimumLapTime":{"type":"integer"}},"type":"object","required":["id","name","distance"]},"CreateUser":{"properties":{"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"username":{"type":"string"},"email":{"minLength":1,"type":"string","format":"email"},"phone":{"type":"string"},"password":{"type":"string"},"enabled":{"type":"boolean"},"groups":{},"profilePic":{"format":"url","type":"string"}},"type":"object","required":["firstname","lastname","email","password"]},"CreateUserGroup":{"properties":{"name":{"type":"string"},"description":{"type":"string"}},"type":"object","required":["name"]},"UpdateUserGroup":{"properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"}},"type":"object","required":["id","name"]},"ResponseUserGroupPermissions":{"properties":{"directlyGranted":{"items":{},"type":"array"},"inherited":{"items":{},"type":"array"}},"type":"object"}},"securitySchemes":{"AuthToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"A JWT based access token. Use /api/auth/login or /api/auth/refresh to get one."},"RefreshTokenCookie":{"type":"apiKey","in":"cookie","name":"lfk_backend__refresh_token","description":"A cookie containing a JWT based refreh token. Attention: Doesn't work in swagger-ui. Use /api/auth/login or /api/auth/refresh to get one."},"StatsApiToken":{"type":"http","scheme":"bearer","description":"Api token that can be obtained by creating a new stats client (post to /api/statsclients). Only valid for obtaining stats."},"StationApiToken":{"type":"http","scheme":"bearer","description":"Api token that can be obtained by creating a new scan station (post to /api/stations). Only valid for creating scans."}}},"info":{"title":"LfK! Backend API","version":"0.13.0","description":"The the backend API for the LfK! runner system.
[Imprint](/imprint) & [Privacy](/privacy)"},"openapi":"3.0.0","paths":{"/api/auth/login":{"post":{"operationId":"AuthController.login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAuth"}}},"description":"CreateAuth","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseAuth"},{"$ref":"#/components/schemas/InvalidCredentialsError"},{"$ref":"#/components/schemas/UserNotFoundError"},{"$ref":"#/components/schemas/UsernameOrEmailNeededError"},{"$ref":"#/components/schemas/PasswordNeededError"},{"$ref":"#/components/schemas/InvalidCredentialsError"}]}}},"description":""}},"summary":"Login","tags":["Auth"],"description":"Login with your username/email and password.
You will receive: \n * access token (use it as a bearer token) \n * refresh token (will also be sent as a cookie)"}},"/api/auth/logout":{"post":{"operationId":"AuthController.logout","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HandleLogout"}}},"description":"HandleLogout","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Logout"},{"$ref":"#/components/schemas/InvalidCredentialsError"},{"$ref":"#/components/schemas/UserNotFoundError"},{"$ref":"#/components/schemas/UsernameOrEmailNeededError"},{"$ref":"#/components/schemas/PasswordNeededError"},{"$ref":"#/components/schemas/InvalidCredentialsError"}]}}},"description":""}},"summary":"Logout","tags":["Auth"],"description":"Logout using your refresh token.
This instantly invalidates all your access and refresh tokens.","security":[{"RefreshTokenCookie":[]}]}},"/api/auth/refresh":{"post":{"operationId":"AuthController.refresh","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshAuth"}}},"description":"RefreshAuth","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseAuth"},{"$ref":"#/components/schemas/JwtNotProvidedError"},{"$ref":"#/components/schemas/IllegalJWTError"},{"$ref":"#/components/schemas/UserNotFoundError"},{"$ref":"#/components/schemas/RefreshTokenCountInvalidError"}]}}},"description":""}},"summary":"Refresh","tags":["Auth"],"description":"Refresh your access and refresh tokens using a valid refresh token.
You will receive: \n * access token (use it as a bearer token) \n * refresh token (will also be sent as a cookie)","security":[{"RefreshTokenCookie":[]}]}},"/api/auth/reset":{"post":{"operationId":"AuthController.getResetToken","parameters":[{"in":"query","name":"locale","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResetToken"}}},"description":"CreateResetToken","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsernameOrEmailNeededError"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MailSendingError"}}},"description":""}},"summary":"Get reset token","tags":["Auth"],"description":"Request a password reset token.
This will provide you with a reset token that you can use by posting to /api/auth/reset/{token}."}},"/api/auth/reset/{token}":{"post":{"operationId":"AuthController.resetPassword","parameters":[{"in":"path","name":"token","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPassword"}}},"description":"ResetPassword","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseAuth"},{"$ref":"#/components/schemas/UserNotFoundError"},{"$ref":"#/components/schemas/UsernameOrEmailNeededError"}]}}},"description":""}},"summary":"Reset password","tags":["Auth"],"description":"Reset a user's utilising a valid password reset token.
This will set the user's password to the one you provided in the body.
To get a reset token post to /api/auth/reset with your username."}},"/api/donations":{"get":{"operationId":"DonationController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"$ref":"#/components/schemas/ResponseDonation"},"type":"array"},{"items":{"$ref":"#/components/schemas/ResponseDistanceDonation"},"type":"array"}]}}},"description":""}},"summary":"Get all","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all donations (fixed or distance based) from all donors.
This includes the donations's runner's distance ran(if distance donation)."}},"/api/donations/{id}":{"get":{"operationId":"DonationController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseDonation"},{"$ref":"#/components/schemas/ResponseDistanceDonation"}]}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the donation whose id got provided. This includes the donation's runner's distance ran (if distance donation)."},"delete":{"operationId":"DonationController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseDonation"},{"$ref":"#/components/schemas/ResponseDistanceDonation"}]}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the donation whose id you provided.
If no donation with this id exists it will just return 204(no content)."}},"/api/donations/fixed":{"post":{"operationId":"DonationController.postFixed","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFixedDonation"}}},"description":"CreateFixedDonation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorNotFoundError"}}},"description":""}},"summary":"Post fixed","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a fixed donation (not distance donation - use /donations/distance instead).
Please rmemember to provide the donation's donors's id and amount."}},"/api/donations/distance":{"post":{"operationId":"DonationController.postDistance","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDistanceDonation"}}},"description":"CreateDistanceDonation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDistanceDonation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DonorNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"}]}}},"description":""}},"summary":"Post distance","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a distance donation (not fixed donation - use /donations/fixed instead).
Please rmemember to provide the donation's donors's and runners ids and amount per distance (kilometer)."}},"/api/donations/fixed/{id}":{"put":{"operationId":"DonationController.putFixed","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFixedDonation"}}},"description":"UpdateFixedDonation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DonationNotFoundError"},{"$ref":"#/components/schemas/DonorNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationIdsNotMatchingError"}}},"description":""}},"summary":"Put fixed","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the fixed donation (not distance donation - use /donations/distance instead) whose id you provided.
Please remember that ids can't be changed and amounts must be positive."}},"/api/donations/distance/{id}":{"put":{"operationId":"DonationController.putDistance","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDistanceDonation"}}},"description":"UpdateDistanceDonation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DonationNotFoundError"},{"$ref":"#/components/schemas/DonorNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationIdsNotMatchingError"}}},"description":""}},"summary":"Put distance","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the distance donation (not fixed donation - use /donations/fixed instead) whose id you provided.
Please remember that ids can't be changed and amountPerDistance must be positive."}},"/api/donors":{"get":{"operationId":"DonorController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseDonor"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Donor"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all donor.
This includes the donor's current donation amount."},"post":{"operationId":"DonorController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonor"}}},"description":"CreateDonor","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonor"}}},"description":""}},"summary":"Post","tags":["Donor"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new donor."}},"/api/donors/{id}":{"get":{"operationId":"DonorController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonor"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Donor"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the donor whose id got provided.
This includes the donor's current donation amount."},"put":{"operationId":"DonorController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDonor"}}},"description":"UpdateDonor","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonor"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Donor"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the donor whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"DonorController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonor"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Donor"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the donor whose id you provided.
If no donor with this id exists it will just return 204(no content).
If the donor still has donations associated this will fail, please provide the query param ?force=true to delete the donor with all associated donations."}},"/api/contacts":{"get":{"operationId":"GroupContactController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseGroupContact"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Group Contact"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all contacts.
This includes the contact's associated groups."},"post":{"operationId":"GroupContactController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGroupContact"}}},"description":"CreateGroupContact","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseGroupContact"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""}},"summary":"Post","tags":["Group Contact"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new contact."}},"/api/contacts/{id}":{"get":{"operationId":"GroupContactController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseGroupContact"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupContactNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Group Contact"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the contact whose id got provided.
This includes the contact's associated groups."},"put":{"operationId":"GroupContactController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGroupContact"}}},"description":"UpdateGroupContact","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseGroupContact"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GroupContactNotFoundError"},{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupContactIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Group Contact"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the contact whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"GroupContactController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseGroupContact"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Group Contact"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the contact whose id you provided.
If no contact with this id exists it will just return 204(no content).
This won't delete any groups associated with the contact."}},"/api/scans":{"get":{"operationId":"ScanController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"$ref":"#/components/schemas/ResponseScan"},"type":"array"},{"items":{"$ref":"#/components/schemas/ResponseTrackScan"},"type":"array"}]}}},"description":""}},"summary":"Get all","tags":["Scan"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all scans (normal or track) from all runners.
This includes the scan's runner's distance ran."},"post":{"operationId":"ScanController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScan"}}},"description":"CreateScan","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScan"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Post","tags":["Scan"],"security":[{"AuthToken":[],"StationApiToken":[]},{"RefreshTokenCookie":[],"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new scan (not track scan - use /scans/trackscans instead).
Please rmemember to provide the scan's runner's id and distance."}},"/api/scans/{id}":{"get":{"operationId":"ScanController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseScan"},{"$ref":"#/components/schemas/ResponseTrackScan"}]}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Scan"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the scan whose id got provided. This includes the scan's runner's distance ran."},"put":{"operationId":"ScanController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateScan"}}},"description":"UpdateScan","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScan"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ScanNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Scan"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the scan (not track scan use /scans/trackscans/:id instead) whose id you provided.
Please remember that ids can't be changed and distances must be positive."},"delete":{"operationId":"ScanController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScan"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Scan"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the scan whose id you provided.
If no scan with this id exists it will just return 204(no content)."}},"/api/scans/trackscans":{"post":{"operationId":"ScanController.postTrackScans","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTrackScan"}}},"description":"CreateTrackScan","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrackScan"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Post track scans","tags":["Scan"],"security":[{"AuthToken":[],"StationApiToken":[]},{"RefreshTokenCookie":[],"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new track scan (for \"normal\" scans use /scans instead).
Please remember that to provide the scan's card's station's id."}},"/api/scans/trackscans/{id}":{"put":{"operationId":"ScanController.putTrackScan","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTrackScan"}}},"description":"UpdateTrackScan","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrackScan"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ScanNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"},{"$ref":"#/components/schemas/ScanStationNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanIdsNotMatchingError"}}},"description":""}},"summary":"Put track scan","tags":["Scan"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the track scan (not \"normal\" scan use /scans/trackscans/:id instead) whose id you provided.
Please remember that only the validity, runner and track can be changed."}},"/api/cards":{"get":{"operationId":"RunnerCardController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunnerCard"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all card."},"post":{"operationId":"RunnerCardController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunnerCard"}}},"description":"CreateRunnerCard","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerCard"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Post","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new card.
You can provide a associated runner by id but you don't have to."}},"/api/cards/{id}":{"get":{"operationId":"RunnerCardController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerCard"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerCardNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the card whose id got provided."},"put":{"operationId":"RunnerCardController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRunnerCard"}}},"description":"UpdateRunnerCard","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerCard"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RunnerCardNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerCardIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the card whose id you provided.
Scans created via this card will still be associated with the old runner.
Please remember that ids can't be changed."},"delete":{"operationId":"RunnerCardController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerCard"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerCardHasScansError"}}},"description":""}},"summary":"Remove","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the card whose id you provided.
If no card with this id exists it will just return 204(no content).
If the card still has scans associated you have to provide the force=true query param (warning: this deletes all scans associated with by this card - please disable it instead or just remove the runner association)."}},"/api/cards/bulk":{"post":{"operationId":"RunnerCardController.postBlancoBulk","parameters":[{"in":"query","name":"count","required":false,"schema":{"type":"number"}},{"in":"query","name":"returnCards","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Post blanco bulk","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create blank cards in bulk.
Just provide the count as a query param and wait for the 200 response.
You can provide the 'returnCards' query param if you want to receive the RESPONSERUNNERCARD objects in the response."}},"/api/runners":{"get":{"operationId":"RunnerController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all runners from all teams/orgs.
This includes the runner's group and distance ran."},"post":{"operationId":"RunnerController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunner"}}},"description":"CreateRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseRunner"},{"$ref":"#/components/schemas/RunnerGroupNeededError"},{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}]}}},"description":""}},"summary":"Post","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new runner.
Please remeber to provide the runner's group's id."}},"/api/runners/{id}":{"get":{"operationId":"RunnerController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunner"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the runner whose id got provided."},"put":{"operationId":"RunnerController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRunner"}}},"description":"UpdateRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunner"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the runner whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"RunnerController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunner"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerHasDistanceDonationsError"}}},"description":""}},"summary":"Remove","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the runner whose id you provided.
This will also delete all scans and cards associated with the runner.
If no runner with this id exists it will just return 204(no content)."}},"/api/runners/{id}/scans":{"get":{"operationId":"RunnerController.getScans","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"$ref":"#/components/schemas/ResponseScan"},"type":"array"},{"items":{"$ref":"#/components/schemas/ResponseTrackScan"},"type":"array"}]}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Get scans","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all scans of the runner whose id got provided.
If you only want the valid scans just add the ?onlyValid=true query param."}},"/api/runners/import":{"post":{"operationId":"ImportController.postJSON","parameters":[{"in":"query","name":"group","required":false,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ImportRunner"},"type":"array"}}},"description":"ImportRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post json","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from json and insert them into the provided group.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead."}},"/api/organizations/{id}/import":{"post":{"operationId":"ImportController.postOrgsJSON","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ImportRunner"},"type":"array"}}},"description":"ImportRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post orgs json","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from json and insert them into the provided org.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead."}},"/api/teams/{id}/import":{"post":{"operationId":"ImportController.postTeamsJSON","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ImportRunner"},"type":"array"}}},"description":"ImportRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post teams json","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from json and insert them into the provided team"}},"/api/runners/import/csv":{"post":{"operationId":"ImportController.postCSV","parameters":[{"in":"query","name":"group","required":false,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post csv","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from csv and insert them into the provided group.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead."}},"/api/organizations/{id}/import/csv":{"post":{"operationId":"ImportController.postOrgsCSV","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post orgs csv","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from csv and insert them into the provided org.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead."}},"/api/teams/{id}/import/csv":{"post":{"operationId":"ImportController.postTeamsCSV","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post teams csv","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from csv and insert them into the provided team"}},"/api/permissions":{"get":{"operationId":"PermissionController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponsePermission"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Permission"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all permissions for all users and groups."},"post":{"operationId":"PermissionController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePermission"}}},"description":"CreatePermission","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsePermission"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrincipalNotFoundError"}}},"description":""}},"summary":"Post","tags":["Permission"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new permission for a existing principal(user/group).
If a permission with this target, action and prinicpal already exists that permission will be returned instead of creating a new one."}},"/api/permissions/{id}":{"get":{"operationId":"PermissionController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsePermission"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Permission"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the permission whose id got provided."},"put":{"operationId":"PermissionController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePermission"}}},"description":"UpdatePermission","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsePrincipal"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PermissionNotFoundError"},{"$ref":"#/components/schemas/PrincipalNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PermissionIdsNotMatchingError"},{"$ref":"#/components/schemas/PermissionNeedsPrincipalError"}]}}},"description":""}},"summary":"Put","tags":["Permission"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update a permission object.
If updateing the permission object would result in duplicate permission (same target, action and principal) this permission will get deleted and the existing permission will be returned.
Please remember that ids can't be changed."},"delete":{"operationId":"PermissionController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsePermission"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Permission"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Deletes the permission whose id you provide.
If no permission with this id exists it will just return 204(no content)."}},"/api/users/me/":{"get":{"operationId":"MeController.get","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""}},"summary":"Get","tags":["Me"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about yourself."},"put":{"operationId":"MeController.put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUser"}}},"description":"UpdateUser","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UserIdsNotMatchingError"},{"$ref":"#/components/schemas/UsernameContainsIllegalCharacterError"},{"$ref":"#/components/schemas/PasswordMustContainUppercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainLowercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainNumberError"},{"$ref":"#/components/schemas/PasswordTooShortError"}]}}},"description":""}},"summary":"Put","tags":["Me"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the yourself.
You can't edit your own permissions or group memberships here - Please use the /api/users/:id enpoint instead.
Please remember that ids can't be changed."},"delete":{"operationId":"MeController.remove","parameters":[{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDeletionNotConfirmedError"}}},"description":""}},"summary":"Remove","tags":["Me"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete yourself.
You have to confirm your decision by providing the ?force=true query param.
If there are any permissions directly granted to you they will get deleted as well."}},"/api/users/me/permissions":{"get":{"operationId":"MeController.getPermissions","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUserPermissions"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""}},"summary":"Get permissions","tags":["Me"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all permissions granted to the you sorted into directly granted and inherited as permission response objects."}},"/api/teams":{"get":{"operationId":"RunnerTeamController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunnerTeam"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all teams.
This includes their parent organization and contact (if existing/associated)."},"post":{"operationId":"RunnerTeamController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunnerTeam"}}},"description":"CreateRunnerTeam","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerTeam"}}},"description":""}},"summary":"Post","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new organsisation.
Please remember to provide it's parent group's id."}},"/api/teams/{id}":{"get":{"operationId":"RunnerTeamController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerTeam"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerTeamNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the team whose id got provided."},"put":{"operationId":"RunnerTeamController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRunnerTeam"}}},"description":"UpdateRunnerTeam","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerTeam"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerTeamNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerTeamIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the team whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"RunnerTeamController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerTeam"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerTeamHasRunnersError"}}},"description":""}},"summary":"Remove","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the team whose id you provided.
If the team still has runners associated this will fail.
To delete the team with all associated runners set the force QueryParam to true (cascading deletion might take a while).
This won't delete the associated contact.
If no team with this id exists it will just return 204(no content)."}},"/api/teams/{id}/runners":{"get":{"operationId":"RunnerTeamController.getRunners","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerTeamNotFoundError"}}},"description":""}},"summary":"Get runners","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all runners from this team.
This includes the runner's group and distance ran."}},"/api/organizations":{"get":{"operationId":"RunnerOrganizationController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunnerOrganization"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all organizations.
This includes their address, contact and teams (if existing/associated)."},"post":{"operationId":"RunnerOrganizationController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunnerOrganization"}}},"description":"CreateRunnerOrganization","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerOrganization"}}},"description":""}},"summary":"Post","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new organsisation."}},"/api/organizations/{id}":{"get":{"operationId":"RunnerOrganizationController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerOrganization"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the organization whose id got provided."},"put":{"operationId":"RunnerOrganizationController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRunnerOrganization"}}},"description":"UpdateRunnerOrganization","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerOrganization"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the organization whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"RunnerOrganizationController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerOrganization"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RunnerOrganizationHasTeamsError"},{"$ref":"#/components/schemas/RunnerOrganizationHasRunnersError"}]}}},"description":""}},"summary":"Remove","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the organsisation whose id you provided.
If the organization still has runners and/or teams associated this will fail.
To delete the organization with all associated runners and teams set the force QueryParam to true (cascading deletion might take a while).
This won't delete the associated contact.
If no organization with this id exists it will just return 204(no content)."}},"/api/organizations/{id}/runners":{"get":{"operationId":"RunnerOrganizationController.getRunners","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"onlyDirect","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationNotFoundError"}}},"description":""}},"summary":"Get runners","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all runners from this org and it's teams (if you don't provide the ?onlyDirect=true param).
This includes the runner's group and distance ran."}},"/api/runners/me/{jwt}":{"get":{"operationId":"RunnerSelfServiceController.get","parameters":[{"in":"path","name":"jwt","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseSelfServiceRunner"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Get","tags":["Runner Self Service"],"description":"Lists all information about yourself.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please use the forgot endpoint."},"delete":{"operationId":"RunnerSelfServiceController.remove","parameters":[{"in":"path","name":"jwt","required":true,"schema":{"type":"string"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseSelfServiceRunner"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Remove","tags":["Runner Self Service"],"description":"Deletes all information about yourself.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please use the forgot endpoint."}},"/api/runners/me/{jwt}/scans":{"get":{"operationId":"RunnerSelfServiceController.getScans","parameters":[{"in":"path","name":"jwt","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseSelfServiceScan"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Get scans","tags":["Runner Self Service"],"description":"Lists all your (runner) scans.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please contact support."}},"/api/stations/me":{"get":{"operationId":"RunnerSelfServiceController.getStationMe","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScanStation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanStationNotFoundError"}}},"description":""}},"summary":"Get station me","tags":["Runner Self Service"],"description":"Lists basic information about the station whose token got provided.
This includes it's associated track.","security":[{"StationApiToken":[]}]}},"/api/runners/login":{"post":{"operationId":"RunnerSelfServiceController.requestNewToken","parameters":[{"in":"query","name":"mail","required":false,"schema":{"type":"string"}},{"in":"query","name":"locale","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{}},"description":"Successful response"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Request new token","tags":["Runner Self Service"],"description":"Use this endpoint to reuqest a new selfservice token/link to be sent to your mail address (rate limited to one mail every 24hrs)."}},"/api/runners/register":{"post":{"operationId":"RunnerSelfServiceController.registerRunner","parameters":[{"in":"query","name":"locale","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSelfServiceCitizenRunner"}}},"description":"CreateSelfServiceCitizenRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseSelfServiceRunner"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerEmailNeededError"}}},"description":""}},"summary":"Register runner","tags":["Runner Self Service"],"description":"Create a new selfservice runner in the citizen org.
This endpoint shoud be used to allow \"everyday citizen\" to register themselves.
You have to provide a mail address, b/c the future we'll implement email verification."}},"/api/runners/register/{token}":{"post":{"operationId":"RunnerSelfServiceController.registerOrganizationRunner","parameters":[{"in":"path","name":"token","required":true,"schema":{"type":"string"}},{"in":"query","name":"locale","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSelfServiceRunner"}}},"description":"CreateSelfServiceRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseSelfServiceRunner"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationNotFoundError"}}},"description":""}},"summary":"Register organization runner","tags":["Runner Self Service"],"description":"Create a new selfservice runner in a provided org.
The orgs get provided and authorized via api tokens that can be optained via the /organizations endpoint."}},"/api/organizations/selfservice/{token}":{"get":{"operationId":"RunnerSelfServiceController.getSelfserviceOrg","parameters":[{"in":"path","name":"token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseSelfServiceOrganisation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationNotFoundError"}}},"description":""}},"summary":"Get selfservice org","tags":["Runner Self Service"],"description":"Get the basic info and teams for a org."}},"/api/stations":{"get":{"operationId":"ScanStationController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseScanStation"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Scan Station"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all stations.
This includes their associated tracks."},"post":{"operationId":"ScanStationController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScanStation"}}},"description":"CreateScanStation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScanStation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackNotFoundError"}}},"description":""}},"summary":"Post","tags":["Scan Station"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new station.
Please remeber to provide the station's track's id.
Please also remember that the station key is only visibe on creation."}},"/api/stations/{id}":{"get":{"operationId":"ScanStationController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScanStation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanStationNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Scan Station"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the station whose id got provided.
This includes it's associated track."},"put":{"operationId":"ScanStationController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateScanStation"}}},"description":"UpdateScanStation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScanStation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanStationNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanStationIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Scan Station"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the station whose id you provided.
Please remember that only the description and enabled state can be changed."},"delete":{"operationId":"ScanStationController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScanStation"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanStationHasScansError"}}},"description":""}},"summary":"Remove","tags":["Scan Station"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the station whose id you provided.
If no station with this id exists it will just return 204(no content).
If the station still has scans associated you have to provide the force=true query param (warning: this deletes all scans associated with/created by this station - please disable it instead)."}},"/api/statsclients":{"get":{"operationId":"StatsClientController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsClient"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Stats Client"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all stats clients. Please remember that the key can only be viewed on creation."},"post":{"operationId":"StatsClientController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStatsClient"}}},"description":"CreateStatsClient","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseStatsClient"}}},"description":""}},"summary":"Post","tags":["Stats Client"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new stats client.
Please remember that the client's key will be generated automaticly and that it can only be viewed on creation."}},"/api/statsclients/{id}":{"get":{"operationId":"StatsClientController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseStatsClient"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsClientNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Stats Client"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the stats client whose id got provided. Please remember that the key can only be viewed on creation."},"delete":{"operationId":"StatsClientController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseStatsClient"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Stats Client"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the stats client whose id you provided.
If no client with this id exists it will just return 204(no content)."}},"/api/stats":{"get":{"operationId":"StatsController.get","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseStats"}}},"description":""}},"summary":"Get","tags":["Stats"],"description":"A very basic stats endpoint providing basic counters for a dashboard or simmilar"}},"/api/stats/runners/distance":{"get":{"operationId":"StatsController.getTopRunnersByDistance","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsRunner"},"type":"array"}}},"description":""}},"summary":"Get top runners by distance","tags":["Stats"],"description":"Returns the top ten runners by distance.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/runners/donations":{"get":{"operationId":"StatsController.getTopRunnersByDonations","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsRunner"},"type":"array"}}},"description":""}},"summary":"Get top runners by donations","tags":["Stats"],"description":"Returns the top ten runners by donations.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/runners/laptime":{"get":{"operationId":"StatsController.getTopRunnersByLaptime","parameters":[{"in":"query","name":"track","required":false,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsRunner"},"type":"array"}}},"description":""}},"summary":"Get top runners by laptime","tags":["Stats"],"description":"Returns the top ten runners by fastest laptime on your selected track (track by id).","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/scans":{"get":{"operationId":"StatsController.getTopRunnersByTrackTime","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsRunner"},"type":"array"}}},"description":""}},"summary":"Get top runners by track time","tags":["Stats"],"description":"Returns the top ten fastest track times (with their runner and the runner's group).","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/teams/distance":{"get":{"operationId":"StatsController.getTopTeamsByDistance","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsTeam"},"type":"array"}}},"description":""}},"summary":"Get top teams by distance","tags":["Stats"],"description":"Returns the top ten teams by distance.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/teams/donations":{"get":{"operationId":"StatsController.getTopTeamsByDonations","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsTeam"},"type":"array"}}},"description":""}},"summary":"Get top teams by donations","tags":["Stats"],"description":"Returns the top ten teams by donations.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/organizations/distance":{"get":{"operationId":"StatsController.getTopOrgsByDistance","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsOrgnisation"},"type":"array"}}},"description":""}},"summary":"Get top orgs by distance","tags":["Stats"],"description":"Returns the top ten organizations by distance.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/organizations/donations":{"get":{"operationId":"StatsController.getTopOrgsByDonations","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsOrgnisation"},"type":"array"}}},"description":""}},"summary":"Get top orgs by donations","tags":["Stats"],"description":"Returns the top ten organizations by donations.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/status":{"get":{"operationId":"StatusController.get","responses":{"200":{"content":{"application/json":{}},"description":"Successful response"}},"summary":"Get","tags":["Status"],"description":"A very basic status/health endpoint that just checks if the database connection is available.
The available information depth will be expanded later."}},"/api/version":{"get":{"operationId":"StatusController.getVersion","responses":{"200":{"content":{"application/json":{}},"description":"Successful response"}},"summary":"Get version","tags":["Status"],"description":"A very basic endpoint that just returns the curent package version."}},"/api/tracks":{"get":{"operationId":"TrackController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseTrack"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Track"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all tracks."},"post":{"operationId":"TrackController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTrack"}}},"description":"CreateTrack","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrack"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackLapTimeCantBeNegativeError"}}},"description":""}},"summary":"Post","tags":["Track"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new track.
Please remember that the track's distance must be greater than 0."}},"/api/tracks/{id}":{"get":{"operationId":"TrackController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrack"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Track"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the track whose id got provided."},"put":{"operationId":"TrackController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTrack"}}},"description":"UpdateTrack","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrack"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TrackIdsNotMatchingError"},{"$ref":"#/components/schemas/TrackLapTimeCantBeNegativeError"}]}}},"description":""}},"summary":"Put","tags":["Track"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the track whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"TrackController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrack"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Track"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the track whose id you provided.
If no track with this id exists it will just return 204(no content)."}},"/api/users":{"get":{"operationId":"UserController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseUser"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all users.
This includes their groups and permissions granted to them."},"post":{"operationId":"UserController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUser"}}},"description":"CreateUser","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UsernameContainsIllegalCharacterError"},{"$ref":"#/components/schemas/PasswordMustContainUppercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainLowercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainNumberError"},{"$ref":"#/components/schemas/PasswordTooShortError"}]}}},"description":""}},"summary":"Post","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new user.
If you want to grant permissions to the user you have to create them seperately by posting to /api/permissions after creating the user."}},"/api/users/{id}":{"get":{"operationId":"UserController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""}},"summary":"Get one","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the user whose id got provided.
Please remember that all permissions granted to the user will show up here."},"put":{"operationId":"UserController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUser"}}},"description":"UpdateUser","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UserIdsNotMatchingError"},{"$ref":"#/components/schemas/UsernameContainsIllegalCharacterError"},{"$ref":"#/components/schemas/PasswordMustContainUppercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainLowercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainNumberError"},{"$ref":"#/components/schemas/PasswordTooShortError"}]}}},"description":""}},"summary":"Put","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the user whose id you provided.
To change the permissions directly granted to the user please use /api/permissions instead.
Please remember that ids can't be changed."},"delete":{"operationId":"UserController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDeletionNotConfirmedError"}}},"description":""}},"summary":"Remove","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the user whose id you provided.
You have to confirm your decision by providing the ?force=true query param.
If there are any permissions directly granted to the user they will get deleted as well.
If no user with this id exists it will just return 204(no content)."}},"/api/users/{id}/permissions":{"get":{"operationId":"UserController.getPermissions","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""}},"summary":"Get permissions","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all permissions granted to the user sorted into directly granted and inherited as permission response objects."}},"/api/usergroups":{"get":{"operationId":"UserGroupController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseUserGroup"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all groups.
The information provided might change while the project continues to evolve."},"post":{"operationId":"UserGroupController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserGroup"}}},"description":"CreateUserGroup","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UserGroup"},{"$ref":"#/components/schemas/UserGroupNotFoundError"}]}}},"description":""}},"summary":"Post","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new group.
If you want to grant permissions to the group you have to create them seperately by posting to /api/permissions after creating the group."}},"/api/usergroups/{id}":{"get":{"operationId":"UserGroupController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUserGroup"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroupNotFoundError"}}},"description":""}},"summary":"Get one","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the group whose id got provided.
The information provided might change while the project continues to evolve."},"put":{"operationId":"UserGroupController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserGroup"}}},"description":"UpdateUserGroup","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroup"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroupIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the group whose id you provided.
To change the permissions granted to the group please use /api/permissions instead.
Please remember that ids can't be changed."},"delete":{"operationId":"UserGroupController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUserGroup"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the group whose id you provided.
If there are any permissions directly granted to the group they will get deleted as well.
Users associated with this group won't get deleted - just deassociated.
If no group with this id exists it will just return 204(no content)."}},"/api/usergroups/{id}/permissions":{"get":{"operationId":"UserGroupController.getPermissions","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUserGroupPermissions"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroupNotFoundError"}}},"description":""}},"summary":"Get permissions","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all permissions granted to the group as permission response objects."}}}} \ No newline at end of file +{"components":{"schemas":{"IllegalJWTError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserNonexistantOrRefreshtokenInvalidError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"InvalidCredentialsError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"NoPermissionError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UsernameOrEmailNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PasswordNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"JwtNotProvidedError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserNotFoundOrRefreshTokenCountInvalidError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RefreshTokenCountInvalidError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResetAlreadyRequestedError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserDisabledError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"JwtUser":{"properties":{"id":{"type":"integer"},"uuid":{"format":"uuid","type":"string"},"email":{"format":"email","type":"string"},"username":{"type":"string"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"enabled":{"type":"boolean"},"refreshTokenCount":{"minLength":1,"type":"integer"},"profilePic":{"type":"string"}},"type":"object","required":["id","uuid","firstname","lastname","enabled","refreshTokenCount"]},"ResponsePrincipal":{"properties":{"id":{"type":"integer"}},"type":"object","required":["id"]},"ResponseUser":{"properties":{"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"username":{"type":"string"},"enabled":{"type":"boolean"},"profilePic":{"type":"string"},"groups":{"items":{},"type":"array"},"permissions":{"items":{},"type":"array"},"id":{"type":"integer"}},"type":"object","required":["firstname","middlename","lastname","phone","email","username","enabled","profilePic","id"]},"ResponsePermission":{"properties":{"id":{"type":"integer"},"principal":{"minLength":1,"type":"object"},"target":{"enum":["RUNNER","ORGANIZATION","TEAM","TRACK","USER","USERGROUP","PERMISSION","STATSCLIENT","DONOR","SCAN","STATION","CARD","DONATION","CONTACT","MAIL"],"type":"string","minLength":1},"action":{"enum":["GET","CREATE","UPDATE","DELETE","IMPORT"],"type":"string","minLength":1}},"type":"object","required":["id","principal","target","action"]},"Permission":{"properties":{"id":{"type":"integer"},"target":{"enum":["RUNNER","ORGANIZATION","TEAM","TRACK","USER","USERGROUP","PERMISSION","STATSCLIENT","DONOR","SCAN","STATION","CARD","DONATION","CONTACT","MAIL"],"type":"string","minLength":1},"action":{"enum":["GET","CREATE","UPDATE","DELETE","IMPORT"],"type":"string"}},"type":"object","required":["id","target","action"]},"Principal":{"properties":{"id":{"type":"integer"}},"type":"object","required":["id"]},"UserAction":{"properties":{"id":{"type":"integer"},"target":{"type":"string","minLength":1},"action":{"enum":["GET","CREATE","UPDATE","DELETE","IMPORT"],"type":"string"},"changed":{"type":"string"}},"type":"object","required":["id","target","action"]},"ResponseUserGroup":{"properties":{"name":{"type":"string","minLength":1},"description":{"type":"string"},"permissions":{"items":{},"type":"array"},"id":{"type":"integer"}},"type":"object","required":["name","id"]},"UserGroup":{"properties":{"name":{"type":"string","minLength":1},"description":{"type":"string"},"id":{"type":"integer"}},"type":"object","required":["name","id"]},"User":{"properties":{"uuid":{"format":"uuid","type":"string"},"email":{"minLength":1,"type":"string","format":"email"},"phone":{"type":"string"},"username":{"type":"string"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"password":{"minLength":1,"type":"string"},"groups":{},"enabled":{"type":"boolean"},"refreshTokenCount":{"type":"integer"},"profilePic":{"format":"url","type":"string"},"resetRequestedTimestamp":{"type":"string"},"actions":{},"id":{"type":"integer"}},"type":"object","required":["uuid","email","username","firstname","lastname","password","enabled","refreshTokenCount","profilePic","id"]},"MailSendingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UsernameContainsIllegalCharacterError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserEmailNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserDeletionNotConfirmedError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PasswordMustContainUppercaseLetterError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PasswordMustContainLowercaseLetterError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PasswordMustContainNumberError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PasswordTooShortError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResponseAuth":{"properties":{"access_token":{"type":"string"},"refresh_token":{"type":"string"},"access_token_expires_at":{"type":"integer"},"refresh_token_expires_at":{"type":"integer"}},"type":"object","required":["access_token","refresh_token","access_token_expires_at","refresh_token_expires_at"]},"CreateAuth":{"properties":{"username":{"type":"string"},"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":1}},"type":"object","required":["password"]},"CreateResetToken":{"properties":{"email":{"type":"string","format":"email","minLength":1}},"type":"object","required":["email"]},"Logout":{"properties":{"timestamp":{"type":"string"}},"type":"object","required":["timestamp"]},"HandleLogout":{"properties":{"token":{"type":"string"}},"type":"object"},"RefreshAuth":{"properties":{"token":{"type":"string"}},"type":"object"},"ResetPassword":{"properties":{"resetToken":{"type":"string"},"password":{"type":"string","minLength":1}},"type":"object","required":["password"]},"ResponseEmpty":{"properties":{"response":{"type":"string"}},"type":"object","required":["response"]},"DonationNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"DonationIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"DonorNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"DonorIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"DonorReceiptAddressNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"DonorHasDonationsError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerGroupNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerEmailNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerSelfserviceTimeoutError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerHasDistanceDonationsError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"AddressPostalCodeInvalidError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"AddressFirstLineEmptyError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"AddressPostalCodeEmptyError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"AddressCityEmptyError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"AddressCountryEmptyError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"Address":{"properties":{"address1":{"type":"string"},"address2":{"type":"string"},"postalcode":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"}},"type":"object","required":["address1","address2","postalcode","city","country"]},"ResponseParticipant":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"type":"object"}},"type":"object","required":["id","firstname","middlename","lastname","phone","email"]},"ResponseDonor":{"properties":{"receiptNeeded":{"type":"boolean"},"donationAmount":{"type":"integer"},"paidDonationAmount":{"type":"integer"},"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"type":"object"}},"type":"object","required":["receiptNeeded","donationAmount","paidDonationAmount","id","firstname","middlename","lastname","phone","email"]},"ResponseDonation":{"properties":{"id":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"donor":{"minLength":1,"type":"string"},"amount":{"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["id","donor","amount","paidAmount"]},"ResponseGroupContact":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"groups":{"type":"object"},"address":{"type":"object"}},"type":"object","required":["id","firstname","middlename","lastname","phone","email","groups","address"]},"ResponseRunnerGroup":{"properties":{"id":{"minLength":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"contact":{"type":"object"}},"type":"object","required":["id","name"]},"ResponseRunner":{"properties":{"distance":{"type":"integer"},"group":{"type":"object"},"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"type":"object"}},"type":"object","required":["distance","group","id","firstname","middlename","lastname","phone","email"]},"ResponseDistanceDonation":{"properties":{"runner":{"type":"object"},"amountPerDistance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"id":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"donor":{"minLength":1,"type":"string"},"amount":{"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["runner","amountPerDistance","id","donor","amount","paidAmount"]},"Participant":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"phone":{"type":"string"},"email":{"format":"email","type":"string"}},"type":"object","required":["id","firstname","lastname"]},"Donor":{"properties":{"receiptNeeded":{"type":"boolean"},"donationAmount":{"type":"integer"},"paidDonationAmount":{"type":"integer"},"id":{"type":"integer"},"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"phone":{"type":"string"},"email":{"format":"email","type":"string"}},"type":"object","required":["receiptNeeded","donationAmount","paidDonationAmount","id","firstname","lastname"]},"Donation":{"properties":{"id":{"type":"integer"},"donor":{"minLength":1,"type":"string"},"paidAmount":{"type":"integer"}},"type":"object","required":["id","donor","paidAmount"]},"RunnerCardNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerCardIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerCardHasScansError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerCardIdOutOfRangeError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResponseRunnerCard":{"properties":{"id":{"type":"integer"},"runner":{"type":"object"},"code":{"minLength":1,"type":"string"},"enabled":{"type":"boolean"}},"type":"object","required":["id","runner","code","enabled"]},"ResponseScan":{"properties":{"id":{"type":"integer"},"runner":{"minLength":1,"type":"string"},"valid":{"type":"boolean"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["id","runner","valid","distance"]},"TrackNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"TrackIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"TrackLapTimeCantBeNegativeError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"TrackHasScanStationsError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResponseTrack":{"properties":{"id":{"type":"integer"},"name":{"type":"string"},"distance":{"type":"integer"},"minimumLapTime":{"type":"integer"}},"type":"object","required":["id","name","distance"]},"ResponseScanStation":{"properties":{"id":{"type":"integer"},"description":{"type":"string"},"key":{"type":"string"},"prefix":{"minLength":1,"type":"string"},"track":{"minLength":1,"type":"object"},"enabled":{"type":"boolean"}},"type":"object","required":["id","prefix","track","enabled"]},"ResponseTrackScan":{"properties":{"track":{"minLength":1,"type":"string"},"card":{"minLength":1,"type":"string"},"station":{"minLength":1,"type":"string"},"timestamp":{"minLength":1,"type":"string","pattern":"d{4}-[01]d-[0-3]dT[0-2]d:[0-5]d:[0-5]d.d+Z?"},"lapTime":{"type":"number"},"id":{"type":"integer"},"runner":{"minLength":1,"type":"string"},"valid":{"type":"boolean"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["track","card","station","timestamp","lapTime","id","runner","valid","distance"]},"Scan":{"properties":{"id":{"type":"integer"},"runner":{"minLength":1,"type":"string"},"valid":{"type":"boolean"},"_distance":{"type":"integer"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["id","runner","valid","_distance","distance"]},"Track":{"properties":{"id":{"type":"integer"},"name":{"minLength":1,"type":"string"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"minimumLapTime":{"type":"integer"}},"type":"object","required":["id","name","distance"]},"ScanStation":{"properties":{"id":{"type":"integer"},"description":{"type":"string"},"track":{"minLength":1,"type":"string"},"prefix":{"type":"string"},"key":{"type":"string","minLength":1},"cleartextkey":{"type":"string"},"enabled":{"type":"boolean"}},"type":"object","required":["id","track","prefix","key","enabled"]},"TrackScan":{"properties":{"track":{"minLength":1,"type":"string"},"card":{"minLength":1,"type":"string"},"station":{"minLength":1,"type":"string"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"timestamp":{"type":"integer"},"lapTime":{"type":"number"},"id":{"type":"integer"},"runner":{"minLength":1,"type":"string"},"valid":{"type":"boolean"},"_distance":{"type":"integer"}},"type":"object","required":["track","card","station","distance","timestamp","lapTime","id","runner","valid","_distance"]},"RunnerCard":{"properties":{"id":{"type":"integer"},"runner":{},"enabled":{"type":"boolean"}},"type":"object","required":["id","enabled"]},"GroupContact":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"phone":{"type":"string"},"email":{"format":"email","type":"string"}},"type":"object","required":["id","firstname","lastname"]},"RunnerGroup":{"properties":{"id":{"type":"integer"},"name":{"type":"string","minLength":1},"contact":{},"distance":{"type":"integer"},"distanceDonationAmount":{"type":"integer"}},"type":"object","required":["id","name","distance","distanceDonationAmount"]},"Runner":{"properties":{"group":{"minLength":1,"type":"string"},"resetRequestedTimestamp":{"type":"string"},"distance":{"type":"integer"},"distanceDonationAmount":{"type":"integer"},"id":{"type":"integer"},"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"phone":{"type":"string"},"email":{"format":"email","type":"string"}},"type":"object","required":["group","distance","distanceDonationAmount","id","firstname","lastname"]},"DistanceDonation":{"properties":{"runner":{"minLength":1,"type":"string"},"amountPerDistance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"id":{"type":"integer"},"donor":{"minLength":1,"type":"string"},"paidAmount":{"type":"integer"}},"type":"object","required":["runner","amountPerDistance","id","donor","paidAmount"]},"CreateDonation":{"properties":{"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["donor"]},"CreateDistanceDonation":{"properties":{"runner":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"amountPerDistance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["runner","amountPerDistance","donor"]},"FixedDonation":{"properties":{"_amount":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"amount":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"id":{"type":"integer"},"donor":{"minLength":1,"type":"string"},"paidAmount":{"type":"integer"}},"type":"object","required":["_amount","amount","id","donor","paidAmount"]},"CreateFixedDonation":{"properties":{"amount":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["amount","donor"]},"UpdateDonation":{"properties":{"id":{"type":"integer"},"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["id","donor"]},"UpdateDistanceDonation":{"properties":{"runner":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"amountPerDistance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"id":{"type":"integer"},"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["runner","amountPerDistance","id","donor"]},"UpdateFixedDonation":{"properties":{"amount":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"id":{"type":"integer"},"donor":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"paidAmount":{"type":"integer"}},"type":"object","required":["amount","id","donor"]},"CreateParticipant":{"properties":{"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["firstname","lastname"]},"CreateDonor":{"properties":{"receiptNeeded":{"type":"boolean"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["firstname","lastname"]},"UpdateDonor":{"properties":{"id":{"type":"integer"},"receiptNeeded":{"type":"boolean"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["id","firstname","lastname"]},"GroupContactNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"GroupContactIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerGroupNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"CreateGroupContact":{"properties":{"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"address":{"type":"object"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"groups":{}},"type":"object","required":["firstname","lastname"]},"UpdateGroupContact":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string","minLength":1},"middlename":{"type":"string"},"lastname":{"type":"string","minLength":1},"address":{"type":"object"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"groups":{}},"type":"object","required":["id","firstname","lastname"]},"RunnerOrganizationNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerOrganizationIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerOrganizationHasRunnersError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerOrganizationHasTeamsError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerOrganizationWrongTypeError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResponseRunnerOrganization":{"properties":{"address":{"type":"object"},"teams":{"items":{},"type":"array"},"registrationKey":{"format":"base64","type":"string"},"registrationEnabled":{"type":"boolean"},"id":{"minLength":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"contact":{"type":"object"}},"type":"object","required":["teams","id","name"]},"ResponseRunnerTeam":{"properties":{"parentGroup":{"minLength":1,"type":"object"},"id":{"minLength":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"contact":{"type":"object"}},"type":"object","required":["parentGroup","id","name"]},"RunnerTeam":{"properties":{"parentGroup":{"minLength":1,"type":"string"},"id":{"type":"integer"},"name":{"type":"string","minLength":1},"contact":{},"distance":{"type":"integer"},"distanceDonationAmount":{"type":"integer"}},"type":"object","required":["parentGroup","id","name","distance","distanceDonationAmount"]},"RunnerOrganization":{"properties":{"address":{},"key":{"type":"string"},"distance":{"type":"integer"},"distanceDonationAmount":{"type":"integer"},"id":{"type":"integer"},"name":{"type":"string","minLength":1},"contact":{}},"type":"object","required":["distance","distanceDonationAmount","id","name"]},"RunnerTeamNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerTeamIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerTeamHasRunnersError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"RunnerTeamNeedsParentError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"CreateRunner":{"properties":{"group":{"type":"integer"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["group","firstname","lastname"]},"ImportRunner":{"properties":{"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"team":{"type":"string"},"class":{"type":"string"}},"type":"object","required":["firstname","lastname"]},"UpdateRunner":{"properties":{"id":{"type":"integer"},"group":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["id","group","firstname","lastname"]},"CreateRunnerCard":{"properties":{"runner":{"type":"integer"},"enabled":{"type":"boolean"}},"type":"object","required":["enabled"]},"UpdateRunnerCard":{"properties":{"id":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"runner":{"type":"integer"},"enabled":{"type":"boolean"}},"type":"object","required":["id","enabled"]},"ScanNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ScanIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ScanStationNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ScanStationIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ScanStationHasScansError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"CreateScan":{"properties":{"runner":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"valid":{"type":"boolean"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["runner","distance"]},"CreateTrackScan":{"properties":{"card":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"station":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["card"]},"UpdateScan":{"properties":{"id":{"type":"integer"},"runner":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"valid":{"type":"boolean"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["id","runner","distance"]},"UpdateTrackScan":{"properties":{"id":{"type":"integer"},"runner":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"valid":{"type":"boolean"},"track":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["id","runner","track"]},"GroupNameNeededError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserGroupNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UserGroupIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"UpdateUser":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"username":{"type":"string"},"email":{"minLength":1,"type":"string","format":"email"},"phone":{"type":"string"},"password":{"type":"string"},"enabled":{"type":"boolean"},"groups":{},"profilePic":{"format":"url","type":"string"}},"type":"object","required":["id","firstname","lastname","email"]},"ResponseUserPermissions":{"properties":{"directlyGranted":{"items":{},"type":"array"},"inherited":{"items":{},"type":"array"}},"type":"object"},"PermissionNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PermissionIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PermissionNeedsPrincipalError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PrincipalNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"PrincipalWrongTypeError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"CreatePermission":{"properties":{"principal":{"minLength":1,"type":"integer"},"target":{"enum":["RUNNER","ORGANIZATION","TEAM","TRACK","USER","USERGROUP","PERMISSION","STATSCLIENT","DONOR","SCAN","STATION","CARD","DONATION","CONTACT","MAIL"],"type":"string","minLength":1},"action":{"enum":["GET","CREATE","UPDATE","DELETE","IMPORT"],"type":"string","minLength":1}},"type":"object","required":["principal","target","action"]},"UpdatePermission":{"properties":{"id":{"type":"integer"},"principal":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"target":{"minLength":1,"type":"string"},"action":{"minLength":1,"type":"string"}},"type":"object","required":["id","principal","target","action"]},"CreateRunnerGroup":{"properties":{"name":{"type":"string","minLength":1},"contact":{"type":"integer"}},"type":"object","required":["name"]},"CreateRunnerOrganization":{"properties":{"address":{"type":"object"},"registrationEnabled":{"type":"boolean"},"name":{"type":"string","minLength":1},"contact":{"type":"integer"}},"type":"object","required":["name"]},"UpdateRunnerOrganization":{"properties":{"id":{"type":"integer"},"address":{"type":"object"},"registrationEnabled":{"type":"boolean"},"name":{"type":"string","minLength":1},"contact":{"type":"integer"}},"type":"object","required":["id","name"]},"CreateRunnerTeam":{"properties":{"parentGroup":{"minLength":1,"type":"integer"},"name":{"type":"string","minLength":1},"contact":{"type":"integer"}},"type":"object","required":["parentGroup","name"]},"UpdateRunnerTeam":{"properties":{"id":{"type":"integer"},"parentGroup":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"name":{"type":"string","minLength":1},"contact":{"type":"integer"}},"type":"object","required":["id","parentGroup","name"]},"CreateSelfServiceCitizenRunner":{"properties":{"email":{"format":"email","type":"string","minLength":1},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"address":{"type":"object"}},"type":"object","required":["firstname","lastname"]},"CreateSelfServiceRunner":{"properties":{"team":{"type":"integer"},"firstname":{"minLength":1,"type":"string"},"middlename":{"type":"string"},"lastname":{"minLength":1,"type":"string"},"phone":{"type":"string"},"email":{"format":"email","type":"string"},"address":{"type":"object"}},"type":"object","required":["firstname","lastname"]},"ResponseSelfServiceTeam":{"properties":{"name":{"type":"string","minLength":1},"id":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["name","id"]},"ResponseSelfServiceOrganisation":{"properties":{"name":{"type":"string","minLength":1},"teams":{"items":{},"type":"array"}},"type":"object","required":["name","teams"]},"ResponseSelfServiceDonor":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"}},"type":"object","required":["id","firstname","middlename","lastname"]},"ResponseSelfServiceDonation":{"properties":{"donor":{"minLength":1,"type":"string"},"amount":{"type":"integer"},"amountPerDistance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"}},"type":"object","required":["donor","amount","amountPerDistance"]},"ResponseSelfServiceRunner":{"properties":{"distance":{"type":"integer"},"donationAmount":{"type":"integer"},"group":{"type":"string"},"distanceDonations":{"type":"string"},"token":{"type":"string"},"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"type":"object"}},"type":"object","required":["distance","donationAmount","group","distanceDonations","id","firstname","middlename","lastname","phone","email"]},"ResponseSelfServiceScan":{"properties":{"id":{"type":"integer"},"valid":{"type":"boolean"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"lapTime":{"minLength":1,"type":"integer"}},"type":"object","required":["id","valid","distance","lapTime"]},"CreateScanStation":{"properties":{"description":{"type":"string"},"track":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"enabled":{"type":"boolean"}},"type":"object","required":["track"]},"UpdateScanStation":{"properties":{"id":{"type":"integer"},"description":{"type":"string"},"enabled":{"type":"boolean"}},"type":"object","required":["id"]},"StatsClientNotFoundError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"StatsClientIdsNotMatchingError":{"properties":{"name":{"type":"string"},"message":{"type":"string"}},"type":"object","required":["name","message"]},"ResponseStatsClient":{"properties":{"id":{"type":"integer"},"description":{"type":"string"},"key":{"type":"string"},"prefix":{"minLength":1,"type":"string"}},"type":"object","required":["id","prefix"]},"StatsClient":{"properties":{"id":{"type":"integer"},"description":{"type":"string"},"prefix":{"type":"string"},"key":{"type":"string"},"cleartextkey":{"type":"string"}},"type":"object","required":["id","prefix","key"]},"CreateStatsClient":{"properties":{"description":{"type":"string"}},"type":"object"},"ResponseStats":{"properties":{"total_runners":{"type":"integer"},"total_teams":{"type":"integer"},"total_orgs":{"type":"integer"},"total_users":{"type":"integer"},"total_scans":{"type":"integer"},"total_distance":{"type":"integer"},"total_donation":{"type":"integer"},"average_distance":{"type":"integer"}},"type":"object","required":["total_runners","total_teams","total_orgs","total_users","total_scans","total_distance","total_donation","average_distance"]},"ResponseStatsOrgnisation":{"properties":{"id":{"type":"integer"},"name":{"type":"string"},"distance":{"type":"integer"},"donationAmount":{"type":"integer"}},"type":"object","required":["id","name","distance","donationAmount"]},"ResponseStatsRunner":{"properties":{"id":{"type":"integer"},"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"distance":{"type":"integer"},"donationAmount":{"type":"integer"},"minLaptime":{"type":"integer"},"group":{"type":"object"}},"type":"object","required":["id","firstname","middlename","lastname","distance","donationAmount","group"]},"ResponseStatsTeam":{"properties":{"id":{"type":"integer"},"name":{"type":"string"},"distance":{"type":"integer"},"donationAmount":{"type":"integer"},"parent":{"type":"object"}},"type":"object","required":["id","name","distance","donationAmount","parent"]},"CreateTrack":{"properties":{"name":{"minLength":1,"type":"string"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"minimumLapTime":{"type":"integer"}},"type":"object","required":["name","distance"]},"UpdateTrack":{"properties":{"id":{"type":"integer"},"name":{"minLength":1,"type":"string"},"distance":{"exclusiveMinimum":true,"minimum":0,"type":"integer"},"minimumLapTime":{"type":"integer"}},"type":"object","required":["id","name","distance"]},"CreateUser":{"properties":{"firstname":{"type":"string"},"middlename":{"type":"string"},"lastname":{"type":"string"},"username":{"type":"string"},"email":{"minLength":1,"type":"string","format":"email"},"phone":{"type":"string"},"password":{"type":"string"},"enabled":{"type":"boolean"},"groups":{},"profilePic":{"format":"url","type":"string"}},"type":"object","required":["firstname","lastname","email","password"]},"CreateUserGroup":{"properties":{"name":{"type":"string"},"description":{"type":"string"}},"type":"object","required":["name"]},"UpdateUserGroup":{"properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"}},"type":"object","required":["id","name"]},"ResponseUserGroupPermissions":{"properties":{"directlyGranted":{"items":{},"type":"array"},"inherited":{"items":{},"type":"array"}},"type":"object"}},"securitySchemes":{"AuthToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"A JWT based access token. Use /api/auth/login or /api/auth/refresh to get one."},"RefreshTokenCookie":{"type":"apiKey","in":"cookie","name":"lfk_backend__refresh_token","description":"A cookie containing a JWT based refreh token. Attention: Doesn't work in swagger-ui. Use /api/auth/login or /api/auth/refresh to get one."},"StatsApiToken":{"type":"http","scheme":"bearer","description":"Api token that can be obtained by creating a new stats client (post to /api/statsclients). Only valid for obtaining stats."},"StationApiToken":{"type":"http","scheme":"bearer","description":"Api token that can be obtained by creating a new scan station (post to /api/stations). Only valid for creating scans."}}},"info":{"title":"LfK! Backend API","version":"0.13.1","description":"The the backend API for the LfK! runner system.
[Imprint](/imprint) & [Privacy](/privacy)"},"openapi":"3.0.0","paths":{"/api/auth/login":{"post":{"operationId":"AuthController.login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAuth"}}},"description":"CreateAuth","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseAuth"},{"$ref":"#/components/schemas/InvalidCredentialsError"},{"$ref":"#/components/schemas/UserNotFoundError"},{"$ref":"#/components/schemas/UsernameOrEmailNeededError"},{"$ref":"#/components/schemas/PasswordNeededError"},{"$ref":"#/components/schemas/InvalidCredentialsError"}]}}},"description":""}},"summary":"Login","tags":["Auth"],"description":"Login with your username/email and password.
You will receive: \n * access token (use it as a bearer token) \n * refresh token (will also be sent as a cookie)"}},"/api/auth/logout":{"post":{"operationId":"AuthController.logout","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HandleLogout"}}},"description":"HandleLogout","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Logout"},{"$ref":"#/components/schemas/InvalidCredentialsError"},{"$ref":"#/components/schemas/UserNotFoundError"},{"$ref":"#/components/schemas/UsernameOrEmailNeededError"},{"$ref":"#/components/schemas/PasswordNeededError"},{"$ref":"#/components/schemas/InvalidCredentialsError"}]}}},"description":""}},"summary":"Logout","tags":["Auth"],"description":"Logout using your refresh token.
This instantly invalidates all your access and refresh tokens.","security":[{"RefreshTokenCookie":[]}]}},"/api/auth/refresh":{"post":{"operationId":"AuthController.refresh","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshAuth"}}},"description":"RefreshAuth","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseAuth"},{"$ref":"#/components/schemas/JwtNotProvidedError"},{"$ref":"#/components/schemas/IllegalJWTError"},{"$ref":"#/components/schemas/UserNotFoundError"},{"$ref":"#/components/schemas/RefreshTokenCountInvalidError"}]}}},"description":""}},"summary":"Refresh","tags":["Auth"],"description":"Refresh your access and refresh tokens using a valid refresh token.
You will receive: \n * access token (use it as a bearer token) \n * refresh token (will also be sent as a cookie)","security":[{"RefreshTokenCookie":[]}]}},"/api/auth/reset":{"post":{"operationId":"AuthController.getResetToken","parameters":[{"in":"query","name":"locale","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResetToken"}}},"description":"CreateResetToken","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsernameOrEmailNeededError"}}},"description":""},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MailSendingError"}}},"description":""}},"summary":"Get reset token","tags":["Auth"],"description":"Request a password reset token.
This will provide you with a reset token that you can use by posting to /api/auth/reset/{token}."}},"/api/auth/reset/{token}":{"post":{"operationId":"AuthController.resetPassword","parameters":[{"in":"path","name":"token","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPassword"}}},"description":"ResetPassword","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseAuth"},{"$ref":"#/components/schemas/UserNotFoundError"},{"$ref":"#/components/schemas/UsernameOrEmailNeededError"}]}}},"description":""}},"summary":"Reset password","tags":["Auth"],"description":"Reset a user's utilising a valid password reset token.
This will set the user's password to the one you provided in the body.
To get a reset token post to /api/auth/reset with your username."}},"/api/donations":{"get":{"operationId":"DonationController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"$ref":"#/components/schemas/ResponseDonation"},"type":"array"},{"items":{"$ref":"#/components/schemas/ResponseDistanceDonation"},"type":"array"}]}}},"description":""}},"summary":"Get all","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all donations (fixed or distance based) from all donors.
This includes the donations's runner's distance ran(if distance donation)."}},"/api/donations/{id}":{"get":{"operationId":"DonationController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseDonation"},{"$ref":"#/components/schemas/ResponseDistanceDonation"}]}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the donation whose id got provided. This includes the donation's runner's distance ran (if distance donation)."},"delete":{"operationId":"DonationController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseDonation"},{"$ref":"#/components/schemas/ResponseDistanceDonation"}]}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the donation whose id you provided.
If no donation with this id exists it will just return 204(no content)."}},"/api/donations/fixed":{"post":{"operationId":"DonationController.postFixed","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFixedDonation"}}},"description":"CreateFixedDonation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorNotFoundError"}}},"description":""}},"summary":"Post fixed","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a fixed donation (not distance donation - use /donations/distance instead).
Please rmemember to provide the donation's donors's id and amount."}},"/api/donations/distance":{"post":{"operationId":"DonationController.postDistance","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDistanceDonation"}}},"description":"CreateDistanceDonation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDistanceDonation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DonorNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"}]}}},"description":""}},"summary":"Post distance","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a distance donation (not fixed donation - use /donations/fixed instead).
Please rmemember to provide the donation's donors's and runners ids and amount per distance (kilometer)."}},"/api/donations/fixed/{id}":{"put":{"operationId":"DonationController.putFixed","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFixedDonation"}}},"description":"UpdateFixedDonation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DonationNotFoundError"},{"$ref":"#/components/schemas/DonorNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationIdsNotMatchingError"}}},"description":""}},"summary":"Put fixed","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the fixed donation (not distance donation - use /donations/distance instead) whose id you provided.
Please remember that ids can't be changed and amounts must be positive."}},"/api/donations/distance/{id}":{"put":{"operationId":"DonationController.putDistance","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDistanceDonation"}}},"description":"UpdateDistanceDonation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DonationNotFoundError"},{"$ref":"#/components/schemas/DonorNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationIdsNotMatchingError"}}},"description":""}},"summary":"Put distance","tags":["Donation"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the distance donation (not fixed donation - use /donations/fixed instead) whose id you provided.
Please remember that ids can't be changed and amountPerDistance must be positive."}},"/api/donors":{"get":{"operationId":"DonorController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseDonor"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Donor"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all donor.
This includes the donor's current donation amount."},"post":{"operationId":"DonorController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonor"}}},"description":"CreateDonor","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonor"}}},"description":""}},"summary":"Post","tags":["Donor"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new donor."}},"/api/donors/{id}":{"get":{"operationId":"DonorController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonor"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Donor"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the donor whose id got provided.
This includes the donor's current donation amount."},"put":{"operationId":"DonorController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDonor"}}},"description":"UpdateDonor","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonor"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Donor"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the donor whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"DonorController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseDonor"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Donor"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the donor whose id you provided.
If no donor with this id exists it will just return 204(no content).
If the donor still has donations associated this will fail, please provide the query param ?force=true to delete the donor with all associated donations."}},"/api/contacts":{"get":{"operationId":"GroupContactController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseGroupContact"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Group Contact"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all contacts.
This includes the contact's associated groups."},"post":{"operationId":"GroupContactController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGroupContact"}}},"description":"CreateGroupContact","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseGroupContact"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""}},"summary":"Post","tags":["Group Contact"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new contact."}},"/api/contacts/{id}":{"get":{"operationId":"GroupContactController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseGroupContact"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupContactNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Group Contact"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the contact whose id got provided.
This includes the contact's associated groups."},"put":{"operationId":"GroupContactController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGroupContact"}}},"description":"UpdateGroupContact","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseGroupContact"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/GroupContactNotFoundError"},{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupContactIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Group Contact"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the contact whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"GroupContactController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseGroupContact"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Group Contact"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the contact whose id you provided.
If no contact with this id exists it will just return 204(no content).
This won't delete any groups associated with the contact."}},"/api/scans":{"get":{"operationId":"ScanController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"$ref":"#/components/schemas/ResponseScan"},"type":"array"},{"items":{"$ref":"#/components/schemas/ResponseTrackScan"},"type":"array"}]}}},"description":""}},"summary":"Get all","tags":["Scan"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all scans (normal or track) from all runners.
This includes the scan's runner's distance ran."},"post":{"operationId":"ScanController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScan"}}},"description":"CreateScan","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScan"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Post","tags":["Scan"],"security":[{"AuthToken":[],"StationApiToken":[]},{"RefreshTokenCookie":[],"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new scan (not track scan - use /scans/trackscans instead).
Please rmemember to provide the scan's runner's id and distance."}},"/api/scans/{id}":{"get":{"operationId":"ScanController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseScan"},{"$ref":"#/components/schemas/ResponseTrackScan"}]}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Scan"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the scan whose id got provided. This includes the scan's runner's distance ran."},"put":{"operationId":"ScanController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateScan"}}},"description":"UpdateScan","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScan"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ScanNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Scan"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the scan (not track scan use /scans/trackscans/:id instead) whose id you provided.
Please remember that ids can't be changed and distances must be positive."},"delete":{"operationId":"ScanController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScan"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Scan"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the scan whose id you provided.
If no scan with this id exists it will just return 204(no content)."}},"/api/scans/trackscans":{"post":{"operationId":"ScanController.postTrackScans","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTrackScan"}}},"description":"CreateTrackScan","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrackScan"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Post track scans","tags":["Scan"],"security":[{"AuthToken":[],"StationApiToken":[]},{"RefreshTokenCookie":[],"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new track scan (for \"normal\" scans use /scans instead).
Please remember that to provide the scan's card's station's id."}},"/api/scans/trackscans/{id}":{"put":{"operationId":"ScanController.putTrackScan","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTrackScan"}}},"description":"UpdateTrackScan","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrackScan"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ScanNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"},{"$ref":"#/components/schemas/ScanStationNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanIdsNotMatchingError"}}},"description":""}},"summary":"Put track scan","tags":["Scan"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the track scan (not \"normal\" scan use /scans/trackscans/:id instead) whose id you provided.
Please remember that only the validity, runner and track can be changed."}},"/api/cards":{"get":{"operationId":"RunnerCardController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunnerCard"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all card."},"post":{"operationId":"RunnerCardController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunnerCard"}}},"description":"CreateRunnerCard","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerCard"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Post","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new card.
You can provide a associated runner by id but you don't have to."}},"/api/cards/{id}":{"get":{"operationId":"RunnerCardController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerCard"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerCardNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the card whose id got provided."},"put":{"operationId":"RunnerCardController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRunnerCard"}}},"description":"UpdateRunnerCard","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerCard"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RunnerCardNotFoundError"},{"$ref":"#/components/schemas/RunnerNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerCardIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the card whose id you provided.
Scans created via this card will still be associated with the old runner.
Please remember that ids can't be changed."},"delete":{"operationId":"RunnerCardController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerCard"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerCardHasScansError"}}},"description":""}},"summary":"Remove","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the card whose id you provided.
If no card with this id exists it will just return 204(no content).
If the card still has scans associated you have to provide the force=true query param (warning: this deletes all scans associated with by this card - please disable it instead or just remove the runner association)."}},"/api/cards/bulk":{"post":{"operationId":"RunnerCardController.postBlancoBulk","parameters":[{"in":"query","name":"count","required":false,"schema":{"type":"number"}},{"in":"query","name":"returnCards","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Post blanco bulk","tags":["Runner Card"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create blank cards in bulk.
Just provide the count as a query param and wait for the 200 response.
You can provide the 'returnCards' query param if you want to receive the RESPONSERUNNERCARD objects in the response."}},"/api/runners":{"get":{"operationId":"RunnerController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all runners from all teams/orgs.
This includes the runner's group and distance ran."},"post":{"operationId":"RunnerController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunner"}}},"description":"CreateRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ResponseRunner"},{"$ref":"#/components/schemas/RunnerGroupNeededError"},{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}]}}},"description":""}},"summary":"Post","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new runner.
Please remeber to provide the runner's group's id."}},"/api/runners/{id}":{"get":{"operationId":"RunnerController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunner"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the runner whose id got provided."},"put":{"operationId":"RunnerController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRunner"}}},"description":"UpdateRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunner"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the runner whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"RunnerController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunner"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerHasDistanceDonationsError"}}},"description":""}},"summary":"Remove","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the runner whose id you provided.
This will also delete all scans and cards associated with the runner.
If no runner with this id exists it will just return 204(no content)."}},"/api/runners/{id}/scans":{"get":{"operationId":"RunnerController.getScans","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"$ref":"#/components/schemas/ResponseScan"},"type":"array"},{"items":{"$ref":"#/components/schemas/ResponseTrackScan"},"type":"array"}]}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Get scans","tags":["Runner"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all scans of the runner whose id got provided.
If you only want the valid scans just add the ?onlyValid=true query param."}},"/api/runners/import":{"post":{"operationId":"ImportController.postJSON","parameters":[{"in":"query","name":"group","required":false,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ImportRunner"},"type":"array"}}},"description":"ImportRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post json","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from json and insert them into the provided group.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead."}},"/api/organizations/{id}/import":{"post":{"operationId":"ImportController.postOrgsJSON","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ImportRunner"},"type":"array"}}},"description":"ImportRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post orgs json","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from json and insert them into the provided org.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead."}},"/api/teams/{id}/import":{"post":{"operationId":"ImportController.postTeamsJSON","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ImportRunner"},"type":"array"}}},"description":"ImportRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post teams json","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from json and insert them into the provided team"}},"/api/runners/import/csv":{"post":{"operationId":"ImportController.postCSV","parameters":[{"in":"query","name":"group","required":false,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post csv","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from csv and insert them into the provided group.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead."}},"/api/organizations/{id}/import/csv":{"post":{"operationId":"ImportController.postOrgsCSV","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post orgs csv","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from csv and insert them into the provided org.
If teams/classes are provided alongside the runner's name they'll automaticly be created under the provided org and the runners will be inserted into the teams instead."}},"/api/teams/{id}/import/csv":{"post":{"operationId":"ImportController.postTeamsCSV","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerGroupNeededError"}}},"description":""}},"summary":"Post teams csv","tags":["Import"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create new runners from csv and insert them into the provided team"}},"/api/permissions":{"get":{"operationId":"PermissionController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponsePermission"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Permission"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all permissions for all users and groups."},"post":{"operationId":"PermissionController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePermission"}}},"description":"CreatePermission","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsePermission"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrincipalNotFoundError"}}},"description":""}},"summary":"Post","tags":["Permission"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new permission for a existing principal(user/group).
If a permission with this target, action and prinicpal already exists that permission will be returned instead of creating a new one."}},"/api/permissions/{id}":{"get":{"operationId":"PermissionController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsePermission"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PermissionNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Permission"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the permission whose id got provided."},"put":{"operationId":"PermissionController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePermission"}}},"description":"UpdatePermission","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsePrincipal"}}},"description":""},"404":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PermissionNotFoundError"},{"$ref":"#/components/schemas/PrincipalNotFoundError"}]}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PermissionIdsNotMatchingError"},{"$ref":"#/components/schemas/PermissionNeedsPrincipalError"}]}}},"description":""}},"summary":"Put","tags":["Permission"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update a permission object.
If updateing the permission object would result in duplicate permission (same target, action and principal) this permission will get deleted and the existing permission will be returned.
Please remember that ids can't be changed."},"delete":{"operationId":"PermissionController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsePermission"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Permission"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Deletes the permission whose id you provide.
If no permission with this id exists it will just return 204(no content)."}},"/api/users/me/":{"get":{"operationId":"MeController.get","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""}},"summary":"Get","tags":["Me"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about yourself."},"put":{"operationId":"MeController.put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUser"}}},"description":"UpdateUser","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UserIdsNotMatchingError"},{"$ref":"#/components/schemas/UsernameContainsIllegalCharacterError"},{"$ref":"#/components/schemas/PasswordMustContainUppercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainLowercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainNumberError"},{"$ref":"#/components/schemas/PasswordTooShortError"}]}}},"description":""}},"summary":"Put","tags":["Me"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the yourself.
You can't edit your own permissions or group memberships here - Please use the /api/users/:id enpoint instead.
Please remember that ids can't be changed."},"delete":{"operationId":"MeController.remove","parameters":[{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDeletionNotConfirmedError"}}},"description":""}},"summary":"Remove","tags":["Me"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete yourself.
You have to confirm your decision by providing the ?force=true query param.
If there are any permissions directly granted to you they will get deleted as well."}},"/api/users/me/permissions":{"get":{"operationId":"MeController.getPermissions","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUserPermissions"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""}},"summary":"Get permissions","tags":["Me"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all permissions granted to the you sorted into directly granted and inherited as permission response objects."}},"/api/teams":{"get":{"operationId":"RunnerTeamController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunnerTeam"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all teams.
This includes their parent organization and contact (if existing/associated)."},"post":{"operationId":"RunnerTeamController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunnerTeam"}}},"description":"CreateRunnerTeam","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerTeam"}}},"description":""}},"summary":"Post","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new organsisation.
Please remember to provide it's parent group's id."}},"/api/teams/{id}":{"get":{"operationId":"RunnerTeamController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerTeam"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerTeamNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the team whose id got provided."},"put":{"operationId":"RunnerTeamController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRunnerTeam"}}},"description":"UpdateRunnerTeam","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerTeam"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerTeamNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerTeamIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the team whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"RunnerTeamController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerTeam"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerTeamHasRunnersError"}}},"description":""}},"summary":"Remove","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the team whose id you provided.
If the team still has runners associated this will fail.
To delete the team with all associated runners set the force QueryParam to true (cascading deletion might take a while).
This won't delete the associated contact.
If no team with this id exists it will just return 204(no content)."}},"/api/teams/{id}/runners":{"get":{"operationId":"RunnerTeamController.getRunners","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerTeamNotFoundError"}}},"description":""}},"summary":"Get runners","tags":["Runner Team"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all runners from this team.
This includes the runner's group and distance ran."}},"/api/organizations":{"get":{"operationId":"RunnerOrganizationController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunnerOrganization"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all organizations.
This includes their address, contact and teams (if existing/associated)."},"post":{"operationId":"RunnerOrganizationController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunnerOrganization"}}},"description":"CreateRunnerOrganization","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerOrganization"}}},"description":""}},"summary":"Post","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new organsisation."}},"/api/organizations/{id}":{"get":{"operationId":"RunnerOrganizationController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerOrganization"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the organization whose id got provided."},"put":{"operationId":"RunnerOrganizationController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRunnerOrganization"}}},"description":"UpdateRunnerOrganization","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerOrganization"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the organization whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"RunnerOrganizationController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseRunnerOrganization"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/RunnerOrganizationHasTeamsError"},{"$ref":"#/components/schemas/RunnerOrganizationHasRunnersError"}]}}},"description":""}},"summary":"Remove","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the organsisation whose id you provided.
If the organization still has runners and/or teams associated this will fail.
To delete the organization with all associated runners and teams set the force QueryParam to true (cascading deletion might take a while).
This won't delete the associated contact.
If no organization with this id exists it will just return 204(no content)."}},"/api/organizations/{id}/runners":{"get":{"operationId":"RunnerOrganizationController.getRunners","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"onlyDirect","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseRunner"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationNotFoundError"}}},"description":""}},"summary":"Get runners","tags":["Runner Organization"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all runners from this org and it's teams (if you don't provide the ?onlyDirect=true param).
This includes the runner's group and distance ran."}},"/api/runners/me/{jwt}":{"get":{"operationId":"RunnerSelfServiceController.get","parameters":[{"in":"path","name":"jwt","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseSelfServiceRunner"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Get","tags":["Runner Self Service"],"description":"Lists all information about yourself.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please use the forgot endpoint."},"delete":{"operationId":"RunnerSelfServiceController.remove","parameters":[{"in":"path","name":"jwt","required":true,"schema":{"type":"string"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseSelfServiceRunner"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Remove","tags":["Runner Self Service"],"description":"Deletes all information about yourself.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please use the forgot endpoint."}},"/api/runners/me/{jwt}/scans":{"get":{"operationId":"RunnerSelfServiceController.getScans","parameters":[{"in":"path","name":"jwt","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseSelfServiceScan"},"type":"array"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Get scans","tags":["Runner Self Service"],"description":"Lists all your (runner) scans.
Please provide your runner jwt(that code we gave you during registration) for auth.
If you lost your jwt/personalized link please contact support."}},"/api/stations/me":{"get":{"operationId":"RunnerSelfServiceController.getStationMe","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScanStation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanStationNotFoundError"}}},"description":""}},"summary":"Get station me","tags":["Runner Self Service"],"description":"Lists basic information about the station whose token got provided.
This includes it's associated track.","security":[{"StationApiToken":[]}]}},"/api/runners/login":{"post":{"operationId":"RunnerSelfServiceController.requestNewToken","parameters":[{"in":"query","name":"mail","required":false,"schema":{"type":"string"}},{"in":"query","name":"locale","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{}},"description":"Successful response"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerNotFoundError"}}},"description":""}},"summary":"Request new token","tags":["Runner Self Service"],"description":"Use this endpoint to reuqest a new selfservice magic-login-link to be sent to your mail address (rate limited to one mail every 24hrs)."}},"/api/runners/register":{"post":{"operationId":"RunnerSelfServiceController.registerRunner","parameters":[{"in":"query","name":"locale","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSelfServiceCitizenRunner"}}},"description":"CreateSelfServiceCitizenRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseSelfServiceRunner"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerEmailNeededError"}}},"description":""}},"summary":"Register runner","tags":["Runner Self Service"],"description":"Create a new selfservice runner in the citizen org.
This endpoint shoud be used to allow \"everyday citizen\" to register themselves.
You have to provide a mail address, b/c the future we'll implement email verification."}},"/api/runners/register/{token}":{"post":{"operationId":"RunnerSelfServiceController.registerOrganizationRunner","parameters":[{"in":"path","name":"token","required":true,"schema":{"type":"string"}},{"in":"query","name":"locale","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSelfServiceRunner"}}},"description":"CreateSelfServiceRunner","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseSelfServiceRunner"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationNotFoundError"}}},"description":""}},"summary":"Register organization runner","tags":["Runner Self Service"],"description":"Create a new selfservice runner in a provided org.
The orgs get provided and authorized via api tokens that can be optained via the /organizations endpoint."}},"/api/organizations/selfservice/{token}":{"get":{"operationId":"RunnerSelfServiceController.getSelfserviceOrg","parameters":[{"in":"path","name":"token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseSelfServiceOrganisation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunnerOrganizationNotFoundError"}}},"description":""}},"summary":"Get selfservice org","tags":["Runner Self Service"],"description":"Get the basic info and teams for a org."}},"/api/stations":{"get":{"operationId":"ScanStationController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseScanStation"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Scan Station"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all stations.
This includes their associated tracks."},"post":{"operationId":"ScanStationController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateScanStation"}}},"description":"CreateScanStation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScanStation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackNotFoundError"}}},"description":""}},"summary":"Post","tags":["Scan Station"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new station.
Please remeber to provide the station's track's id.
Please also remember that the station key is only visibe on creation."}},"/api/stations/{id}":{"get":{"operationId":"ScanStationController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScanStation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanStationNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Scan Station"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the station whose id got provided.
This includes it's associated track."},"put":{"operationId":"ScanStationController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateScanStation"}}},"description":"UpdateScanStation","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScanStation"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanStationNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanStationIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["Scan Station"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the station whose id you provided.
Please remember that only the description and enabled state can be changed."},"delete":{"operationId":"ScanStationController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseScanStation"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanStationHasScansError"}}},"description":""}},"summary":"Remove","tags":["Scan Station"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the station whose id you provided.
If no station with this id exists it will just return 204(no content).
If the station still has scans associated you have to provide the force=true query param (warning: this deletes all scans associated with/created by this station - please disable it instead)."}},"/api/statsclients":{"get":{"operationId":"StatsClientController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsClient"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Stats Client"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all stats clients. Please remember that the key can only be viewed on creation."},"post":{"operationId":"StatsClientController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStatsClient"}}},"description":"CreateStatsClient","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseStatsClient"}}},"description":""}},"summary":"Post","tags":["Stats Client"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new stats client.
Please remember that the client's key will be generated automaticly and that it can only be viewed on creation."}},"/api/statsclients/{id}":{"get":{"operationId":"StatsClientController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseStatsClient"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsClientNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Stats Client"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the stats client whose id got provided. Please remember that the key can only be viewed on creation."},"delete":{"operationId":"StatsClientController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseStatsClient"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Stats Client"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the stats client whose id you provided.
If no client with this id exists it will just return 204(no content)."}},"/api/stats":{"get":{"operationId":"StatsController.get","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseStats"}}},"description":""}},"summary":"Get","tags":["Stats"],"description":"A very basic stats endpoint providing basic counters for a dashboard or simmilar"}},"/api/stats/runners/distance":{"get":{"operationId":"StatsController.getTopRunnersByDistance","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsRunner"},"type":"array"}}},"description":""}},"summary":"Get top runners by distance","tags":["Stats"],"description":"Returns the top ten runners by distance.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/runners/donations":{"get":{"operationId":"StatsController.getTopRunnersByDonations","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsRunner"},"type":"array"}}},"description":""}},"summary":"Get top runners by donations","tags":["Stats"],"description":"Returns the top ten runners by donations.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/runners/laptime":{"get":{"operationId":"StatsController.getTopRunnersByLaptime","parameters":[{"in":"query","name":"track","required":false,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsRunner"},"type":"array"}}},"description":""}},"summary":"Get top runners by laptime","tags":["Stats"],"description":"Returns the top ten runners by fastest laptime on your selected track (track by id).","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/scans":{"get":{"operationId":"StatsController.getTopRunnersByTrackTime","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsRunner"},"type":"array"}}},"description":""}},"summary":"Get top runners by track time","tags":["Stats"],"description":"Returns the top ten fastest track times (with their runner and the runner's group).","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/teams/distance":{"get":{"operationId":"StatsController.getTopTeamsByDistance","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsTeam"},"type":"array"}}},"description":""}},"summary":"Get top teams by distance","tags":["Stats"],"description":"Returns the top ten teams by distance.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/teams/donations":{"get":{"operationId":"StatsController.getTopTeamsByDonations","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsTeam"},"type":"array"}}},"description":""}},"summary":"Get top teams by donations","tags":["Stats"],"description":"Returns the top ten teams by donations.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/organizations/distance":{"get":{"operationId":"StatsController.getTopOrgsByDistance","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsOrgnisation"},"type":"array"}}},"description":""}},"summary":"Get top orgs by distance","tags":["Stats"],"description":"Returns the top ten organizations by distance.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/stats/organizations/donations":{"get":{"operationId":"StatsController.getTopOrgsByDonations","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseStatsOrgnisation"},"type":"array"}}},"description":""}},"summary":"Get top orgs by donations","tags":["Stats"],"description":"Returns the top ten organizations by donations.","security":[{"StatsApiToken":[]},{"AuthToken":[]},{"RefreshTokenCookie":[]}]}},"/api/status":{"get":{"operationId":"StatusController.get","responses":{"200":{"content":{"application/json":{}},"description":"Successful response"}},"summary":"Get","tags":["Status"],"description":"A very basic status/health endpoint that just checks if the database connection is available.
The available information depth will be expanded later."}},"/api/version":{"get":{"operationId":"StatusController.getVersion","responses":{"200":{"content":{"application/json":{}},"description":"Successful response"}},"summary":"Get version","tags":["Status"],"description":"A very basic endpoint that just returns the curent package version."}},"/api/tracks":{"get":{"operationId":"TrackController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseTrack"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["Track"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all tracks."},"post":{"operationId":"TrackController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTrack"}}},"description":"CreateTrack","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrack"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackLapTimeCantBeNegativeError"}}},"description":""}},"summary":"Post","tags":["Track"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new track.
Please remember that the track's distance must be greater than 0."}},"/api/tracks/{id}":{"get":{"operationId":"TrackController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrack"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackNotFoundError"}}},"description":""}},"summary":"Get one","tags":["Track"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the track whose id got provided."},"put":{"operationId":"TrackController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTrack"}}},"description":"UpdateTrack","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrack"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/TrackIdsNotMatchingError"},{"$ref":"#/components/schemas/TrackLapTimeCantBeNegativeError"}]}}},"description":""}},"summary":"Put","tags":["Track"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the track whose id you provided.
Please remember that ids can't be changed."},"delete":{"operationId":"TrackController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseTrack"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["Track"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the track whose id you provided.
If no track with this id exists it will just return 204(no content)."}},"/api/users":{"get":{"operationId":"UserController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseUser"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all users.
This includes their groups and permissions granted to them."},"post":{"operationId":"UserController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUser"}}},"description":"CreateUser","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UsernameContainsIllegalCharacterError"},{"$ref":"#/components/schemas/PasswordMustContainUppercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainLowercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainNumberError"},{"$ref":"#/components/schemas/PasswordTooShortError"}]}}},"description":""}},"summary":"Post","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new user.
If you want to grant permissions to the user you have to create them seperately by posting to /api/permissions after creating the user."}},"/api/users/{id}":{"get":{"operationId":"UserController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""}},"summary":"Get one","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the user whose id got provided.
Please remember that all permissions granted to the user will show up here."},"put":{"operationId":"UserController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUser"}}},"description":"UpdateUser","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UserIdsNotMatchingError"},{"$ref":"#/components/schemas/UsernameContainsIllegalCharacterError"},{"$ref":"#/components/schemas/PasswordMustContainUppercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainLowercaseLetterError"},{"$ref":"#/components/schemas/PasswordMustContainNumberError"},{"$ref":"#/components/schemas/PasswordTooShortError"}]}}},"description":""}},"summary":"Put","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the user whose id you provided.
To change the permissions directly granted to the user please use /api/permissions instead.
Please remember that ids can't be changed."},"delete":{"operationId":"UserController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDeletionNotConfirmedError"}}},"description":""}},"summary":"Remove","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the user whose id you provided.
You have to confirm your decision by providing the ?force=true query param.
If there are any permissions directly granted to the user they will get deleted as well.
If no user with this id exists it will just return 204(no content)."}},"/api/users/{id}/permissions":{"get":{"operationId":"UserController.getPermissions","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUser"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"}}},"description":""}},"summary":"Get permissions","tags":["User"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all permissions granted to the user sorted into directly granted and inherited as permission response objects."}},"/api/usergroups":{"get":{"operationId":"UserGroupController.getAll","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResponseUserGroup"},"type":"array"}}},"description":""}},"summary":"Get all","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all groups.
The information provided might change while the project continues to evolve."},"post":{"operationId":"UserGroupController.post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserGroup"}}},"description":"CreateUserGroup","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/UserGroup"},{"$ref":"#/components/schemas/UserGroupNotFoundError"}]}}},"description":""}},"summary":"Post","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Create a new group.
If you want to grant permissions to the group you have to create them seperately by posting to /api/permissions after creating the group."}},"/api/usergroups/{id}":{"get":{"operationId":"UserGroupController.getOne","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUserGroup"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroupNotFoundError"}}},"description":""}},"summary":"Get one","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all information about the group whose id got provided.
The information provided might change while the project continues to evolve."},"put":{"operationId":"UserGroupController.put","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserGroup"}}},"description":"UpdateUserGroup","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroup"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroupNotFoundError"}}},"description":""},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroupIdsNotMatchingError"}}},"description":""}},"summary":"Put","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Update the group whose id you provided.
To change the permissions granted to the group please use /api/permissions instead.
Please remember that ids can't be changed."},"delete":{"operationId":"UserGroupController.remove","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}},{"in":"query","name":"force","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUserGroup"}}},"description":""},"204":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEmpty"}}},"description":""}},"summary":"Remove","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Delete the group whose id you provided.
If there are any permissions directly granted to the group they will get deleted as well.
Users associated with this group won't get deleted - just deassociated.
If no group with this id exists it will just return 204(no content)."}},"/api/usergroups/{id}/permissions":{"get":{"operationId":"UserGroupController.getPermissions","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"number"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseUserGroupPermissions"}}},"description":""},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserGroupNotFoundError"}}},"description":""}},"summary":"Get permissions","tags":["User Group"],"security":[{"AuthToken":[]},{"RefreshTokenCookie":[]}],"description":"Lists all permissions granted to the group as permission response objects."}}}} \ No newline at end of file diff --git a/package.json b/package.json index 285c8d7..67f9c03 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@odit/lfk-client-js", "description": "A lib to interact with https://git.odit.services/lfk/backend. Use this version for native JS applications.", - "version": "0.13.0", + "version": "0.13.1", "license": "CC-BY-NC-SA-4.0", "main": "./dist/index.js", "types": "./dist/index.d.ts",