openapi: 3.0.3 info: title: Instanssi.org version: 2.0.0 description: Instanssi.org APIv2 paths: /api/v2/admin/auditlog/: get: operationId: admin_auditlog_list description: |- Read-only viewset for viewing audit log entries. Requires auditlog.view_logentry permission. Model-specific filtering is handled in get_queryset(). parameters: - in: query name: app_label schema: type: string - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: model schema: type: string - in: query name: object_pk schema: type: string - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedLogEntryList' description: '' /api/v2/admin/auditlog/{id}/: get: operationId: admin_auditlog_retrieve description: |- Read-only viewset for viewing audit log entries. Requires auditlog.view_logentry permission. Model-specific filtering is handled in get_queryset(). parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this log entry. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/LogEntry' description: '' /api/v2/admin/blog/: get: operationId: admin_blog_list description: Staff viewset for managing blog entries. parameters: - in: query name: event schema: type: integer - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string - in: query name: user schema: type: integer tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedBlogEntryList' description: '' post: operationId: admin_blog_create description: Staff viewset for managing blog entries. tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/BlogEntryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BlogEntryRequest' multipart/form-data: schema: $ref: '#/components/schemas/BlogEntryRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/BlogEntry' description: '' /api/v2/admin/blog/{id}/: get: operationId: admin_blog_retrieve description: Staff viewset for managing blog entries. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this blog entry. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlogEntry' description: '' put: operationId: admin_blog_update description: Staff viewset for managing blog entries. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this blog entry. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/BlogEntryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BlogEntryRequest' multipart/form-data: schema: $ref: '#/components/schemas/BlogEntryRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlogEntry' description: '' patch: operationId: admin_blog_partial_update description: Staff viewset for managing blog entries. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this blog entry. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedBlogEntryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedBlogEntryRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedBlogEntryRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/BlogEntry' description: '' delete: operationId: admin_blog_destroy description: Staff viewset for managing blog entries. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this blog entry. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/arkisto/archiver/hide/: post: operationId: admin_event_arkisto_archiver_hide_create description: Hides the event from the public archive. summary: Hide event from archive parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ArchiverStatus' description: '' /api/v2/admin/event/{event_pk}/arkisto/archiver/optimize-scores/: post: operationId: admin_event_arkisto_archiver_optimize_scores_create description: Pre-calculates and stores entry ranks and scores. Cannot be run while event is ongoing. summary: Optimize voting scores parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ArchiverStatus' description: '' /api/v2/admin/event/{event_pk}/arkisto/archiver/remove-old-votes/: post: operationId: admin_event_arkisto_archiver_remove_old_votes_create description: Deletes vote records after scores have been optimized. Cannot be run while event is ongoing or if scores are not optimized. summary: Remove old votes parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ArchiverStatus' description: '' /api/v2/admin/event/{event_pk}/arkisto/archiver/show/: post: operationId: admin_event_arkisto_archiver_show_create description: Makes the event visible in the public archive. summary: Show event in archive parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ArchiverStatus' description: '' /api/v2/admin/event/{event_pk}/arkisto/archiver/status/: get: operationId: admin_event_arkisto_archiver_status_retrieve description: Returns the current archiving status for the event. summary: Get archiver status parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ArchiverStatus' description: '' /api/v2/admin/event/{event_pk}/arkisto/archiver/transfer-rights/: post: operationId: admin_event_arkisto_archiver_transfer_rights_create description: Transfers entry and competition participation ownership to the 'arkisto' user. Cannot be run while event is ongoing. summary: Transfer rights to archive user parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ArchiverStatus' description: '' /api/v2/admin/event/{event_pk}/arkisto/video_categories/: get: operationId: admin_event_arkisto_video_categories_list description: Staff viewset for managing archive video categories. parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOtherVideoCategoryList' description: '' post: operationId: admin_event_arkisto_video_categories_create description: Staff viewset for managing archive video categories. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/OtherVideoCategoryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OtherVideoCategoryRequest' multipart/form-data: schema: $ref: '#/components/schemas/OtherVideoCategoryRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/OtherVideoCategory' description: '' /api/v2/admin/event/{event_pk}/arkisto/video_categories/{id}/: get: operationId: admin_event_arkisto_video_categories_retrieve description: Staff viewset for managing archive video categories. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this other video category. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OtherVideoCategory' description: '' put: operationId: admin_event_arkisto_video_categories_update description: Staff viewset for managing archive video categories. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this other video category. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/OtherVideoCategoryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OtherVideoCategoryRequest' multipart/form-data: schema: $ref: '#/components/schemas/OtherVideoCategoryRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OtherVideoCategory' description: '' patch: operationId: admin_event_arkisto_video_categories_partial_update description: Staff viewset for managing archive video categories. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this other video category. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedOtherVideoCategoryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedOtherVideoCategoryRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedOtherVideoCategoryRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OtherVideoCategory' description: '' delete: operationId: admin_event_arkisto_video_categories_destroy description: Staff viewset for managing archive video categories. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this other video category. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/arkisto/videos/: get: operationId: admin_event_arkisto_videos_list description: Staff viewset for managing archive videos. parameters: - in: query name: category schema: type: integer - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedOtherVideoList' description: '' post: operationId: admin_event_arkisto_videos_create description: Staff viewset for managing archive videos. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/OtherVideoRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OtherVideoRequest' multipart/form-data: schema: $ref: '#/components/schemas/OtherVideoRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/OtherVideo' description: '' /api/v2/admin/event/{event_pk}/arkisto/videos/{id}/: get: operationId: admin_event_arkisto_videos_retrieve description: Staff viewset for managing archive videos. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this other video. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OtherVideo' description: '' put: operationId: admin_event_arkisto_videos_update description: Staff viewset for managing archive videos. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this other video. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/OtherVideoRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/OtherVideoRequest' multipart/form-data: schema: $ref: '#/components/schemas/OtherVideoRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OtherVideo' description: '' patch: operationId: admin_event_arkisto_videos_partial_update description: Staff viewset for managing archive videos. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this other video. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedOtherVideoRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedOtherVideoRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedOtherVideoRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OtherVideo' description: '' delete: operationId: admin_event_arkisto_videos_destroy description: Staff viewset for managing archive videos. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this other video. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/kompomaatti/competition_participations/: get: operationId: admin_event_kompomaatti_competition_participations_list description: |- Staff viewset for managing competition participations. Supports ordering by rank and score. parameters: - in: query name: competition schema: type: integer - in: query name: disqualified schema: type: boolean - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string - in: query name: user schema: type: integer tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCompetitionParticipationList' description: '' post: operationId: admin_event_kompomaatti_competition_participations_create description: |- Staff viewset for managing competition participations. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/CompetitionParticipationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CompetitionParticipationRequest' multipart/form-data: schema: $ref: '#/components/schemas/CompetitionParticipationRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CompetitionParticipation' description: '' /api/v2/admin/event/{event_pk}/kompomaatti/competition_participations/{id}/: get: operationId: admin_event_kompomaatti_competition_participations_retrieve description: |- Staff viewset for managing competition participations. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition participation. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CompetitionParticipation' description: '' put: operationId: admin_event_kompomaatti_competition_participations_update description: |- Staff viewset for managing competition participations. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition participation. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/CompetitionParticipationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CompetitionParticipationRequest' multipart/form-data: schema: $ref: '#/components/schemas/CompetitionParticipationRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CompetitionParticipation' description: '' patch: operationId: admin_event_kompomaatti_competition_participations_partial_update description: |- Staff viewset for managing competition participations. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition participation. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCompetitionParticipationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCompetitionParticipationRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCompetitionParticipationRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CompetitionParticipation' description: '' delete: operationId: admin_event_kompomaatti_competition_participations_destroy description: |- Staff viewset for managing competition participations. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition participation. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/kompomaatti/competitions/: get: operationId: admin_event_kompomaatti_competitions_list description: Staff viewset for managing competitions. parameters: - in: query name: active schema: type: boolean - in: path name: event_pk schema: type: integer required: true - in: query name: hide_from_archive schema: type: boolean - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string - in: query name: show_results schema: type: boolean tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCompetitionList' description: '' post: operationId: admin_event_kompomaatti_competitions_create description: Staff viewset for managing competitions. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/CompetitionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CompetitionRequest' multipart/form-data: schema: $ref: '#/components/schemas/CompetitionRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/Competition' description: '' /api/v2/admin/event/{event_pk}/kompomaatti/competitions/{id}/: get: operationId: admin_event_kompomaatti_competitions_retrieve description: Staff viewset for managing competitions. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Competition' description: '' put: operationId: admin_event_kompomaatti_competitions_update description: Staff viewset for managing competitions. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/CompetitionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CompetitionRequest' multipart/form-data: schema: $ref: '#/components/schemas/CompetitionRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Competition' description: '' patch: operationId: admin_event_kompomaatti_competitions_partial_update description: Staff viewset for managing competitions. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCompetitionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCompetitionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCompetitionRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Competition' description: '' delete: operationId: admin_event_kompomaatti_competitions_destroy description: Staff viewset for managing competitions. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/kompomaatti/compos/: get: operationId: admin_event_kompomaatti_compos_list description: Staff viewset for managing compos. parameters: - in: query name: active schema: type: boolean - in: path name: event_pk schema: type: integer required: true - in: query name: hide_from_archive schema: type: boolean - in: query name: hide_from_frontpage schema: type: boolean - in: query name: is_votable schema: type: boolean - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string - in: query name: show_voting_results schema: type: boolean tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCompoList' description: '' post: operationId: admin_event_kompomaatti_compos_create description: Staff viewset for managing compos. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/CompoRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CompoRequest' multipart/form-data: schema: $ref: '#/components/schemas/CompoRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/Compo' description: '' /api/v2/admin/event/{event_pk}/kompomaatti/compos/{id}/: get: operationId: admin_event_kompomaatti_compos_retrieve description: Staff viewset for managing compos. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this compo. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Compo' description: '' put: operationId: admin_event_kompomaatti_compos_update description: Staff viewset for managing compos. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this compo. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/CompoRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CompoRequest' multipart/form-data: schema: $ref: '#/components/schemas/CompoRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Compo' description: '' patch: operationId: admin_event_kompomaatti_compos_partial_update description: Staff viewset for managing compos. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this compo. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedCompoRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCompoRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedCompoRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Compo' description: '' delete: operationId: admin_event_kompomaatti_compos_destroy description: Staff viewset for managing compos. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this compo. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/kompomaatti/entries/: get: operationId: admin_event_kompomaatti_entries_list description: |- Staff viewset for managing compo entries. Staff can manage entries without deadline restrictions. Supports ordering by rank and score. parameters: - in: query name: compo schema: type: integer - in: query name: disqualified schema: type: boolean - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string - in: query name: user schema: type: integer tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedCompoEntryList' description: '' post: operationId: admin_event_kompomaatti_entries_create description: |- Staff viewset for managing compo entries. Staff can manage entries without deadline restrictions. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/CompoEntryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CompoEntryRequest' application/json: schema: $ref: '#/components/schemas/CompoEntryRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CompoEntry' description: '' /api/v2/admin/event/{event_pk}/kompomaatti/entries/{id}/: get: operationId: admin_event_kompomaatti_entries_retrieve description: |- Staff viewset for managing compo entries. Staff can manage entries without deadline restrictions. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this entry. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CompoEntry' description: '' put: operationId: admin_event_kompomaatti_entries_update description: |- Staff viewset for managing compo entries. Staff can manage entries without deadline restrictions. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this entry. required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/CompoEntryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CompoEntryRequest' application/json: schema: $ref: '#/components/schemas/CompoEntryRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CompoEntry' description: '' patch: operationId: admin_event_kompomaatti_entries_partial_update description: |- Staff viewset for managing compo entries. Staff can manage entries without deadline restrictions. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this entry. required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/PatchedCompoEntryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedCompoEntryRequest' application/json: schema: $ref: '#/components/schemas/PatchedCompoEntryRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CompoEntry' description: '' delete: operationId: admin_event_kompomaatti_entries_destroy description: |- Staff viewset for managing compo entries. Staff can manage entries without deadline restrictions. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this entry. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/kompomaatti/entries/download-archive/: get: operationId: admin_event_kompomaatti_entries_download_archive_retrieve description: Streams all entry files as a ZIP archive organized by compo directory. summary: Download entry files archive parameters: - in: query name: compo schema: type: integer description: Filter by compo ID - in: path name: event_pk schema: type: integer required: true - in: query name: prefix schema: type: string enum: - id - order - rank description: 'Filename prefix mode: ''id'' (default), ''rank'', or ''order''' tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/zip: schema: type: string format: binary description: '' /api/v2/admin/event/{event_pk}/kompomaatti/entries/reorder/: post: operationId: admin_event_kompomaatti_entries_reorder_create description: Sets the order_index of each entry based on its position in the provided entry_ids list. All entries must belong to the specified compo and event. summary: Reorder entries within a compo parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/ReorderEntriesRequestRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ReorderEntriesRequestRequest' application/json: schema: $ref: '#/components/schemas/ReorderEntriesRequestRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ReorderEntriesOk' description: '' /api/v2/admin/event/{event_pk}/kompomaatti/entries/validate-archive/: get: operationId: admin_event_kompomaatti_entries_validate_archive_retrieve description: Checks that all entry files exist on disk before downloading. Call this before download-archive to get actionable error messages. summary: Validate entry files archive parameters: - in: query name: compo schema: type: integer description: Filter by compo ID - in: path name: event_pk schema: type: integer required: true - in: query name: prefix schema: type: string enum: - id - order - rank description: 'Filename prefix mode: ''id'' (default), ''rank'', or ''order''' tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ValidateArchiveOk' description: '' '400': content: application/json: schema: $ref: '#/components/schemas/ValidateArchiveError' description: '' /api/v2/admin/event/{event_pk}/kompomaatti/ticket_vote_codes/: get: operationId: admin_event_kompomaatti_ticket_vote_codes_list description: Staff viewset for viewing ticket vote codes (read-only). parameters: - in: query name: associated_to schema: type: integer - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: ticket schema: type: integer tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTicketVoteCodeList' description: '' /api/v2/admin/event/{event_pk}/kompomaatti/ticket_vote_codes/{id}/: get: operationId: admin_event_kompomaatti_ticket_vote_codes_retrieve description: Staff viewset for viewing ticket vote codes (read-only). parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this ticket vote code. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TicketVoteCode' description: '' /api/v2/admin/event/{event_pk}/kompomaatti/vote_code_requests/: get: operationId: admin_event_kompomaatti_vote_code_requests_list description: Staff viewset for managing vote code requests. parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string - in: query name: status schema: type: integer enum: - 0 - 1 - 2 description: |- * `0` - Pending approval * `1` - Approved * `2` - Rejected - in: query name: user schema: type: integer tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedVoteCodeRequestList' description: '' post: operationId: admin_event_kompomaatti_vote_code_requests_create description: Staff viewset for managing vote code requests. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/VoteCodeRequestRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VoteCodeRequestRequest' multipart/form-data: schema: $ref: '#/components/schemas/VoteCodeRequestRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/VoteCodeRequest' description: '' /api/v2/admin/event/{event_pk}/kompomaatti/vote_code_requests/{id}/: get: operationId: admin_event_kompomaatti_vote_code_requests_retrieve description: Staff viewset for managing vote code requests. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this vote code request. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/VoteCodeRequest' description: '' put: operationId: admin_event_kompomaatti_vote_code_requests_update description: Staff viewset for managing vote code requests. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this vote code request. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/VoteCodeRequestRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VoteCodeRequestRequest' multipart/form-data: schema: $ref: '#/components/schemas/VoteCodeRequestRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/VoteCodeRequest' description: '' patch: operationId: admin_event_kompomaatti_vote_code_requests_partial_update description: Staff viewset for managing vote code requests. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this vote code request. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedVoteCodeRequestRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedVoteCodeRequestRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedVoteCodeRequestRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/VoteCodeRequest' description: '' delete: operationId: admin_event_kompomaatti_vote_code_requests_destroy description: Staff viewset for managing vote code requests. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this vote code request. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/program/events/: get: operationId: admin_event_program_events_list description: Staff viewset for managing program events. parameters: - in: query name: active schema: type: boolean - in: path name: event_pk schema: type: integer required: true - in: query name: event_type schema: type: integer enum: - 0 - 1 description: |- * `0` - Simple * `1` - Detailed - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedProgramEventList' description: '' post: operationId: admin_event_program_events_create description: Staff viewset for managing program events. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/ProgramEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ProgramEventRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ProgramEvent' description: '' /api/v2/admin/event/{event_pk}/program/events/{id}/: get: operationId: admin_event_program_events_retrieve description: Staff viewset for managing program events. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this programme event. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ProgramEvent' description: '' put: operationId: admin_event_program_events_update description: Staff viewset for managing program events. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this programme event. required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/ProgramEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ProgramEventRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ProgramEvent' description: '' patch: operationId: admin_event_program_events_partial_update description: Staff viewset for managing program events. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this programme event. required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/PatchedProgramEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedProgramEventRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ProgramEvent' description: '' delete: operationId: admin_event_program_events_destroy description: Staff viewset for managing program events. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this programme event. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/store/item_variants/: get: operationId: admin_event_store_item_variants_list description: Staff viewset for managing store item variants. parameters: - in: path name: event_pk schema: type: integer required: true - in: query name: item schema: type: integer - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedStoreItemVariantList' description: '' post: operationId: admin_event_store_item_variants_create description: Staff viewset for managing store item variants. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/StoreItemVariantRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StoreItemVariantRequest' multipart/form-data: schema: $ref: '#/components/schemas/StoreItemVariantRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/StoreItemVariant' description: '' /api/v2/admin/event/{event_pk}/store/item_variants/{id}/: get: operationId: admin_event_store_item_variants_retrieve description: Staff viewset for managing store item variants. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store item variant. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoreItemVariant' description: '' put: operationId: admin_event_store_item_variants_update description: Staff viewset for managing store item variants. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store item variant. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/StoreItemVariantRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StoreItemVariantRequest' multipart/form-data: schema: $ref: '#/components/schemas/StoreItemVariantRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoreItemVariant' description: '' patch: operationId: admin_event_store_item_variants_partial_update description: Staff viewset for managing store item variants. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store item variant. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedStoreItemVariantRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedStoreItemVariantRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedStoreItemVariantRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoreItemVariant' description: '' delete: operationId: admin_event_store_item_variants_destroy description: Staff viewset for managing store item variants. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store item variant. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/store/items/: get: operationId: admin_event_store_items_list description: Staff viewset for managing store items. parameters: - in: query name: available schema: type: boolean - in: query name: event schema: type: integer - in: path name: event_pk schema: type: integer required: true - in: query name: is_secret schema: type: boolean - in: query name: is_ticket schema: type: boolean - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedStoreItemList' description: '' post: operationId: admin_event_store_items_create description: Staff viewset for managing store items. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/StoreItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StoreItemRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/StoreItem' description: '' /api/v2/admin/event/{event_pk}/store/items/{id}/: get: operationId: admin_event_store_items_retrieve description: Staff viewset for managing store items. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store item. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoreItem' description: '' put: operationId: admin_event_store_items_update description: Staff viewset for managing store items. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store item. required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/StoreItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StoreItemRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoreItem' description: '' patch: operationId: admin_event_store_items_partial_update description: Staff viewset for managing store items. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store item. required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/PatchedStoreItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedStoreItemRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoreItem' description: '' delete: operationId: admin_event_store_items_destroy description: Staff viewset for managing store items. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store item. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/store/receipts/: get: operationId: admin_event_store_receipts_list description: |- Staff viewset for managing receipts. Custom actions: - POST /receipts//resend/: Resend the receipt email parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string - in: query name: sent schema: type: string format: date-time - in: query name: transaction schema: type: integer tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedReceiptList' description: '' post: operationId: admin_event_store_receipts_create description: |- Staff viewset for managing receipts. Custom actions: - POST /receipts//resend/: Resend the receipt email parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/ReceiptRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ReceiptRequest' multipart/form-data: schema: $ref: '#/components/schemas/ReceiptRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/Receipt' description: '' /api/v2/admin/event/{event_pk}/store/receipts/{id}/: get: operationId: admin_event_store_receipts_retrieve description: |- Staff viewset for managing receipts. Custom actions: - POST /receipts//resend/: Resend the receipt email parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this receipt. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Receipt' description: '' put: operationId: admin_event_store_receipts_update description: |- Staff viewset for managing receipts. Custom actions: - POST /receipts//resend/: Resend the receipt email parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this receipt. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/ReceiptRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ReceiptRequest' multipart/form-data: schema: $ref: '#/components/schemas/ReceiptRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Receipt' description: '' patch: operationId: admin_event_store_receipts_partial_update description: |- Staff viewset for managing receipts. Custom actions: - POST /receipts//resend/: Resend the receipt email parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this receipt. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedReceiptRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedReceiptRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedReceiptRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Receipt' description: '' delete: operationId: admin_event_store_receipts_destroy description: |- Staff viewset for managing receipts. Custom actions: - POST /receipts//resend/: Resend the receipt email parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this receipt. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/store/receipts/{id}/resend/: post: operationId: admin_event_store_receipts_resend_create description: Resend the receipt email. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this receipt. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/ReceiptRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ReceiptRequest' multipart/form-data: schema: $ref: '#/components/schemas/ReceiptRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Receipt' description: '' /api/v2/admin/event/{event_pk}/store/summary/: get: operationId: admin_event_store_summary_list description: |- Staff viewset for aggregated store sales summary. Returns pre-aggregated statistics (totals, per-item breakdown, sales per day, sales per hour) without exposing any PII. Permission is derived from StoreItem (store.view_storeitem). parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoreSummary' description: '' /api/v2/admin/event/{event_pk}/store/transaction_items/: get: operationId: admin_event_store_transaction_items_list description: Staff viewset for managing transaction items. parameters: - in: path name: event_pk schema: type: integer required: true - in: query name: item schema: type: integer - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string - in: query name: transaction schema: type: integer - in: query name: variant schema: type: integer tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTransactionItemList' description: '' post: operationId: admin_event_store_transaction_items_create description: Staff viewset for managing transaction items. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/TransactionItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TransactionItemRequest' multipart/form-data: schema: $ref: '#/components/schemas/TransactionItemRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/TransactionItem' description: '' /api/v2/admin/event/{event_pk}/store/transaction_items/{id}/: get: operationId: admin_event_store_transaction_items_retrieve description: Staff viewset for managing transaction items. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this transaction item. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TransactionItem' description: '' put: operationId: admin_event_store_transaction_items_update description: Staff viewset for managing transaction items. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this transaction item. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/TransactionItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TransactionItemRequest' multipart/form-data: schema: $ref: '#/components/schemas/TransactionItemRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TransactionItem' description: '' patch: operationId: admin_event_store_transaction_items_partial_update description: Staff viewset for managing transaction items. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this transaction item. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedTransactionItemRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedTransactionItemRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedTransactionItemRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TransactionItem' description: '' delete: operationId: admin_event_store_transaction_items_destroy description: Staff viewset for managing transaction items. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this transaction item. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/store/transactions/: get: operationId: admin_event_store_transactions_list description: Staff viewset for managing store transactions. parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string - in: query name: time_cancelled schema: type: string format: date-time - in: query name: time_paid schema: type: string format: date-time tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedStoreTransactionList' description: '' post: operationId: admin_event_store_transactions_create description: Staff viewset for managing store transactions. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/StoreTransactionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StoreTransactionRequest' multipart/form-data: schema: $ref: '#/components/schemas/StoreTransactionRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/StoreTransaction' description: '' /api/v2/admin/event/{event_pk}/store/transactions/{id}/: get: operationId: admin_event_store_transactions_retrieve description: Staff viewset for managing store transactions. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store transaction. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoreTransaction' description: '' put: operationId: admin_event_store_transactions_update description: Staff viewset for managing store transactions. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store transaction. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/StoreTransactionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/StoreTransactionRequest' multipart/form-data: schema: $ref: '#/components/schemas/StoreTransactionRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoreTransaction' description: '' patch: operationId: admin_event_store_transactions_partial_update description: Staff viewset for managing store transactions. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store transaction. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedStoreTransactionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedStoreTransactionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedStoreTransactionRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoreTransaction' description: '' delete: operationId: admin_event_store_transactions_destroy description: Staff viewset for managing store transactions. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this store transaction. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/event/{event_pk}/uploads/files/: get: operationId: admin_event_uploads_files_list description: |- Uploaded files for an event. Staff with admin_upload permissions can manage uploaded files. parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string - in: query name: user schema: type: integer tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedUploadedFileList' description: '' post: operationId: admin_event_uploads_files_create description: |- Uploaded files for an event. Staff with admin_upload permissions can manage uploaded files. parameters: - in: path name: event_pk schema: type: integer required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/UploadedFileRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UploadedFileRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/UploadedFile' description: '' /api/v2/admin/event/{event_pk}/uploads/files/{id}/: get: operationId: admin_event_uploads_files_retrieve description: |- Uploaded files for an event. Staff with admin_upload permissions can manage uploaded files. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this uploaded file. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UploadedFile' description: '' put: operationId: admin_event_uploads_files_update description: |- Uploaded files for an event. Staff with admin_upload permissions can manage uploaded files. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this uploaded file. required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/UploadedFileRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UploadedFileRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UploadedFile' description: '' patch: operationId: admin_event_uploads_files_partial_update description: |- Uploaded files for an event. Staff with admin_upload permissions can manage uploaded files. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this uploaded file. required: true tags: - admin requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/PatchedUploadedFileRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUploadedFileRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UploadedFile' description: '' delete: operationId: admin_event_uploads_files_destroy description: |- Uploaded files for an event. Staff with admin_upload permissions can manage uploaded files. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this uploaded file. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/events/: get: operationId: admin_events_list description: Staff viewset for managing events. parameters: - in: query name: archived schema: type: boolean - in: query name: hidden schema: type: boolean - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedEventList' description: '' post: operationId: admin_events_create description: Staff viewset for managing events. tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/EventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/EventRequest' multipart/form-data: schema: $ref: '#/components/schemas/EventRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/Event' description: '' /api/v2/admin/events/{id}/: get: operationId: admin_events_retrieve description: Staff viewset for managing events. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this event. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Event' description: '' put: operationId: admin_events_update description: Staff viewset for managing events. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this event. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/EventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/EventRequest' multipart/form-data: schema: $ref: '#/components/schemas/EventRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Event' description: '' patch: operationId: admin_events_partial_update description: Staff viewset for managing events. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this event. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedEventRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedEventRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedEventRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Event' description: '' delete: operationId: admin_events_destroy description: Staff viewset for managing events. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this event. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/admin/groups/: get: operationId: admin_groups_list description: Read-only viewset for listing groups. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedGroupList' description: '' /api/v2/admin/groups/{id}/: get: operationId: admin_groups_retrieve description: Read-only viewset for listing groups. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this group. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/Group' description: '' /api/v2/admin/users/: get: operationId: admin_users_list description: Staff viewset for managing users. parameters: - in: query name: email schema: type: string - in: query name: is_active schema: type: boolean - in: query name: is_staff schema: type: boolean - in: query name: is_superuser schema: type: boolean - in: query name: is_system schema: type: boolean - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string - in: query name: username schema: type: string tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedUserList' description: '' post: operationId: admin_users_create description: Staff viewset for managing users. tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/UserRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/User' description: '' /api/v2/admin/users/{id}/: get: operationId: admin_users_retrieve description: Staff viewset for managing users. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this user. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/User' description: '' put: operationId: admin_users_update description: Staff viewset for managing users. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this user. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/UserRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/User' description: '' patch: operationId: admin_users_partial_update description: Staff viewset for managing users. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this user. required: true tags: - admin requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUserRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUserRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUserRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/User' description: '' delete: operationId: admin_users_destroy description: Staff viewset for managing users. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this user. required: true tags: - admin security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/auth/login/: post: operationId: login description: Authenticate a user with username and password. tags: - auth requestBody: content: application/json: schema: $ref: '#/components/schemas/UserLoginRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserLoginRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserLoginRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] - {} responses: '200': description: No response body '400': description: No response body '401': description: No response body /api/v2/auth/logout/: post: operationId: logout description: End the current user session. tags: - auth security: - knoxApiToken: [] - cookieAuth: [] responses: '200': description: No response body /api/v2/auth/social_urls/: get: operationId: get_social_auth_urls description: |- Returns a list of URLs that can be used to begin a social authentication process. Also ensures the CSRF cookie is set, which is needed for the SPA login flow. Without this, the first login attempt in a fresh browser session would fail because no Django template renders {% csrf_token %} to trigger cookie creation. parameters: - in: query name: next schema: type: string tags: - auth security: - {} responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/SocialAuthURL' description: '' /api/v2/event/{event_pk}/user/kompomaatti/entries/: get: operationId: event_user_kompomaatti_entries_list description: |- Manage the current user's own compo entries. Supports ordering by rank and score. parameters: - in: query name: compo schema: type: integer - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedUserCompoEntryList' description: '' post: operationId: event_user_kompomaatti_entries_create description: |- Manage the current user's own compo entries. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true tags: - event requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/UserCompoEntryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserCompoEntryRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/UserCompoEntry' description: '' /api/v2/event/{event_pk}/user/kompomaatti/entries/{id}/: get: operationId: event_user_kompomaatti_entries_retrieve description: |- Manage the current user's own compo entries. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this entry. required: true tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserCompoEntry' description: '' put: operationId: event_user_kompomaatti_entries_update description: |- Manage the current user's own compo entries. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this entry. required: true tags: - event requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/UserCompoEntryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserCompoEntryRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserCompoEntry' description: '' patch: operationId: event_user_kompomaatti_entries_partial_update description: |- Manage the current user's own compo entries. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this entry. required: true tags: - event requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/PatchedUserCompoEntryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUserCompoEntryRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserCompoEntry' description: '' delete: operationId: event_user_kompomaatti_entries_destroy description: |- Manage the current user's own compo entries. Supports ordering by rank and score. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this entry. required: true tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/event/{event_pk}/user/kompomaatti/participations/: get: operationId: event_user_kompomaatti_participations_list description: |- API endpoint for managing user's own competition participations. Users can create, read, update and delete their own participations within the allowed time window (before participation_end). parameters: - in: query name: competition schema: type: integer - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedUserCompetitionParticipationList' description: '' post: operationId: event_user_kompomaatti_participations_create description: |- API endpoint for managing user's own competition participations. Users can create, read, update and delete their own participations within the allowed time window (before participation_end). parameters: - in: path name: event_pk schema: type: integer required: true tags: - event requestBody: content: application/json: schema: $ref: '#/components/schemas/UserCompetitionParticipationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserCompetitionParticipationRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserCompetitionParticipationRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/UserCompetitionParticipation' description: '' /api/v2/event/{event_pk}/user/kompomaatti/participations/{id}/: get: operationId: event_user_kompomaatti_participations_retrieve description: |- API endpoint for managing user's own competition participations. Users can create, read, update and delete their own participations within the allowed time window (before participation_end). parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition participation. required: true tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserCompetitionParticipation' description: '' put: operationId: event_user_kompomaatti_participations_update description: |- API endpoint for managing user's own competition participations. Users can create, read, update and delete their own participations within the allowed time window (before participation_end). parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition participation. required: true tags: - event requestBody: content: application/json: schema: $ref: '#/components/schemas/UserCompetitionParticipationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserCompetitionParticipationRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserCompetitionParticipationRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserCompetitionParticipation' description: '' patch: operationId: event_user_kompomaatti_participations_partial_update description: |- API endpoint for managing user's own competition participations. Users can create, read, update and delete their own participations within the allowed time window (before participation_end). parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition participation. required: true tags: - event requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUserCompetitionParticipationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUserCompetitionParticipationRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUserCompetitionParticipationRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserCompetitionParticipation' description: '' delete: operationId: event_user_kompomaatti_participations_destroy description: |- API endpoint for managing user's own competition participations. Users can create, read, update and delete their own participations within the allowed time window (before participation_end). parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition participation. required: true tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/event/{event_pk}/user/kompomaatti/ticket_vote_codes/: get: operationId: event_user_kompomaatti_ticket_vote_codes_list description: |- API endpoint for managing user's own ticket vote codes. Users can associate a ticket key (from their purchase) to their account to gain voting rights. This is a create/read-only endpoint - users cannot update or delete their vote codes. To create a vote code, POST with: - ticket_key: At least 8 characters of the ticket key (from purchase receipt) The ticket_key must: - Match a paid ticket for the specified event - Not already be associated with another user parameters: - in: query name: event schema: type: integer - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedUserTicketVoteCodeList' description: '' post: operationId: event_user_kompomaatti_ticket_vote_codes_create description: |- API endpoint for managing user's own ticket vote codes. Users can associate a ticket key (from their purchase) to their account to gain voting rights. This is a create/read-only endpoint - users cannot update or delete their vote codes. To create a vote code, POST with: - ticket_key: At least 8 characters of the ticket key (from purchase receipt) The ticket_key must: - Match a paid ticket for the specified event - Not already be associated with another user parameters: - in: path name: event_pk schema: type: integer required: true tags: - event requestBody: content: application/json: schema: $ref: '#/components/schemas/UserTicketVoteCodeRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserTicketVoteCodeRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserTicketVoteCodeRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/UserTicketVoteCode' description: '' /api/v2/event/{event_pk}/user/kompomaatti/ticket_vote_codes/{id}/: get: operationId: event_user_kompomaatti_ticket_vote_codes_retrieve description: |- API endpoint for managing user's own ticket vote codes. Users can associate a ticket key (from their purchase) to their account to gain voting rights. This is a create/read-only endpoint - users cannot update or delete their vote codes. To create a vote code, POST with: - ticket_key: At least 8 characters of the ticket key (from purchase receipt) The ticket_key must: - Match a paid ticket for the specified event - Not already be associated with another user parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this ticket vote code. required: true tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserTicketVoteCode' description: '' /api/v2/event/{event_pk}/user/kompomaatti/vote_code_requests/: get: operationId: event_user_kompomaatti_vote_code_requests_list description: |- API endpoint for managing user's own vote code requests. Users can create, read, and update their own vote code requests. Delete is not supported (requests can only be rejected by staff). Status field meanings: - 0: Pending - 1: Accepted (voting right granted) - 2: Rejected (no voting right) Note: The status field is read-only for users. Only staff can change it. parameters: - in: query name: event schema: type: integer - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - in: query name: status schema: type: integer enum: - 0 - 1 - 2 description: |- * `0` - Pending approval * `1` - Approved * `2` - Rejected tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedUserVoteCodeRequestList' description: '' post: operationId: event_user_kompomaatti_vote_code_requests_create description: |- API endpoint for managing user's own vote code requests. Users can create, read, and update their own vote code requests. Delete is not supported (requests can only be rejected by staff). Status field meanings: - 0: Pending - 1: Accepted (voting right granted) - 2: Rejected (no voting right) Note: The status field is read-only for users. Only staff can change it. parameters: - in: path name: event_pk schema: type: integer required: true tags: - event requestBody: content: application/json: schema: $ref: '#/components/schemas/UserVoteCodeRequestRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserVoteCodeRequestRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserVoteCodeRequestRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/UserVoteCodeRequest' description: '' /api/v2/event/{event_pk}/user/kompomaatti/vote_code_requests/{id}/: get: operationId: event_user_kompomaatti_vote_code_requests_retrieve description: |- API endpoint for managing user's own vote code requests. Users can create, read, and update their own vote code requests. Delete is not supported (requests can only be rejected by staff). Status field meanings: - 0: Pending - 1: Accepted (voting right granted) - 2: Rejected (no voting right) Note: The status field is read-only for users. Only staff can change it. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this vote code request. required: true tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserVoteCodeRequest' description: '' put: operationId: event_user_kompomaatti_vote_code_requests_update description: |- API endpoint for managing user's own vote code requests. Users can create, read, and update their own vote code requests. Delete is not supported (requests can only be rejected by staff). Status field meanings: - 0: Pending - 1: Accepted (voting right granted) - 2: Rejected (no voting right) Note: The status field is read-only for users. Only staff can change it. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this vote code request. required: true tags: - event requestBody: content: application/json: schema: $ref: '#/components/schemas/UserVoteCodeRequestRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserVoteCodeRequestRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserVoteCodeRequestRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserVoteCodeRequest' description: '' patch: operationId: event_user_kompomaatti_vote_code_requests_partial_update description: |- API endpoint for managing user's own vote code requests. Users can create, read, and update their own vote code requests. Delete is not supported (requests can only be rejected by staff). Status field meanings: - 0: Pending - 1: Accepted (voting right granted) - 2: Rejected (no voting right) Note: The status field is read-only for users. Only staff can change it. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this vote code request. required: true tags: - event requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUserVoteCodeRequestRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUserVoteCodeRequestRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUserVoteCodeRequestRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserVoteCodeRequest' description: '' /api/v2/event/{event_pk}/user/kompomaatti/votes/: get: operationId: event_user_kompomaatti_votes_list description: |- API endpoint for managing user's votes. Users submit a ranked list of entries to vote for a compo. The order of entries in the list determines the ranking (first = highest rank). To vote, POST with: - compo: The compo ID - entries: List of entry IDs in order of preference Re-submitting votes for the same compo replaces previous votes. Users can only vote if they have voting rights (TicketVoteCode or approved VoteCodeRequest). Votes can only be submitted while the compo voting is open. Note: Update and delete are not supported. To change votes, simply POST again. parameters: - in: query name: compo schema: type: integer - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedUserVoteGroupList' description: '' post: operationId: event_user_kompomaatti_votes_create description: |- API endpoint for managing user's votes. Users submit a ranked list of entries to vote for a compo. The order of entries in the list determines the ranking (first = highest rank). To vote, POST with: - compo: The compo ID - entries: List of entry IDs in order of preference Re-submitting votes for the same compo replaces previous votes. Users can only vote if they have voting rights (TicketVoteCode or approved VoteCodeRequest). Votes can only be submitted while the compo voting is open. Note: Update and delete are not supported. To change votes, simply POST again. parameters: - in: path name: event_pk schema: type: integer required: true tags: - event requestBody: content: application/json: schema: $ref: '#/components/schemas/UserVoteGroupRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserVoteGroupRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserVoteGroupRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/UserVoteGroup' description: '' /api/v2/event/{event_pk}/user/kompomaatti/votes/{id}/: get: operationId: event_user_kompomaatti_votes_retrieve description: |- API endpoint for managing user's votes. Users submit a ranked list of entries to vote for a compo. The order of entries in the list determines the ranking (first = highest rank). To vote, POST with: - compo: The compo ID - entries: List of entry IDs in order of preference Re-submitting votes for the same compo replaces previous votes. Users can only vote if they have voting rights (TicketVoteCode or approved VoteCodeRequest). Votes can only be submitted while the compo voting is open. Note: Update and delete are not supported. To change votes, simply POST again. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this vote group. required: true tags: - event security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserVoteGroup' description: '' /api/v2/notifications/subscriptions/: get: operationId: notifications_subscriptions_list description: |- Viewset for managing the current user's push notification subscriptions. Supports create (subscribe), destroy (unsubscribe), and list (view subscriptions). Subscriptions are scoped to the current user. Create performs upsert by endpoint. tags: - notifications security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/PushSubscription' description: '' post: operationId: notifications_subscriptions_create description: |- Create or update a push subscription (upsert by endpoint). A push endpoint is a browser-level resource — the same physical push channel regardless of which user subscribed. The lookup uses endpoint alone (matching the model's unique constraint) so that if a different user subscribes from the same browser, the subscription is reassigned to them rather than creating a duplicate that would cause the browser to show the same notification twice. tags: - notifications requestBody: content: application/json: schema: $ref: '#/components/schemas/PushSubscriptionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PushSubscriptionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PushSubscriptionRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/PushSubscription' description: '' /api/v2/notifications/subscriptions/{id}/: delete: operationId: notifications_subscriptions_destroy description: |- Viewset for managing the current user's push notification subscriptions. Supports create (subscribe), destroy (unsubscribe), and list (view subscriptions). Subscriptions are scoped to the current user. Create performs upsert by endpoint. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this push subscription. required: true tags: - notifications security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/public/blog_entries/: get: operationId: public_blog_entries_list description: Public read-only endpoint for blog entries. Only public entries are shown. parameters: - in: query name: event schema: type: integer - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPublicBlogEntryList' description: '' /api/v2/public/blog_entries/{id}/: get: operationId: public_blog_entries_retrieve description: Public read-only endpoint for blog entries. Only public entries are shown. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this blog entry. required: true tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicBlogEntry' description: '' /api/v2/public/event/{event_pk}/archive/video_categories/: get: operationId: public_event_archive_video_categories_list description: |- Public read-only endpoint for archive video categories. Only categories from archived events are shown. parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPublicOtherVideoCategoryList' description: '' /api/v2/public/event/{event_pk}/archive/video_categories/{id}/: get: operationId: public_event_archive_video_categories_retrieve description: |- Public read-only endpoint for archive video categories. Only categories from archived events are shown. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this other video category. required: true tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicOtherVideoCategory' description: '' /api/v2/public/event/{event_pk}/archive/videos/: get: operationId: public_event_archive_videos_list description: Public read-only endpoint for archive videos. Only videos from archived events are shown. parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPublicOtherVideoList' description: '' /api/v2/public/event/{event_pk}/archive/videos/{id}/: get: operationId: public_event_archive_videos_retrieve description: Public read-only endpoint for archive videos. Only videos from archived events are shown. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this other video. required: true tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicOtherVideo' description: '' /api/v2/public/event/{event_pk}/kompomaatti/competition_participations/: get: operationId: public_event_kompomaatti_competition_participations_list description: |- Public read-only endpoint for competition participations. Only participations from active competitions that have started are shown. parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPublicCompetitionParticipationList' description: '' /api/v2/public/event/{event_pk}/kompomaatti/competition_participations/{id}/: get: operationId: public_event_kompomaatti_competition_participations_retrieve description: |- Public read-only endpoint for competition participations. Only participations from active competitions that have started are shown. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition participation. required: true tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicCompetitionParticipation' description: '' /api/v2/public/event/{event_pk}/kompomaatti/competitions/: get: operationId: public_event_kompomaatti_competitions_list description: Public read-only endpoint for competitions. Only active competitions are shown. parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPublicCompetitionList' description: '' /api/v2/public/event/{event_pk}/kompomaatti/competitions/{id}/: get: operationId: public_event_kompomaatti_competitions_retrieve description: Public read-only endpoint for competitions. Only active competitions are shown. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this competition. required: true tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicCompetition' description: '' /api/v2/public/event/{event_pk}/kompomaatti/compos/: get: operationId: public_event_kompomaatti_compos_list description: Public read-only endpoint for compos. Only active compos are shown. parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPublicCompoList' description: '' /api/v2/public/event/{event_pk}/kompomaatti/compos/{id}/: get: operationId: public_event_kompomaatti_compos_retrieve description: Public read-only endpoint for compos. Only active compos are shown. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this compo. required: true tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicCompo' description: '' /api/v2/public/event/{event_pk}/kompomaatti/entries/: get: operationId: public_event_kompomaatti_entries_list description: |- Public read-only endpoint for compo entries. Only entries from active compos where voting has started (or the event is archived) are shown. Supports ordering by rank and score when results are visible. parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPublicCompoEntryList' description: '' /api/v2/public/event/{event_pk}/kompomaatti/entries/{id}/: get: operationId: public_event_kompomaatti_entries_retrieve description: |- Public read-only endpoint for compo entries. Only entries from active compos where voting has started (or the event is archived) are shown. Supports ordering by rank and score when results are visible. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this entry. required: true tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicCompoEntry' description: '' /api/v2/public/event/{event_pk}/program/events/: get: operationId: public_event_program_events_list description: Public read-only endpoint for program events. Only active events are shown. parameters: - in: path name: event_pk schema: type: integer required: true - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPublicProgramEventList' description: '' /api/v2/public/event/{event_pk}/program/events/{id}/: get: operationId: public_event_program_events_retrieve description: Public read-only endpoint for program events. Only active events are shown. parameters: - in: path name: event_pk schema: type: integer required: true - in: path name: id schema: type: integer description: A unique integer value identifying this programme event. required: true tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicProgramEvent' description: '' /api/v2/public/events/: get: operationId: public_events_list description: Public read-only endpoint for events. parameters: - in: query name: archived schema: type: boolean - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string - name: search required: false in: query description: A search term. schema: type: string tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPublicEventList' description: '' /api/v2/public/events/{id}/: get: operationId: public_events_retrieve description: Public read-only endpoint for events. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this event. required: true tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicEvent' description: '' /api/v2/public/notifications/vapid-key/: get: operationId: public_notifications_vapid_key_retrieve description: Returns the VAPID public key for push subscriptions. tags: - public responses: '200': content: application/json: schema: $ref: '#/components/schemas/VapidPublicKey' description: '' /api/v2/public/store/checkout/: post: operationId: public_store_checkout_create description: |- Public ViewSet for creating store transactions (checkout). This endpoint allows anonymous users to create store transactions. No authentication is required. POST: Create a new transaction and return the payment URL. tags: - public requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicStoreTransactionCheckoutRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicStoreTransactionCheckoutRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicStoreTransactionCheckoutRequest' required: true security: - {} responses: '201': content: application/json: schema: $ref: '#/components/schemas/PublicStoreTransactionCheckout' description: '' /api/v2/public/store/items/: get: operationId: public_store_items_list description: |- Public read-only endpoint for store items. Returns only available store items. Supports secret_key query parameter to reveal hidden items. parameters: - in: query name: event schema: type: integer - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedPublicStoreItemList' description: '' /api/v2/public/store/items/{id}/: get: operationId: public_store_items_retrieve description: |- Public read-only endpoint for store items. Returns only available store items. Supports secret_key query parameter to reveal hidden items. parameters: - in: path name: id schema: type: integer description: A unique integer value identifying this store item. required: true tags: - public security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicStoreItem' description: '' /api/v2/tokens/: get: operationId: tokens_list description: |- Manage API authentication tokens for the current user. Requires knox.view_authtoken permission to list tokens. Requires knox.delete_authtoken permission to delete tokens. Requires knox.add_authtoken permission to create tokens. Users can only see and delete their own tokens. parameters: - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - name: ordering required: false in: query description: Which field to use when ordering the results. schema: type: string tags: - tokens security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAuthTokenList' description: '' /api/v2/tokens/{digest}/: delete: operationId: tokens_destroy description: |- Manage API authentication tokens for the current user. Requires knox.view_authtoken permission to list tokens. Requires knox.delete_authtoken permission to delete tokens. Requires knox.add_authtoken permission to create tokens. Users can only see and delete their own tokens. parameters: - in: path name: digest schema: type: string description: A unique value identifying this auth token. required: true tags: - tokens security: - knoxApiToken: [] - cookieAuth: [] responses: '204': description: No response body /api/v2/tokens/create/: post: operationId: user_tokens_create_token description: Create a new API token. The plain token is returned only once. tags: - tokens requestBody: content: application/json: schema: $ref: '#/components/schemas/AuthTokenCreateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/AuthTokenCreateRequest' multipart/form-data: schema: $ref: '#/components/schemas/AuthTokenCreateRequest' required: true security: - knoxApiToken: [] - cookieAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/AuthTokenCreateResponse' description: '' /api/v2/user_info/: get: operationId: user_info_retrieve description: Retrieve and update the current authenticated user's profile and permissions. tags: - user_info security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserInfo' description: '' patch: operationId: user_info_partial_update description: Retrieve and update the current authenticated user's profile and permissions. tags: - user_info requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUserInfoRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUserInfoRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUserInfoRequest' security: - knoxApiToken: [] - cookieAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/UserInfo' description: '' components: schemas: ActionEnum: enum: - 0 - 1 - 2 - 3 type: integer description: |- * `0` - create * `1` - update * `2` - delete * `3` - access Actor: type: object description: Serializer for the actor (user) who made the change. properties: id: type: integer readOnly: true username: type: string description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. pattern: ^[\w.@+-]+$ maxLength: 150 required: - id - username AlternateEntryFile: type: object description: Staff serializer for alternate entry files (transcoded media). properties: format: type: string readOnly: true url: type: string readOnly: true required: - format - url ArchiverStatus: type: object description: Serializer for archiver status response. properties: is_archived: type: boolean description: Whether the event is visible in the public archive has_non_archived_items: type: boolean description: Whether there are entries/participations not owned by archive user ongoing_activity: type: boolean description: Whether the event is still ongoing votes_unoptimized: type: boolean description: Whether voting results need to be pre-calculated (archive_score/archive_rank not set) old_votes_found: type: boolean description: Whether there are old vote records to clean up required: - has_non_archived_items - is_archived - old_votes_found - ongoing_activity - votes_unoptimized AuthToken: type: object description: Read-only serializer for listing tokens. properties: pk: type: string readOnly: true title: Digest token_key: type: string readOnly: true created: type: string format: date-time readOnly: true expiry: type: string format: date-time readOnly: true nullable: true user: type: integer readOnly: true required: - created - expiry - pk - token_key - user AuthTokenCreateRequest: type: object description: Input serializer for token creation. properties: expiry: type: string format: date-time required: - expiry AuthTokenCreateResponse: type: object description: Response with plain token (shown only once). properties: pk: type: string token_key: type: string token: type: string created: type: string format: date-time expiry: type: string format: date-time required: - created - expiry - pk - token - token_key BlankEnum: enum: - '' BlogEntry: type: object description: |- Serializer for staff - includes all fields. The user field is read-only and set automatically to the current user on create. properties: id: type: integer readOnly: true user: type: integer readOnly: true nullable: true date: type: string format: date-time readOnly: true title: type: string maxLength: 128 text: type: string public: type: boolean event: type: integer created_by: type: string readOnly: true required: - created_by - date - event - id - text - title - user BlogEntryRequest: type: object description: |- Serializer for staff - includes all fields. The user field is read-only and set automatically to the current user on create. properties: title: type: string minLength: 1 maxLength: 128 text: type: string minLength: 1 public: type: boolean event: type: integer required: - event - text - title Competition: type: object description: Staff serializer for competitions. properties: id: type: integer readOnly: true event: type: integer readOnly: true name: type: string maxLength: 32 description: type: string participation_end: type: string format: date-time title: Participation deadline start: type: string format: date-time title: Competition start end: type: string format: date-time nullable: true title: Competition end score_type: type: string maxLength: 8 score_sort: allOf: - $ref: '#/components/schemas/ScoreSortEnum' title: Score sorting minimum: -9223372036854775808 maximum: 9223372036854775807 show_results: type: boolean active: type: boolean hide_from_archive: type: boolean required: - description - event - id - name - participation_end - score_type - start CompetitionParticipation: type: object description: |- Staff serializer for competition participations. Requires queryset to have with_rank() annotation applied. properties: id: type: integer readOnly: true competition: type: integer user: type: integer participant_name: type: string maxLength: 32 score: type: number format: double disqualified: type: boolean disqualified_reason: type: string title: Disqualification reason computed_rank: type: integer readOnly: true required: - competition - computed_rank - id - user CompetitionParticipationRequest: type: object description: |- Staff serializer for competition participations. Requires queryset to have with_rank() annotation applied. properties: competition: type: integer user: type: integer participant_name: type: string minLength: 1 maxLength: 32 score: type: number format: double disqualified: type: boolean disqualified_reason: type: string title: Disqualification reason required: - competition - user CompetitionRequest: type: object description: Staff serializer for competitions. properties: name: type: string minLength: 1 maxLength: 32 description: type: string minLength: 1 participation_end: type: string format: date-time title: Participation deadline start: type: string format: date-time title: Competition start end: type: string format: date-time nullable: true title: Competition end score_type: type: string minLength: 1 maxLength: 8 score_sort: allOf: - $ref: '#/components/schemas/ScoreSortEnum' title: Score sorting minimum: -9223372036854775808 maximum: 9223372036854775807 show_results: type: boolean active: type: boolean hide_from_archive: type: boolean required: - description - name - participation_end - score_type - start Compo: type: object description: Staff serializer for compos. properties: id: type: integer readOnly: true event: type: integer readOnly: true name: type: string maxLength: 32 description: type: string adding_end: type: string format: date-time title: Entry adding deadline editing_end: type: string format: date-time title: Entry editing deadline compo_start: type: string format: date-time title: Compo start time voting_start: type: string format: date-time title: Voting start time voting_end: type: string format: date-time title: Voting end time entry_sizelimit: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Entry size limit source_sizelimit: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Source size limit formats: type: string title: Allowed file extensions maxLength: 128 source_formats: type: string title: Allowed source package extensions maxLength: 128 image_formats: type: string title: Allowed image file extensions maxLength: 128 max_source_size: type: integer readOnly: true max_entry_size: type: integer readOnly: true source_format_list: type: array items: type: string readOnly: true entry_format_list: type: array items: type: string readOnly: true image_format_list: type: array items: type: string readOnly: true active: type: boolean show_voting_results: type: boolean title: Show results entry_view_type: allOf: - $ref: '#/components/schemas/EntryViewTypeEnum' title: Entry presentation minimum: -9223372036854775808 maximum: 9223372036854775807 hide_from_archive: type: boolean hide_from_frontpage: type: boolean title: Hide from front page is_votable: type: boolean title: Votable thumbnail_pref: allOf: - $ref: '#/components/schemas/ThumbnailPrefEnum' title: Thumbnail settings minimum: -9223372036854775808 maximum: 9223372036854775807 required: - adding_end - compo_start - description - editing_end - entry_format_list - event - id - image_format_list - max_entry_size - max_source_size - name - source_format_list - voting_end - voting_start CompoEntry: type: object description: Staff serializer for compo entries. properties: id: type: integer readOnly: true user: type: integer compo: type: integer name: type: string maxLength: 64 description: type: string creator: type: string maxLength: 64 platform: type: string nullable: true maxLength: 128 order_index: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 entryfile: type: string format: uri title: File sourcefile: type: string format: uri nullable: true title: Source code imagefile_original: type: string format: uri nullable: true title: Image entryfile_url: type: string nullable: true readOnly: true sourcefile_url: type: string nullable: true readOnly: true imagefile_original_url: type: string nullable: true readOnly: true imagefile_thumbnail_url: type: string nullable: true readOnly: true imagefile_medium_url: type: string nullable: true readOnly: true youtube_url: type: string nullable: true disqualified: type: boolean disqualified_reason: type: string title: Disqualification reason archive_score: type: number format: double nullable: true title: Score archive_rank: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 nullable: true title: Rank computed_score: type: number format: double description: Return the entry's score. Requires queryset to have with_rank() annotation applied. readOnly: true computed_rank: type: integer description: Return the entry's rank. Requires queryset to have with_rank() annotation applied. readOnly: true alternate_files: type: array items: $ref: '#/components/schemas/AlternateEntryFile' readOnly: true required: - alternate_files - compo - computed_rank - computed_score - creator - description - entryfile - entryfile_url - id - imagefile_medium_url - imagefile_original_url - imagefile_thumbnail_url - name - sourcefile_url - user CompoEntryRequest: type: object description: Staff serializer for compo entries. properties: user: type: integer compo: type: integer name: type: string minLength: 1 maxLength: 64 description: type: string minLength: 1 creator: type: string minLength: 1 maxLength: 64 platform: type: string nullable: true maxLength: 128 order_index: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 entryfile: type: string format: binary title: File sourcefile: type: string format: binary nullable: true title: Source code imagefile_original: type: string format: binary nullable: true title: Image youtube_url: type: string nullable: true disqualified: type: boolean disqualified_reason: type: string title: Disqualification reason archive_score: type: number format: double nullable: true title: Score archive_rank: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 nullable: true title: Rank required: - compo - creator - description - entryfile - name - user CompoRequest: type: object description: Staff serializer for compos. properties: name: type: string minLength: 1 maxLength: 32 description: type: string minLength: 1 adding_end: type: string format: date-time title: Entry adding deadline editing_end: type: string format: date-time title: Entry editing deadline compo_start: type: string format: date-time title: Compo start time voting_start: type: string format: date-time title: Voting start time voting_end: type: string format: date-time title: Voting end time entry_sizelimit: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Entry size limit source_sizelimit: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Source size limit formats: type: string minLength: 1 title: Allowed file extensions maxLength: 128 source_formats: type: string minLength: 1 title: Allowed source package extensions maxLength: 128 image_formats: type: string minLength: 1 title: Allowed image file extensions maxLength: 128 active: type: boolean show_voting_results: type: boolean title: Show results entry_view_type: allOf: - $ref: '#/components/schemas/EntryViewTypeEnum' title: Entry presentation minimum: -9223372036854775808 maximum: 9223372036854775807 hide_from_archive: type: boolean hide_from_frontpage: type: boolean title: Hide from front page is_votable: type: boolean title: Votable thumbnail_pref: allOf: - $ref: '#/components/schemas/ThumbnailPrefEnum' title: Thumbnail settings minimum: -9223372036854775808 maximum: 9223372036854775807 required: - adding_end - compo_start - description - editing_end - name - voting_end - voting_start ContentType: type: object description: Serializer for content type information. properties: id: type: integer readOnly: true app_label: type: string maxLength: 100 model: type: string title: Python model class name maxLength: 100 required: - app_label - id - model CountryEnum: enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CK - CR - CI - HR - CU - CW - CY - CZ - CD - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - KP - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - KR - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - UM - US - UY - UZ - VU - VA - VE - VN - VG - VI - WF - EH - YE - ZM - ZW type: string description: |- * `AF` - Afghanistan * `AX` - Åland Islands * `AL` - Albania * `DZ` - Algeria * `AS` - American Samoa * `AD` - Andorra * `AO` - Angola * `AI` - Anguilla * `AQ` - Antarctica * `AG` - Antigua and Barbuda * `AR` - Argentina * `AM` - Armenia * `AW` - Aruba * `AU` - Australia * `AT` - Austria * `AZ` - Azerbaijan * `BS` - Bahamas (The) * `BH` - Bahrain * `BD` - Bangladesh * `BB` - Barbados * `BY` - Belarus * `BE` - Belgium * `BZ` - Belize * `BJ` - Benin * `BM` - Bermuda * `BT` - Bhutan * `BO` - Bolivia * `BQ` - Bonaire, Sint Eustatius and Saba * `BA` - Bosnia and Herzegovina * `BW` - Botswana * `BV` - Bouvet Island * `BR` - Brazil * `IO` - British Indian Ocean Territory * `BN` - Brunei * `BG` - Bulgaria * `BF` - Burkina Faso * `BI` - Burundi * `CV` - Cabo Verde * `KH` - Cambodia * `CM` - Cameroon * `CA` - Canada * `KY` - Cayman Islands * `CF` - Central African Republic * `TD` - Chad * `CL` - Chile * `CN` - China * `CX` - Christmas Island * `CC` - Cocos (Keeling) Islands * `CO` - Colombia * `KM` - Comoros * `CG` - Congo * `CK` - Cook Islands * `CR` - Costa Rica * `CI` - Côte d'Ivoire * `HR` - Croatia * `CU` - Cuba * `CW` - Curaçao * `CY` - Cyprus * `CZ` - Czechia * `CD` - Democratic Republic of the Congo * `DK` - Denmark * `DJ` - Djibouti * `DM` - Dominica * `DO` - Dominican Republic * `EC` - Ecuador * `EG` - Egypt * `SV` - El Salvador * `GQ` - Equatorial Guinea * `ER` - Eritrea * `EE` - Estonia * `SZ` - Eswatini * `ET` - Ethiopia * `FK` - Falkland Islands (Malvinas) * `FO` - Faroe Islands * `FJ` - Fiji * `FI` - Finland * `FR` - France * `GF` - French Guiana * `PF` - French Polynesia * `TF` - French Southern Territories * `GA` - Gabon * `GM` - Gambia * `GE` - Georgia * `DE` - Germany * `GH` - Ghana * `GI` - Gibraltar * `GR` - Greece * `GL` - Greenland * `GD` - Grenada * `GP` - Guadeloupe * `GU` - Guam * `GT` - Guatemala * `GG` - Guernsey * `GN` - Guinea * `GW` - Guinea-Bissau * `GY` - Guyana * `HT` - Haiti * `HM` - Heard Island and McDonald Islands * `HN` - Honduras * `HK` - Hong Kong * `HU` - Hungary * `IS` - Iceland * `IN` - India * `ID` - Indonesia * `IR` - Iran * `IQ` - Iraq * `IE` - Ireland * `IM` - Isle of Man * `IL` - Israel * `IT` - Italy * `JM` - Jamaica * `JP` - Japan * `JE` - Jersey * `JO` - Jordan * `KZ` - Kazakhstan * `KE` - Kenya * `KI` - Kiribati * `KW` - Kuwait * `KG` - Kyrgyzstan * `LA` - Laos * `LV` - Latvia * `LB` - Lebanon * `LS` - Lesotho * `LR` - Liberia * `LY` - Libya * `LI` - Liechtenstein * `LT` - Lithuania * `LU` - Luxembourg * `MO` - Macao * `MG` - Madagascar * `MW` - Malawi * `MY` - Malaysia * `MV` - Maldives * `ML` - Mali * `MT` - Malta * `MH` - Marshall Islands * `MQ` - Martinique * `MR` - Mauritania * `MU` - Mauritius * `YT` - Mayotte * `MX` - Mexico * `FM` - Micronesia * `MD` - Moldova * `MC` - Monaco * `MN` - Mongolia * `ME` - Montenegro * `MS` - Montserrat * `MA` - Morocco * `MZ` - Mozambique * `MM` - Myanmar * `NA` - Namibia * `NR` - Nauru * `NP` - Nepal * `NL` - Netherlands * `NC` - New Caledonia * `NZ` - New Zealand * `NI` - Nicaragua * `NE` - Niger * `NG` - Nigeria * `NU` - Niue * `NF` - Norfolk Island * `KP` - North Korea * `MK` - North Macedonia * `MP` - Northern Mariana Islands * `NO` - Norway * `OM` - Oman * `PK` - Pakistan * `PW` - Palau * `PS` - Palestine * `PA` - Panama * `PG` - Papua New Guinea * `PY` - Paraguay * `PE` - Peru * `PH` - Philippines * `PN` - Pitcairn * `PL` - Poland * `PT` - Portugal * `PR` - Puerto Rico * `QA` - Qatar * `RE` - Réunion * `RO` - Romania * `RU` - Russia * `RW` - Rwanda * `BL` - Saint Barthélemy * `SH` - Saint Helena * `KN` - Saint Kitts and Nevis * `LC` - Saint Lucia * `MF` - Saint Martin (French part) * `PM` - Saint Pierre and Miquelon * `VC` - Saint Vincent and the Grenadines * `WS` - Samoa * `SM` - San Marino * `ST` - Sao Tome and Principe * `SA` - Saudi Arabia * `SN` - Senegal * `RS` - Serbia * `SC` - Seychelles * `SL` - Sierra Leone * `SG` - Singapore * `SX` - Sint Maarten (Dutch part) * `SK` - Slovakia * `SI` - Slovenia * `SB` - Solomon Islands * `SO` - Somalia * `ZA` - South Africa * `GS` - South Georgia * `KR` - South Korea * `SS` - South Sudan * `ES` - Spain * `LK` - Sri Lanka * `SD` - Sudan * `SR` - Suriname * `SJ` - Svalbard and Jan Mayen * `SE` - Sweden * `CH` - Switzerland * `SY` - Syria * `TW` - Taiwan * `TJ` - Tajikistan * `TZ` - Tanzania * `TH` - Thailand * `TL` - Timor-Leste * `TG` - Togo * `TK` - Tokelau * `TO` - Tonga * `TT` - Trinidad and Tobago * `TN` - Tunisia * `TR` - Türkiye * `TM` - Turkmenistan * `TC` - Turks and Caicos Islands * `TV` - Tuvalu * `UG` - Uganda * `UA` - Ukraine * `AE` - United Arab Emirates * `GB` - United Kingdom * `UM` - United States Minor Outlying Islands * `US` - United States of America * `UY` - Uruguay * `UZ` - Uzbekistan * `VU` - Vanuatu * `VA` - Vatican City * `VE` - Venezuela * `VN` - Vietnam * `VG` - Virgin Islands (British) * `VI` - Virgin Islands (U.S.) * `WF` - Wallis and Futuna * `EH` - Western Sahara * `YE` - Yemen * `ZM` - Zambia * `ZW` - Zimbabwe EntryViewTypeEnum: enum: - 0 - 1 - 2 - 3 type: integer description: |- * `0` - Nothing * `1` - Youtube first, then image * `2` - Image only * `3` - (deprecated) Event: type: object description: Staff serializer for events. properties: id: type: integer readOnly: true name: type: string maxLength: 64 tag: type: string nullable: true title: Short tag maxLength: 8 date: type: string format: date archived: type: boolean hidden: type: boolean mainurl: type: string format: uri title: Event main page maxLength: 200 required: - date - id - name EventRequest: type: object description: Staff serializer for events. properties: name: type: string minLength: 1 maxLength: 64 tag: type: string nullable: true minLength: 1 title: Short tag maxLength: 8 date: type: string format: date archived: type: boolean hidden: type: boolean mainurl: type: string format: uri title: Event main page maxLength: 200 required: - date - name EventTypeEnum: enum: - 0 - 1 type: integer description: |- * `0` - Simple * `1` - Detailed Group: type: object description: Serializer for user groups (used in user info responses). properties: id: type: integer readOnly: true name: type: string maxLength: 150 required: - id - name GroupRequest: type: object description: Serializer for user groups (used in user info responses). properties: name: type: string minLength: 1 maxLength: 150 required: - name LanguageEnum: enum: - en - fi type: string description: |- * `` - Not set * `en` - English * `fi` - Finnish LogEntry: type: object description: Serializer for audit log entries. properties: id: type: integer readOnly: true content_type: allOf: - $ref: '#/components/schemas/ContentType' readOnly: true object_pk: type: string maxLength: 255 object_repr: type: string title: Object representation action: allOf: - $ref: '#/components/schemas/ActionEnum' minimum: 0 maximum: 9223372036854775807 changes: type: object additionalProperties: {} description: Return the changes as a dictionary. readOnly: true timestamp: type: string format: date-time actor: allOf: - $ref: '#/components/schemas/Actor' readOnly: true remote_addr: type: string nullable: true title: Remote address required: - action - actor - changes - content_type - id - object_pk - object_repr NestedReceipt: type: object description: Serializer for Receipt model (nested in transaction response). properties: id: type: integer readOnly: true subject: type: string readOnly: true mail_to: type: string readOnly: true title: Recipient address mail_from: type: string readOnly: true title: Sender address sent: type: string format: date-time readOnly: true nullable: true title: Sent at is_sent: type: boolean readOnly: true content: type: string readOnly: true nullable: true title: Receipt content required: - content - id - is_sent - mail_from - mail_to - sent - subject OtherVideo: type: object description: Staff serializer for archive videos. properties: id: type: integer readOnly: true category: type: integer name: type: string maxLength: 64 description: type: string youtube_url: type: string nullable: true required: - category - description - id - name - youtube_url OtherVideoCategory: type: object description: Staff serializer for archive video categories. properties: id: type: integer readOnly: true event: type: integer readOnly: true name: type: string maxLength: 64 required: - event - id - name OtherVideoCategoryRequest: type: object description: Staff serializer for archive video categories. properties: name: type: string minLength: 1 maxLength: 64 required: - name OtherVideoRequest: type: object description: Staff serializer for archive videos. properties: category: type: integer name: type: string minLength: 1 maxLength: 64 description: type: string minLength: 1 youtube_url: type: string nullable: true required: - category - description - name - youtube_url PaginatedAuthTokenList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/AuthToken' PaginatedBlogEntryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/BlogEntry' PaginatedCompetitionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Competition' PaginatedCompetitionParticipationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/CompetitionParticipation' PaginatedCompoEntryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/CompoEntry' PaginatedCompoList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Compo' PaginatedEventList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Event' PaginatedGroupList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Group' PaginatedLogEntryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/LogEntry' PaginatedOtherVideoCategoryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/OtherVideoCategory' PaginatedOtherVideoList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/OtherVideo' PaginatedProgramEventList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/ProgramEvent' PaginatedPublicBlogEntryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PublicBlogEntry' PaginatedPublicCompetitionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PublicCompetition' PaginatedPublicCompetitionParticipationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PublicCompetitionParticipation' PaginatedPublicCompoEntryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PublicCompoEntry' PaginatedPublicCompoList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PublicCompo' PaginatedPublicEventList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PublicEvent' PaginatedPublicOtherVideoCategoryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PublicOtherVideoCategory' PaginatedPublicOtherVideoList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PublicOtherVideo' PaginatedPublicProgramEventList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PublicProgramEvent' PaginatedPublicStoreItemList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/PublicStoreItem' PaginatedReceiptList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/Receipt' PaginatedStoreItemList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/StoreItem' PaginatedStoreItemVariantList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/StoreItemVariant' PaginatedStoreTransactionList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/StoreTransaction' PaginatedTicketVoteCodeList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/TicketVoteCode' PaginatedTransactionItemList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/TransactionItem' PaginatedUploadedFileList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/UploadedFile' PaginatedUserCompetitionParticipationList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/UserCompetitionParticipation' PaginatedUserCompoEntryList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/UserCompoEntry' PaginatedUserList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/User' PaginatedUserTicketVoteCodeList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/UserTicketVoteCode' PaginatedUserVoteCodeRequestList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/UserVoteCodeRequest' PaginatedUserVoteGroupList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/UserVoteGroup' PaginatedVoteCodeRequestList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/VoteCodeRequest' PatchedBlogEntryRequest: type: object description: |- Serializer for staff - includes all fields. The user field is read-only and set automatically to the current user on create. properties: title: type: string minLength: 1 maxLength: 128 text: type: string minLength: 1 public: type: boolean event: type: integer PatchedCompetitionParticipationRequest: type: object description: |- Staff serializer for competition participations. Requires queryset to have with_rank() annotation applied. properties: competition: type: integer user: type: integer participant_name: type: string minLength: 1 maxLength: 32 score: type: number format: double disqualified: type: boolean disqualified_reason: type: string title: Disqualification reason PatchedCompetitionRequest: type: object description: Staff serializer for competitions. properties: name: type: string minLength: 1 maxLength: 32 description: type: string minLength: 1 participation_end: type: string format: date-time title: Participation deadline start: type: string format: date-time title: Competition start end: type: string format: date-time nullable: true title: Competition end score_type: type: string minLength: 1 maxLength: 8 score_sort: allOf: - $ref: '#/components/schemas/ScoreSortEnum' title: Score sorting minimum: -9223372036854775808 maximum: 9223372036854775807 show_results: type: boolean active: type: boolean hide_from_archive: type: boolean PatchedCompoEntryRequest: type: object description: Staff serializer for compo entries. properties: user: type: integer compo: type: integer name: type: string minLength: 1 maxLength: 64 description: type: string minLength: 1 creator: type: string minLength: 1 maxLength: 64 platform: type: string nullable: true maxLength: 128 order_index: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 entryfile: type: string format: binary title: File sourcefile: type: string format: binary nullable: true title: Source code imagefile_original: type: string format: binary nullable: true title: Image youtube_url: type: string nullable: true disqualified: type: boolean disqualified_reason: type: string title: Disqualification reason archive_score: type: number format: double nullable: true title: Score archive_rank: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 nullable: true title: Rank PatchedCompoRequest: type: object description: Staff serializer for compos. properties: name: type: string minLength: 1 maxLength: 32 description: type: string minLength: 1 adding_end: type: string format: date-time title: Entry adding deadline editing_end: type: string format: date-time title: Entry editing deadline compo_start: type: string format: date-time title: Compo start time voting_start: type: string format: date-time title: Voting start time voting_end: type: string format: date-time title: Voting end time entry_sizelimit: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Entry size limit source_sizelimit: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Source size limit formats: type: string minLength: 1 title: Allowed file extensions maxLength: 128 source_formats: type: string minLength: 1 title: Allowed source package extensions maxLength: 128 image_formats: type: string minLength: 1 title: Allowed image file extensions maxLength: 128 active: type: boolean show_voting_results: type: boolean title: Show results entry_view_type: allOf: - $ref: '#/components/schemas/EntryViewTypeEnum' title: Entry presentation minimum: -9223372036854775808 maximum: 9223372036854775807 hide_from_archive: type: boolean hide_from_frontpage: type: boolean title: Hide from front page is_votable: type: boolean title: Votable thumbnail_pref: allOf: - $ref: '#/components/schemas/ThumbnailPrefEnum' title: Thumbnail settings minimum: -9223372036854775808 maximum: 9223372036854775807 PatchedEventRequest: type: object description: Staff serializer for events. properties: name: type: string minLength: 1 maxLength: 64 tag: type: string nullable: true minLength: 1 title: Short tag maxLength: 8 date: type: string format: date archived: type: boolean hidden: type: boolean mainurl: type: string format: uri title: Event main page maxLength: 200 PatchedOtherVideoCategoryRequest: type: object description: Staff serializer for archive video categories. properties: name: type: string minLength: 1 maxLength: 64 PatchedOtherVideoRequest: type: object description: Staff serializer for archive videos. properties: category: type: integer name: type: string minLength: 1 maxLength: 64 description: type: string minLength: 1 youtube_url: type: string nullable: true PatchedProgramEventRequest: type: object description: Staff serializer for programme events. properties: start: type: string format: date-time end: type: string format: date-time nullable: true title: type: string minLength: 1 maxLength: 128 description: type: string presenters: type: string maxLength: 256 presenters_titles: type: string title: Titles maxLength: 256 place: type: string maxLength: 64 icon_original: type: string format: binary title: Image 1 icon2_original: type: string format: binary title: Image 2 email: type: string format: email maxLength: 254 home_url: type: string format: uri maxLength: 200 twitter_url: type: string format: uri title: Twitter maxLength: 200 github_url: type: string format: uri title: Github maxLength: 200 facebook_url: type: string format: uri title: Facebook maxLength: 200 linkedin_url: type: string format: uri title: LinkedIn maxLength: 200 wiki_url: type: string format: uri title: Wikipedia maxLength: 200 event_type: allOf: - $ref: '#/components/schemas/EventTypeEnum' minimum: -9223372036854775808 maximum: 9223372036854775807 active: type: boolean PatchedReceiptRequest: type: object description: Serializer for Receipt model (staff access). properties: transaction: type: integer nullable: true subject: type: string minLength: 1 maxLength: 256 mail_to: type: string minLength: 1 title: Recipient address maxLength: 256 mail_from: type: string minLength: 1 title: Sender address maxLength: 256 params: type: string nullable: true minLength: 1 title: Send parameters content: type: string nullable: true minLength: 1 title: Receipt content PatchedStoreItemRequest: type: object description: Staff serializer for StoreItem model. properties: name: type: string minLength: 1 title: Product name maxLength: 255 description: type: string minLength: 1 title: Product description price: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ title: Product price max: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Available quantity available: type: boolean title: Available for purchase imagefile_original: type: string format: binary nullable: true title: Product image max_per_order: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Maximum per order sort_index: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Sort order discount_amount: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Discount threshold discount_percentage: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 is_ticket: type: boolean title: Product is a ticket is_secret: type: boolean title: Product is secret secret_key: type: string maxLength: 255 PatchedStoreItemVariantRequest: type: object description: Staff serializer for store item variants. properties: item: type: integer name: type: string minLength: 1 title: Variant name maxLength: 32 PatchedStoreTransactionRequest: type: object description: Serializer for StoreTransaction model (staff access). properties: time_created: type: string format: date-time nullable: true title: Created at time_paid: type: string format: date-time nullable: true title: Payment confirmed at time_pending: type: string format: date-time nullable: true title: Payment initiated at time_cancelled: type: string format: date-time nullable: true title: Cancelled at payment_method_name: type: string title: Payment method maxLength: 32 firstname: type: string minLength: 1 title: First name maxLength: 64 lastname: type: string minLength: 1 title: Last name maxLength: 64 company: type: string maxLength: 128 email: type: string format: email minLength: 1 maxLength: 255 telephone: type: string maxLength: 64 mobile: type: string title: Mobile phone maxLength: 64 street: type: string minLength: 1 title: Street address maxLength: 128 postalcode: type: string minLength: 1 title: Postal code maxLength: 16 city: type: string minLength: 1 maxLength: 64 country: $ref: '#/components/schemas/CountryEnum' information: type: string title: Additional information PatchedTransactionItemRequest: type: object description: Serializer for TransactionItem model (staff access). properties: item: type: integer title: Product variant: type: integer nullable: true title: Product variant transaction: type: integer time_delivered: type: string format: date-time nullable: true title: Delivery time purchase_price: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ title: Product price original_price: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ title: Original product price PatchedUploadedFileRequest: type: object description: Staff serializer for uploaded files. properties: user: type: integer nullable: true description: type: string file: type: string format: binary PatchedUserCompetitionParticipationRequest: type: object description: User serializer for managing own competition participations. properties: competition: type: integer participant_name: type: string minLength: 1 maxLength: 32 PatchedUserCompoEntryRequest: type: object description: User serializer for managing own compo entries. properties: compo: type: integer name: type: string minLength: 1 maxLength: 64 description: type: string minLength: 1 creator: type: string minLength: 1 maxLength: 64 platform: type: string nullable: true maxLength: 128 entryfile: type: string format: binary writeOnly: true title: File sourcefile: type: string format: binary writeOnly: true nullable: true title: Source code imagefile_original: type: string format: binary writeOnly: true nullable: true title: Image youtube_url: type: string nullable: true PatchedUserInfoRequest: type: object description: Serializer for the authenticated user's own profile and permissions. properties: first_name: type: string maxLength: 150 last_name: type: string maxLength: 150 language: oneOf: - $ref: '#/components/schemas/LanguageEnum' - $ref: '#/components/schemas/BlankEnum' otherinfo: type: string notify_vote_code_requests: type: boolean notify_program_events: type: boolean notify_compo_starts: type: boolean notify_competition_starts: type: boolean PatchedUserRequest: type: object description: Staff serializer for users, includes all fields for admin management. properties: username: type: string minLength: 1 description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. pattern: ^[\w.@+-]+$ maxLength: 150 first_name: type: string maxLength: 150 last_name: type: string maxLength: 150 language: oneOf: - $ref: '#/components/schemas/LanguageEnum' - $ref: '#/components/schemas/BlankEnum' is_active: type: boolean title: Active description: Designates whether this user should be treated as active. Unselect this instead of deleting accounts. PatchedUserVoteCodeRequestRequest: type: object description: |- Serializer for user's own vote code requests. Users can create and read their own vote code requests. The status field is read-only for users (only staff can change it). Event and user are set by the viewset, not from the request body. Status values: - 0: Pending - 1: Accepted (voting right granted) - 2: Rejected (no voting right) properties: text: type: string minLength: 1 title: Description PatchedVoteCodeRequestRequest: type: object description: Staff serializer for vote code requests. properties: user: type: integer text: type: string minLength: 1 title: Description status: allOf: - $ref: '#/components/schemas/StatusEnum' minimum: -9223372036854775808 maximum: 9223372036854775807 PaymentMethodEnum: enum: - -1 - 1 type: integer description: |- * `-1` - -1 * `1` - 1 ProgramEvent: type: object description: Staff serializer for programme events. properties: id: type: integer readOnly: true event: type: integer readOnly: true start: type: string format: date-time end: type: string format: date-time nullable: true title: type: string maxLength: 128 description: type: string presenters: type: string maxLength: 256 presenters_titles: type: string title: Titles maxLength: 256 place: type: string maxLength: 64 icon_original: type: string format: uri title: Image 1 icon_small_url: type: string nullable: true description: Return URL for small icon thumbnail, or None if no icon exists. readOnly: true icon2_original: type: string format: uri title: Image 2 icon2_small_url: type: string nullable: true description: Return URL for small icon2 thumbnail, or None if no icon2 exists. readOnly: true email: type: string format: email maxLength: 254 home_url: type: string format: uri maxLength: 200 twitter_url: type: string format: uri title: Twitter maxLength: 200 github_url: type: string format: uri title: Github maxLength: 200 facebook_url: type: string format: uri title: Facebook maxLength: 200 linkedin_url: type: string format: uri title: LinkedIn maxLength: 200 wiki_url: type: string format: uri title: Wikipedia maxLength: 200 event_type: allOf: - $ref: '#/components/schemas/EventTypeEnum' minimum: -9223372036854775808 maximum: 9223372036854775807 active: type: boolean required: - event - icon2_small_url - icon_small_url - id - start - title ProgramEventRequest: type: object description: Staff serializer for programme events. properties: start: type: string format: date-time end: type: string format: date-time nullable: true title: type: string minLength: 1 maxLength: 128 description: type: string presenters: type: string maxLength: 256 presenters_titles: type: string title: Titles maxLength: 256 place: type: string maxLength: 64 icon_original: type: string format: binary title: Image 1 icon2_original: type: string format: binary title: Image 2 email: type: string format: email maxLength: 254 home_url: type: string format: uri maxLength: 200 twitter_url: type: string format: uri title: Twitter maxLength: 200 github_url: type: string format: uri title: Github maxLength: 200 facebook_url: type: string format: uri title: Facebook maxLength: 200 linkedin_url: type: string format: uri title: LinkedIn maxLength: 200 wiki_url: type: string format: uri title: Wikipedia maxLength: 200 event_type: allOf: - $ref: '#/components/schemas/EventTypeEnum' minimum: -9223372036854775808 maximum: 9223372036854775807 active: type: boolean required: - start - title PublicAlternateEntryFile: type: object description: Public read-only serializer for alternate entry files (transcoded media). properties: format: type: string readOnly: true url: type: string readOnly: true required: - format - url PublicBlogEntry: type: object description: Serializer for public blog entries - excludes user, public, and created_by fields properties: id: type: integer readOnly: true date: type: string format: date-time title: type: string maxLength: 128 text: type: string event: type: integer required: - event - id - text - title PublicCompetition: type: object description: Public read-only serializer for competitions. properties: id: type: integer readOnly: true event: type: integer name: type: string maxLength: 32 description: type: string participation_end: type: string format: date-time title: Participation deadline start: type: string format: date-time title: Competition start end: type: string format: date-time nullable: true title: Competition end score_type: type: string maxLength: 8 score_sort: allOf: - $ref: '#/components/schemas/ScoreSortEnum' title: Score sorting minimum: -9223372036854775808 maximum: 9223372036854775807 show_results: type: boolean required: - description - event - id - name - participation_end - score_type - start PublicCompetitionParticipation: type: object description: |- Public serializer for competition participations. Drops sensitive/staff-only fields: user FK, disqualified_reason. Rank/score/disqualified are shown only when competition.show_results is True. properties: id: type: integer readOnly: true competition: type: integer participant_name: type: string maxLength: 32 score: type: number format: double nullable: true readOnly: true disqualified: type: boolean nullable: true readOnly: true disqualified_reason: type: string nullable: true readOnly: true rank: type: integer nullable: true readOnly: true required: - competition - disqualified - disqualified_reason - id - rank - score PublicCompo: type: object description: Public read-only serializer for compos. properties: id: type: integer readOnly: true event: type: integer name: type: string maxLength: 32 description: type: string adding_end: type: string format: date-time title: Entry adding deadline editing_end: type: string format: date-time title: Entry editing deadline compo_start: type: string format: date-time title: Compo start time voting_start: type: string format: date-time title: Voting start time voting_end: type: string format: date-time title: Voting end time entry_view_type: allOf: - $ref: '#/components/schemas/EntryViewTypeEnum' title: Entry presentation minimum: -9223372036854775808 maximum: 9223372036854775807 is_votable: type: boolean title: Votable required: - adding_end - compo_start - description - editing_end - event - id - name - voting_end - voting_start PublicCompoEntry: type: object description: |- Public serializer for compo entries. Drops sensitive/staff-only fields: user FK, file upload fields (entryfile, sourcefile, imagefile_original), file URL fields (entryfile_url, sourcefile_url), disqualified_reason, archive_score, archive_rank. Rank/score are shown only when compo.show_voting_results is True. properties: id: type: integer readOnly: true compo: type: integer name: type: string maxLength: 64 description: type: string creator: type: string maxLength: 64 platform: type: string nullable: true maxLength: 128 order_index: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 imagefile_original_url: type: string nullable: true readOnly: true imagefile_thumbnail_url: type: string nullable: true readOnly: true imagefile_medium_url: type: string nullable: true readOnly: true youtube_url: type: string nullable: true disqualified: type: boolean nullable: true readOnly: true disqualified_reason: type: string nullable: true readOnly: true computed_score: type: number format: double nullable: true readOnly: true computed_rank: type: integer nullable: true readOnly: true alternate_files: type: array items: $ref: '#/components/schemas/PublicAlternateEntryFile' readOnly: true required: - alternate_files - compo - computed_rank - computed_score - creator - description - disqualified - disqualified_reason - id - imagefile_medium_url - imagefile_original_url - imagefile_thumbnail_url - name PublicEvent: type: object description: Public read-only serializer for events. properties: id: type: integer readOnly: true name: type: string maxLength: 64 tag: type: string nullable: true title: Short tag maxLength: 8 date: type: string format: date archived: type: boolean mainurl: type: string format: uri title: Event main page maxLength: 200 required: - date - id - name PublicOtherVideo: type: object description: Public read-only serializer for archive videos. properties: id: type: integer readOnly: true category: type: integer name: type: string maxLength: 64 description: type: string youtube_url: type: string nullable: true readOnly: true required: - category - description - id - name - youtube_url PublicOtherVideoCategory: type: object description: Public read-only serializer for archive video categories. properties: id: type: integer readOnly: true event: type: integer name: type: string maxLength: 64 required: - event - id - name PublicProgramEvent: type: object description: Public read-only serializer for programme events. properties: id: type: integer readOnly: true event: type: integer start: type: string format: date-time end: type: string format: date-time nullable: true title: type: string maxLength: 128 description: type: string presenters: type: string maxLength: 256 presenters_titles: type: string title: Titles maxLength: 256 place: type: string maxLength: 64 icon_small_url: type: string nullable: true readOnly: true icon2_small_url: type: string nullable: true readOnly: true home_url: type: string format: uri maxLength: 200 twitter_url: type: string format: uri title: Twitter maxLength: 200 github_url: type: string format: uri title: Github maxLength: 200 facebook_url: type: string format: uri title: Facebook maxLength: 200 linkedin_url: type: string format: uri title: LinkedIn maxLength: 200 wiki_url: type: string format: uri title: Wikipedia maxLength: 200 event_type: allOf: - $ref: '#/components/schemas/EventTypeEnum' minimum: -9223372036854775808 maximum: 9223372036854775807 required: - event - icon2_small_url - icon_small_url - id - start - title PublicStoreItem: type: object description: |- Public read-only serializer for StoreItem model. This serializer is used for the public store endpoint (/api/v2/store/items/). It does NOT expose sensitive fields like is_secret, secret_key, or is_ticket. properties: id: type: integer readOnly: true event: type: integer nullable: true name: type: string title: Product name maxLength: 255 description: type: string title: Product description price: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ title: Product price max: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Available quantity available: type: boolean title: Available for purchase imagefile_original_url: type: string nullable: true readOnly: true imagefile_thumbnail_url: type: string nullable: true readOnly: true max_per_order: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Maximum per order sort_index: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Sort order discount_amount: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Discount threshold discount_percentage: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 is_discount_available: type: boolean description: Returns True if a discount exists for this item. readOnly: true discount_factor: type: number format: double readOnly: true num_available: type: integer readOnly: true variants: type: array items: $ref: '#/components/schemas/PublicStoreItemVariant' readOnly: true required: - description - discount_factor - id - imagefile_original_url - imagefile_thumbnail_url - is_discount_available - max - name - num_available - price - variants PublicStoreItemVariant: type: object description: |- Public serializer for StoreItemVariant - nested in store items. Only exposes id and name, not the item reference. properties: id: type: integer readOnly: true name: type: string title: Variant name maxLength: 32 required: - id - name PublicStoreTransactionCheckout: type: object description: |- Public serializer for creating a new store transaction (checkout). This is a write-only serializer for anonymous checkout. No authentication is required. properties: first_name: type: string maxLength: 64 last_name: type: string maxLength: 64 company: type: string default: '' maxLength: 128 email: type: string format: email maxLength: 255 telephone: type: string default: '' maxLength: 64 mobile: type: string default: '' maxLength: 64 street: type: string maxLength: 128 postal_code: type: string maxLength: 16 city: type: string maxLength: 64 country: type: string maxLength: 2 information: type: string default: '' maxLength: 1024 payment_method: $ref: '#/components/schemas/PaymentMethodEnum' read_terms: type: boolean items: type: array items: $ref: '#/components/schemas/PublicStoreTransactionCheckoutItem' confirm: type: boolean default: false required: - city - country - email - first_name - items - last_name - payment_method - postal_code - read_terms - street PublicStoreTransactionCheckoutItem: type: object description: Serializer for individual items in a public checkout request. properties: item_id: type: integer variant_id: type: integer nullable: true amount: type: integer minimum: 1 required: - amount - item_id - variant_id PublicStoreTransactionCheckoutItemRequest: type: object description: Serializer for individual items in a public checkout request. properties: item_id: type: integer variant_id: type: integer nullable: true amount: type: integer minimum: 1 required: - amount - item_id - variant_id PublicStoreTransactionCheckoutRequest: type: object description: |- Public serializer for creating a new store transaction (checkout). This is a write-only serializer for anonymous checkout. No authentication is required. properties: first_name: type: string minLength: 1 maxLength: 64 last_name: type: string minLength: 1 maxLength: 64 company: type: string default: '' maxLength: 128 email: type: string format: email minLength: 1 maxLength: 255 telephone: type: string default: '' maxLength: 64 mobile: type: string default: '' maxLength: 64 street: type: string minLength: 1 maxLength: 128 postal_code: type: string minLength: 1 maxLength: 16 city: type: string minLength: 1 maxLength: 64 country: type: string minLength: 1 maxLength: 2 information: type: string default: '' maxLength: 1024 payment_method: $ref: '#/components/schemas/PaymentMethodEnum' read_terms: type: boolean items: type: array items: $ref: '#/components/schemas/PublicStoreTransactionCheckoutItemRequest' confirm: type: boolean default: false required: - city - country - email - first_name - items - last_name - payment_method - postal_code - read_terms - street PushSubscription: type: object properties: id: type: integer readOnly: true endpoint: type: string maxLength: 1024 p256dh: type: string maxLength: 128 auth: type: string maxLength: 64 created_at: type: string format: date-time readOnly: true required: - auth - created_at - endpoint - id - p256dh PushSubscriptionRequest: type: object properties: endpoint: type: string minLength: 1 maxLength: 1024 p256dh: type: string minLength: 1 maxLength: 128 auth: type: string minLength: 1 maxLength: 64 required: - auth - endpoint - p256dh Receipt: type: object description: Serializer for Receipt model (staff access). properties: id: type: integer readOnly: true transaction: type: integer nullable: true subject: type: string maxLength: 256 mail_to: type: string title: Recipient address maxLength: 256 mail_from: type: string title: Sender address maxLength: 256 sent: type: string format: date-time readOnly: true nullable: true title: Sent at params: type: string nullable: true title: Send parameters content: type: string nullable: true title: Receipt content is_sent: type: boolean readOnly: true required: - id - is_sent - mail_from - mail_to - sent - subject ReceiptRequest: type: object description: Serializer for Receipt model (staff access). properties: transaction: type: integer nullable: true subject: type: string minLength: 1 maxLength: 256 mail_to: type: string minLength: 1 title: Recipient address maxLength: 256 mail_from: type: string minLength: 1 title: Sender address maxLength: 256 params: type: string nullable: true minLength: 1 title: Send parameters content: type: string nullable: true minLength: 1 title: Receipt content required: - mail_from - mail_to - subject ReorderEntriesOk: type: object properties: ok: type: boolean required: - ok ReorderEntriesRequestRequest: type: object properties: compo: type: integer entry_ids: type: array items: type: integer required: - compo - entry_ids ScoreSortEnum: enum: - 0 - 1 type: integer description: |- * `0` - Highest score first * `1` - Lowest score first SocialAuthURL: type: object description: Serializer for social authentication provider URLs. properties: method: type: string url: type: string name: type: string required: - method - name - url StatusEnum: enum: - 0 - 1 - 2 type: integer description: |- * `0` - Pending approval * `1` - Approved * `2` - Rejected StoreItem: type: object description: Staff serializer for StoreItem model. properties: id: type: integer readOnly: true event: type: integer readOnly: true nullable: true name: type: string title: Product name maxLength: 255 description: type: string title: Product description price: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ title: Product price max: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Available quantity available: type: boolean title: Available for purchase imagefile_original: type: string format: uri nullable: true title: Product image imagefile_original_url: type: string nullable: true readOnly: true imagefile_thumbnail_url: type: string nullable: true readOnly: true max_per_order: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Maximum per order sort_index: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Sort order discount_amount: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Discount threshold discount_percentage: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 is_discount_available: type: boolean description: Returns True if a discount exists for this item. readOnly: true discount_factor: type: number format: double readOnly: true num_available: type: integer readOnly: true is_ticket: type: boolean title: Product is a ticket is_secret: type: boolean title: Product is secret secret_key: type: string maxLength: 255 variants: type: array items: $ref: '#/components/schemas/StoreItemVariant' readOnly: true required: - description - discount_factor - event - id - imagefile_original_url - imagefile_thumbnail_url - is_discount_available - max - name - num_available - price - variants StoreItemRequest: type: object description: Staff serializer for StoreItem model. properties: name: type: string minLength: 1 title: Product name maxLength: 255 description: type: string minLength: 1 title: Product description price: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ title: Product price max: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Available quantity available: type: boolean title: Available for purchase imagefile_original: type: string format: binary nullable: true title: Product image max_per_order: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Maximum per order sort_index: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Sort order discount_amount: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 title: Discount threshold discount_percentage: type: integer maximum: 9223372036854775807 minimum: -9223372036854775808 format: int64 is_ticket: type: boolean title: Product is a ticket is_secret: type: boolean title: Product is secret secret_key: type: string maxLength: 255 required: - description - max - name - price StoreItemVariant: type: object description: Staff serializer for store item variants. properties: id: type: integer readOnly: true item: type: integer name: type: string title: Variant name maxLength: 32 required: - id - item - name StoreItemVariantRequest: type: object description: Staff serializer for store item variants. properties: item: type: integer name: type: string minLength: 1 title: Variant name maxLength: 32 required: - item - name StoreSummary: type: object properties: total_items_sold: type: integer total_revenue: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ items: type: array items: $ref: '#/components/schemas/StoreSummaryItemRow' sales_per_day: type: array items: $ref: '#/components/schemas/StoreSummaryDayRow' sales_per_hour: type: array items: $ref: '#/components/schemas/StoreSummaryHourRow' required: - items - sales_per_day - sales_per_hour - total_items_sold - total_revenue StoreSummaryDayRow: type: object properties: date: type: string format: date count: type: integer required: - count - date StoreSummaryHourRow: type: object properties: hour: type: integer count: type: integer required: - count - hour StoreSummaryItemRow: type: object properties: item_id: type: integer item_name: type: string variant_id: type: integer nullable: true variant_name: type: string nullable: true quantity: type: integer revenue: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ required: - item_id - item_name - quantity - revenue - variant_id - variant_name StoreTransaction: type: object description: Serializer for StoreTransaction model (staff access). properties: id: type: integer readOnly: true token: type: string readOnly: true title: Service token time_created: type: string format: date-time nullable: true title: Created at time_paid: type: string format: date-time nullable: true title: Payment confirmed at time_pending: type: string format: date-time nullable: true title: Payment initiated at time_cancelled: type: string format: date-time nullable: true title: Cancelled at payment_method_name: type: string title: Payment method maxLength: 32 key: type: string readOnly: true firstname: type: string title: First name maxLength: 64 lastname: type: string title: Last name maxLength: 64 company: type: string maxLength: 128 email: type: string format: email maxLength: 255 telephone: type: string maxLength: 64 mobile: type: string title: Mobile phone maxLength: 64 street: type: string title: Street address maxLength: 128 postalcode: type: string title: Postal code maxLength: 16 city: type: string maxLength: 64 country: $ref: '#/components/schemas/CountryEnum' information: type: string title: Additional information is_paid: type: boolean readOnly: true is_cancelled: type: boolean readOnly: true is_pending: type: boolean readOnly: true is_delivered: type: boolean readOnly: true full_name: type: string readOnly: true status_text: type: string readOnly: true total_price: type: string readOnly: true events: type: array items: $ref: '#/components/schemas/StoreTransactionEvent' readOnly: true receipts: type: array items: $ref: '#/components/schemas/NestedReceipt' readOnly: true required: - city - email - events - firstname - full_name - id - is_cancelled - is_delivered - is_paid - is_pending - key - lastname - postalcode - receipts - status_text - street - token - total_price StoreTransactionEvent: type: object description: Serializer for StoreTransactionEvent model (nested in transaction). properties: id: type: integer readOnly: true message: type: string readOnly: true title: Event message data: readOnly: true nullable: true title: Event data created: type: string format: date-time readOnly: true title: Created at required: - created - data - id - message StoreTransactionRequest: type: object description: Serializer for StoreTransaction model (staff access). properties: time_created: type: string format: date-time nullable: true title: Created at time_paid: type: string format: date-time nullable: true title: Payment confirmed at time_pending: type: string format: date-time nullable: true title: Payment initiated at time_cancelled: type: string format: date-time nullable: true title: Cancelled at payment_method_name: type: string title: Payment method maxLength: 32 firstname: type: string minLength: 1 title: First name maxLength: 64 lastname: type: string minLength: 1 title: Last name maxLength: 64 company: type: string maxLength: 128 email: type: string format: email minLength: 1 maxLength: 255 telephone: type: string maxLength: 64 mobile: type: string title: Mobile phone maxLength: 64 street: type: string minLength: 1 title: Street address maxLength: 128 postalcode: type: string minLength: 1 title: Postal code maxLength: 16 city: type: string minLength: 1 maxLength: 64 country: $ref: '#/components/schemas/CountryEnum' information: type: string title: Additional information required: - city - email - firstname - lastname - postalcode - street ThumbnailPrefEnum: enum: - 0 - 1 - 2 - 3 type: integer description: |- * `0` - Require separate thumbnail. * `1` - Use entry file as thumbnail (only works for png/jpg files). * `2` - Allow thumbnail (not required). * `3` - Do not allow thumbnail. TicketVoteCode: type: object description: Staff serializer for ticket vote codes. properties: id: type: integer readOnly: true event: type: integer readOnly: true nullable: true associated_to: type: integer nullable: true title: User ticket: type: integer nullable: true title: Ticket item time: type: string format: date-time nullable: true title: Timestamp associated_username: type: string nullable: true readOnly: true required: - associated_username - event - id TransactionItem: type: object description: Serializer for TransactionItem model (staff access). properties: id: type: integer readOnly: true key: type: string readOnly: true item: type: integer title: Product variant: type: integer nullable: true title: Product variant transaction: type: integer time_delivered: type: string format: date-time nullable: true title: Delivery time purchase_price: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ title: Product price original_price: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ title: Original product price is_delivered: type: boolean readOnly: true required: - id - is_delivered - item - key - original_price - purchase_price - transaction TransactionItemRequest: type: object description: Serializer for TransactionItem model (staff access). properties: item: type: integer title: Product variant: type: integer nullable: true title: Product variant transaction: type: integer time_delivered: type: string format: date-time nullable: true title: Delivery time purchase_price: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ title: Product price original_price: type: string format: decimal pattern: ^-?\d{0,3}(?:\.\d{0,2})?$ title: Original product price required: - item - original_price - purchase_price - transaction UploadedFile: type: object description: Staff serializer for uploaded files. properties: id: type: integer readOnly: true event: type: integer readOnly: true user: type: integer nullable: true description: type: string file: type: string format: uri file_url: type: string nullable: true description: Return absolute URL for the file. readOnly: true filename: type: string description: Return just the filename without path. readOnly: true date: type: string format: date-time readOnly: true required: - date - event - file - file_url - filename - id UploadedFileRequest: type: object description: Staff serializer for uploaded files. properties: user: type: integer nullable: true description: type: string file: type: string format: binary required: - file User: type: object description: Staff serializer for users, includes all fields for admin management. properties: id: type: integer readOnly: true username: type: string description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. pattern: ^[\w.@+-]+$ maxLength: 150 first_name: type: string maxLength: 150 last_name: type: string maxLength: 150 email: type: string format: email readOnly: true title: Email address user_permissions: type: array items: type: string readOnly: true is_superuser: type: boolean readOnly: true title: Superuser status description: Designates that this user has all permissions without explicitly assigning them. date_joined: type: string format: date-time readOnly: true language: oneOf: - $ref: '#/components/schemas/LanguageEnum' - $ref: '#/components/schemas/BlankEnum' groups: type: array items: $ref: '#/components/schemas/Group' readOnly: true is_active: type: boolean title: Active description: Designates whether this user should be treated as active. Unselect this instead of deleting accounts. is_staff: type: boolean readOnly: true title: Staff status description: Designates whether the user can log into this admin site. is_system: type: boolean readOnly: true required: - date_joined - email - groups - id - is_staff - is_superuser - is_system - user_permissions - username UserCompetitionParticipation: type: object description: User serializer for managing own competition participations. properties: id: type: integer readOnly: true competition: type: integer participant_name: type: string maxLength: 32 required: - competition - id UserCompetitionParticipationRequest: type: object description: User serializer for managing own competition participations. properties: competition: type: integer participant_name: type: string minLength: 1 maxLength: 32 required: - competition UserCompoEntry: type: object description: User serializer for managing own compo entries. properties: id: type: integer readOnly: true compo: type: integer name: type: string maxLength: 64 description: type: string creator: type: string maxLength: 64 platform: type: string nullable: true maxLength: 128 entryfile_url: type: string nullable: true readOnly: true sourcefile_url: type: string nullable: true readOnly: true imagefile_original_url: type: string nullable: true readOnly: true imagefile_thumbnail_url: type: string nullable: true readOnly: true imagefile_medium_url: type: string nullable: true readOnly: true youtube_url: type: string nullable: true disqualified: type: boolean nullable: true readOnly: true disqualified_reason: type: string nullable: true readOnly: true computed_score: type: number format: double nullable: true readOnly: true computed_rank: type: integer nullable: true readOnly: true alternate_files: type: array items: $ref: '#/components/schemas/AlternateEntryFile' readOnly: true required: - alternate_files - compo - computed_rank - computed_score - creator - description - disqualified - disqualified_reason - entryfile_url - id - imagefile_medium_url - imagefile_original_url - imagefile_thumbnail_url - name - sourcefile_url UserCompoEntryRequest: type: object description: User serializer for managing own compo entries. properties: compo: type: integer name: type: string minLength: 1 maxLength: 64 description: type: string minLength: 1 creator: type: string minLength: 1 maxLength: 64 platform: type: string nullable: true maxLength: 128 entryfile: type: string format: binary writeOnly: true title: File sourcefile: type: string format: binary writeOnly: true nullable: true title: Source code imagefile_original: type: string format: binary writeOnly: true nullable: true title: Image youtube_url: type: string nullable: true required: - compo - creator - description - entryfile - name UserInfo: type: object description: Serializer for the authenticated user's own profile and permissions. properties: id: type: integer readOnly: true username: type: string readOnly: true description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. first_name: type: string maxLength: 150 last_name: type: string maxLength: 150 email: type: string format: email readOnly: true title: Email address user_permissions: type: array items: type: string readOnly: true is_staff: type: boolean readOnly: true title: Staff status description: Designates whether the user can log into this admin site. is_superuser: type: boolean readOnly: true title: Superuser status description: Designates that this user has all permissions without explicitly assigning them. date_joined: type: string format: date-time readOnly: true language: oneOf: - $ref: '#/components/schemas/LanguageEnum' - $ref: '#/components/schemas/BlankEnum' otherinfo: type: string notify_vote_code_requests: type: boolean notify_program_events: type: boolean notify_compo_starts: type: boolean notify_competition_starts: type: boolean required: - date_joined - email - id - is_staff - is_superuser - user_permissions - username UserLoginRequest: type: object description: Serializer for username/password login credentials. properties: username: type: string minLength: 1 maxLength: 255 password: type: string minLength: 1 maxLength: 255 required: - password - username UserRequest: type: object description: Staff serializer for users, includes all fields for admin management. properties: username: type: string minLength: 1 description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. pattern: ^[\w.@+-]+$ maxLength: 150 first_name: type: string maxLength: 150 last_name: type: string maxLength: 150 language: oneOf: - $ref: '#/components/schemas/LanguageEnum' - $ref: '#/components/schemas/BlankEnum' is_active: type: boolean title: Active description: Designates whether this user should be treated as active. Unselect this instead of deleting accounts. required: - username UserTicketVoteCode: type: object description: |- Serializer for user's own ticket vote codes. Users associate a ticket key (from their purchase) to their account to gain voting rights. The ticket_key field accepts a partial key (at least 8 characters) to find the matching ticket. Event, ticket, and associated_to are set by the viewset, not from the request body. properties: id: type: integer readOnly: true event: type: integer readOnly: true nullable: true time: type: string format: date-time readOnly: true nullable: true title: Timestamp required: - event - id - time UserTicketVoteCodeRequest: type: object description: |- Serializer for user's own ticket vote codes. Users associate a ticket key (from their purchase) to their account to gain voting rights. The ticket_key field accepts a partial key (at least 8 characters) to find the matching ticket. Event, ticket, and associated_to are set by the viewset, not from the request body. properties: ticket_key: type: string writeOnly: true minLength: 8 required: - ticket_key UserVoteCodeRequest: type: object description: |- Serializer for user's own vote code requests. Users can create and read their own vote code requests. The status field is read-only for users (only staff can change it). Event and user are set by the viewset, not from the request body. Status values: - 0: Pending - 1: Accepted (voting right granted) - 2: Rejected (no voting right) properties: id: type: integer readOnly: true event: type: integer readOnly: true nullable: true text: type: string title: Description status: allOf: - $ref: '#/components/schemas/StatusEnum' readOnly: true required: - event - id - status - text UserVoteCodeRequestRequest: type: object description: |- Serializer for user's own vote code requests. Users can create and read their own vote code requests. The status field is read-only for users (only staff can change it). Event and user are set by the viewset, not from the request body. Status values: - 0: Pending - 1: Accepted (voting right granted) - 2: Rejected (no voting right) properties: text: type: string minLength: 1 title: Description required: - text UserVoteGroup: type: object description: |- Serializer for user's votes in a compo. Users submit a ranked list of entries to vote for. The order of entries in the list determines the ranking (first = highest rank). Re-submitting votes replaces previous votes for the same compo. properties: id: type: integer readOnly: true compo: type: integer voted_entries: type: array items: type: integer description: Return the list of entry IDs in ranked order. readOnly: true required: - compo - id - voted_entries UserVoteGroupRequest: type: object description: |- Serializer for user's votes in a compo. Users submit a ranked list of entries to vote for. The order of entries in the list determines the ranking (first = highest rank). Re-submitting votes replaces previous votes for the same compo. properties: compo: type: integer entries: type: array items: type: integer writeOnly: true description: List of entry IDs in order of preference (first = highest rank) minItems: 1 required: - compo - entries ValidateArchiveError: type: object properties: error: type: string entries: type: array items: type: string required: - entries - error ValidateArchiveOk: type: object properties: ok: type: boolean count: type: integer required: - count - ok VapidPublicKey: type: object properties: vapid_public_key: type: string readOnly: true required: - vapid_public_key VoteCodeRequest: type: object description: Staff serializer for vote code requests. properties: id: type: integer readOnly: true event: type: integer readOnly: true nullable: true user: type: integer text: type: string title: Description status: allOf: - $ref: '#/components/schemas/StatusEnum' minimum: -9223372036854775808 maximum: 9223372036854775807 required: - event - id - text - user VoteCodeRequestRequest: type: object description: Staff serializer for vote code requests. properties: user: type: integer text: type: string minLength: 1 title: Description status: allOf: - $ref: '#/components/schemas/StatusEnum' minimum: -9223372036854775808 maximum: 9223372036854775807 required: - text - user securitySchemes: cookieAuth: type: apiKey in: cookie name: sessionid knoxApiToken: type: apiKey in: header name: Authorization description: Token-based authentication with required prefix "Token"