--- openapi: 3.0.0 info: title: CaG Events API description: API specification for CaG Events back-end. version: 1.0.0-SNAPSHOT license: name: GPLv3 url: https://www.gnu.org/licenses/gpl-3.0.en.html contact: url: https://github.com/CasualGaming/cag-events email: dev@casualgaming.no paths: "/users": get: summary: Get all users description: >- Includes only user fields the current user has permission to view. tags: - user parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 - in: query name: fields description: Which user fields to include required: false schema: type: string - in: query name: partial_username description: Partial, case-insensitive username required: false schema: type: string - in: query name: member description: If the user is or is not currently a member required: false schema: type: boolean - in: query name: groups description: Which groups the user is member of required: false schema: type: string responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: $ref: "#/components/schemas/User" "/users/{username}": parameters: - in: path name: username description: Username required: true schema: type: string get: summary: Get a user description: Includes only fields the current user has permission to view. tags: - user responses: "200": description: Success content: "application/json": schema: $ref: "#/components/schemas/User" "/users/{username}/teams": parameters: - in: path name: username description: Username required: true schema: type: string get: summary: Get all teams for a user tags: - user - team parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: type: integer format: int64 "/users/{username}/tickets": parameters: - in: path name: username description: Username required: true schema: type: string get: summary: Get all tickets for a user tags: - user - ticket parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: type: integer format: int64 "/events": get: summary: Get all events tags: - event parameters: - in: query name: time_status description: If upcoming, active and/or over events should be included required: false schema: type: string - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: $ref: "#/components/schemas/Event" post: summary: Create an event tags: - event requestBody: content: "application/json": schema: $ref: "#/components/schemas/Event" required: true responses: "200": description: Success content: "application/json": schema: type: integer format: int64 "/events/{id}": parameters: - in: path name: id description: Event ID required: true schema: type: integer format: int64 get: summary: Get an event tags: - event responses: "200": description: Success content: "application/json": schema: $ref: "#/components/schemas/Event" patch: summary: Update an event tags: - event requestBody: content: "application/json": schema: $ref: "#/components/schemas/Event" required: true responses: "200": description: Success delete: summary: Delete an event tags: - event responses: "200": description: Success "/events/{id}/participants": parameters: - in: path name: id description: Event ID required: true schema: type: integer format: int64 get: summary: Get all participating users for an event tags: - event - user parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: type: integer format: int64 "/events/{id}/competitions": parameters: - in: path name: id description: Event ID required: true schema: type: integer format: int64 get: summary: Get all competitions for an event tags: - event - competition parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: type: integer format: int64 "/events/{id}/articles": parameters: - in: path name: id description: Event ID required: true schema: type: integer format: int64 get: summary: Get all articles for an event tags: - event - article parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: type: integer format: int64 "/events/{id}/products": parameters: - in: path name: id description: Event ID required: true schema: type: integer format: int64 get: summary: Get all products for an event tags: - event - store parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: type: integer format: int64 "/events/{id}/sponsors": parameters: - in: path name: id description: Event ID required: true schema: type: integer format: int64 get: summary: Get all sponsors for an event tags: - event - sponsor parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: type: integer format: int64 "/articles": get: summary: Get all articles tags: - article parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: $ref: "#/components/schemas/Article" post: summary: Create an article tags: - article requestBody: content: "application/json": schema: $ref: "#/components/schemas/Article" required: true responses: "200": description: Success content: "application/json": schema: type: integer format: int64 "/articles/{id}": parameters: - in: path name: id description: Article ID required: true schema: type: integer format: int64 get: summary: Get an article tags: - article responses: "200": description: Success content: "application/json": schema: $ref: "#/components/schemas/Article" patch: summary: Update an article tags: - article requestBody: content: "application/json": schema: $ref: "#/components/schemas/Article" required: true responses: "200": description: Success delete: summary: Delete an article tags: - article responses: "200": description: Success "/sponsors": get: summary: Get all sponsors tags: - sponsor parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: $ref: "#/components/schemas/Sponsor" post: summary: Create a sponsor tags: - sponsor requestBody: content: "application/json": schema: $ref: "#/components/schemas/Sponsor" required: true responses: "200": description: Success content: "application/json": schema: type: integer format: int64 "/sponsors/{id}": parameters: - in: path name: id description: Sponsor ID required: true schema: type: integer format: int64 get: summary: Get a sponsor tags: - sponsor responses: "200": description: Success content: "application/json": schema: $ref: "#/components/schemas/Sponsor" patch: summary: Update a sponsor tags: - sponsor requestBody: content: "application/json": schema: $ref: "#/components/schemas/Sponsor" required: true responses: "200": description: Success delete: summary: Delete a sponsor tags: - sponsor responses: "200": description: Success "/teams": get: summary: Get all teams tags: - team parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: $ref: "#/components/schemas/Team" post: summary: Create a team tags: - team requestBody: content: "application/json": schema: $ref: "#/components/schemas/Team" required: true responses: "200": description: Success content: "application/json": schema: type: integer format: int64 "/teams/{id}": parameters: - in: path name: id description: Team ID required: true schema: type: integer format: int64 get: summary: Get a team tags: - team responses: "200": description: Success content: "application/json": schema: $ref: "#/components/schemas/Team" patch: summary: Update a team tags: - team requestBody: content: "application/json": schema: $ref: "#/components/schemas/Team" required: true responses: "200": description: Success delete: summary: Delete a team tags: - team responses: "200": description: Success "/competitions": get: summary: Get all competitions tags: - competition parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: $ref: "#/components/schemas/Competition" post: summary: Create a competition tags: - competition requestBody: content: "application/json": schema: $ref: "#/components/schemas/Competition" required: true responses: "200": description: Success content: "application/json": schema: type: integer format: int64 "/competitions/{id}": parameters: - in: path name: id description: Competition ID required: true schema: type: integer format: int64 get: summary: Get a competition tags: - competition responses: "200": description: Success content: "application/json": schema: $ref: "#/components/schemas/Competition" patch: summary: Update a competition tags: - competition requestBody: content: "application/json": schema: $ref: "#/components/schemas/Competition" required: true responses: "200": description: Success delete: summary: Delete a competition tags: - competition responses: "200": description: Success "/ticket_types": get: summary: Get all ticket types tags: - ticket parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: $ref: "#/components/schemas/TicketType" post: summary: Create a ticket type tags: - ticket requestBody: content: "application/json": schema: $ref: "#/components/schemas/TicketType" required: true responses: "200": description: Success content: "application/json": schema: type: integer format: int64 "/ticket_types/{id}": parameters: - in: path name: id description: Ticket type ID required: true schema: type: integer format: int64 get: summary: Get a ticket type tags: - ticket responses: "200": description: Success content: "application/json": schema: $ref: "#/components/schemas/TicketType" patch: summary: Update a ticket type tags: - ticket requestBody: content: "application/json": schema: $ref: "#/components/schemas/TicketType" required: true responses: "200": description: Success delete: summary: Delete a ticket type tags: - ticket responses: "200": description: Success "/tickets": get: summary: Get all tickets tags: - ticket parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: $ref: "#/components/schemas/Ticket" post: summary: Create a ticket tags: - ticket requestBody: content: "application/json": schema: $ref: "#/components/schemas/Ticket" required: true responses: "200": description: Success content: "application/json": schema: type: integer format: int64 "/tickets/{id}": parameters: - in: path name: id description: Ticket ID required: true schema: type: integer format: int64 get: summary: Get a ticket tags: - ticket responses: "200": description: Success content: "application/json": schema: $ref: "#/components/schemas/Ticket" patch: summary: Update a ticket tags: - ticket requestBody: content: "application/json": schema: $ref: "#/components/schemas/Ticket" required: true responses: "200": description: Success delete: summary: Delete a ticket tags: - ticket responses: "200": description: Success "/tickets/{id}/regen-activation-code": parameters: - in: path name: id description: Ticket ID required: true schema: type: integer format: int64 post: summary: "Regenerate the activation code for a ticket" tags: - ticket responses: "200": description: Success "/store_products": get: summary: Get all products tags: - store parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: $ref: "#/components/schemas/StoreProduct" post: summary: Create a product tags: - store requestBody: content: "application/json": schema: $ref: "#/components/schemas/StoreProduct" required: true responses: "200": description: Success content: "application/json": schema: type: integer format: int64 "/store_products/{id}": parameters: - in: path name: id description: Store product ID required: true schema: type: integer format: int64 get: summary: Get a product tags: - store responses: "200": description: Success patch: summary: Update a product tags: - store responses: "200": description: Success delete: summary: Delete a product tags: - store responses: "200": description: Success "/orders": get: summary: Get an order tags: - store parameters: - in: query name: limit description: Max amount of results to return required: false schema: type: integer format: int64 - in: query name: offset description: Which result to start returning at (related to limit) required: false schema: type: integer format: int64 responses: "200": description: Success content: "application/json": schema: type: object properties: count: type: integer next: type: string previous: type: string results: type: array items: $ref: "#/components/schemas/Order" post: summary: Create an order tags: - store requestBody: content: "application/json": schema: $ref: "#/components/schemas/Order" required: true responses: "200": description: Success content: "application/json": schema: type: integer format: int64 patch: summary: Update an order tags: - store requestBody: content: "application/json": schema: $ref: "#/components/schemas/Order" required: true responses: "200": description: Success components: schemas: User: type: object properties: id: type: integer format: int64 subject_id: type: string username: type: string pretty_username: type: string first_name: type: string last_name: type: string email_address: type: string birth_date: type: string street_address: type: string postal_code: type: string phone_number: type: string Event: type: object properties: id: type: integer format: int64 name: type: string TicketType: type: object properties: id: type: integer format: int64 name: type: string Ticket: type: object properties: id: type: integer format: int64 type: $ref: "#/components/schemas/TicketType" Article: type: object properties: id: type: integer format: int64 header: type: string body: type: string Sponsor: type: object properties: id: type: integer format: int64 data: type: string Team: type: object properties: id: type: integer format: int64 name: type: string members: type: array items: $ref: "#/components/schemas/User" Competition: type: object properties: id: type: integer format: int64 name: type: string leader: $ref: "#/components/schemas/User" participants: type: array items: $ref: "#/components/schemas/User" StoreProduct: type: object properties: id: type: integer format: int64 Order: type: object properties: id: type: integer format: int64 is_refunded: type: boolean refund_reason: type: string