swagger: '2.0'
basePath: /api/v1
paths:
  /awards:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/AwardListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to list Award objects in bulk
      operationId: get_award_list
      parameters:
        - type: integer
          in: query
          name: user_id
        - type: integer
          in: query
          name: team_id
        - type: string
          in: query
          name: type
        - type: integer
          in: query
          name: value
        - type: integer
          in: query
          name: category
        - type: integer
          in: query
          name: icon
        - type: string
          in: query
          name: q
        - enum:
            - name
            - description
            - category
            - icon
          in: query
          name: field
          type: string
      tags:
        - awards
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/AwardListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create an Award object
      operationId: post_award_list
      tags:
        - awards
  /awards/{award_id}:
    parameters:
      - in: path
        description: An Award ID
        name: award_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/AwardDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a specific Award object
      operationId: get_award
      tags:
        - awards
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete an Award object
      operationId: delete_award
      tags:
        - awards
  /brackets:
    get:
      responses:
        '200':
          description: Success
      operationId: get_bracket_list
      parameters:
        - type: string
          in: query
          name: name
        - type: string
          in: query
          name: description
        - type: string
          in: query
          name: type
        - type: string
          in: query
          name: q
        - enum:
            - name
            - description
            - type
          in: query
          name: field
          type: string
      tags:
        - brackets
    post:
      responses:
        '200':
          description: Success
      operationId: post_bracket_list
      tags:
        - brackets
  /brackets/{bracket_id}:
    parameters:
      - name: bracket_id
        in: path
        required: true
        type: integer
    patch:
      responses:
        '200':
          description: Success
      operationId: patch_bracket
      tags:
        - brackets
    delete:
      responses:
        '200':
          description: Success
      operationId: delete_bracket
      tags:
        - brackets
  /challenges:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ChallengeListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get Challenge objects in bulk
      operationId: get_challenge_list
      parameters:
        - type: string
          in: query
          name: name
        - type: integer
          in: query
          name: max_attempts
        - type: integer
          in: query
          name: value
        - type: string
          in: query
          name: category
        - type: string
          in: query
          name: type
        - type: string
          in: query
          name: state
        - type: string
          in: query
          name: q
        - enum:
            - name
            - description
            - category
            - type
            - state
          in: query
          name: field
          type: string
      tags:
        - challenges
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ChallengeDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a Challenge object
      operationId: post_challenge_list
      tags:
        - challenges
  /challenges/attempt:
    post:
      responses:
        '200':
          description: Success
      operationId: post_challenge_attempt
      tags:
        - challenges
  /challenges/types:
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_types
      tags:
        - challenges
  /challenges/{challenge_id}:
    parameters:
      - name: challenge_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ChallengeDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a specific Challenge object
      operationId: get_challenge
      tags:
        - challenges
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ChallengeDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit a specific Challenge object
      operationId: patch_challenge
      tags:
        - challenges
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a specific Challenge object
      operationId: delete_challenge
      tags:
        - challenges
  /challenges/{challenge_id}/files:
    parameters:
      - name: challenge_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_files
      tags:
        - challenges
  /challenges/{challenge_id}/flags:
    parameters:
      - name: challenge_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_flags
      tags:
        - challenges
  /challenges/{challenge_id}/hints:
    parameters:
      - name: challenge_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_hints
      tags:
        - challenges
  /challenges/{challenge_id}/ratings:
    parameters:
      - name: challenge_id
        in: path
        required: true
        type: string
    put:
      responses:
        '200':
          description: Success
      summary: Create or update a rating for a challenge
      operationId: put_challenge_ratings
      tags:
        - challenges
    get:
      responses:
        '200':
          description: Success
      summary: Get paginated ratings for a challenge
      operationId: get_challenge_ratings
      tags:
        - challenges
  /challenges/{challenge_id}/requirements:
    parameters:
      - name: challenge_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_requirements
      tags:
        - challenges
  /challenges/{challenge_id}/solution:
    parameters:
      - name: challenge_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_solution
      tags:
        - challenges
  /challenges/{challenge_id}/solves:
    parameters:
      - name: challenge_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_solves
      tags:
        - challenges
  /challenges/{challenge_id}/tags:
    parameters:
      - name: challenge_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_tags
      tags:
        - challenges
  /challenges/{challenge_id}/topics:
    parameters:
      - name: challenge_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_topics
      tags:
        - challenges
  /comments:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/CommentListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to list Comment objects in bulk
      operationId: get_comment_list
      parameters:
        - type: integer
          in: query
          name: challenge_id
        - type: integer
          in: query
          name: user_id
        - type: integer
          in: query
          name: team_id
        - type: integer
          in: query
          name: page_id
        - type: string
          in: query
          name: q
        - enum:
            - content
          in: query
          name: field
          type: string
      tags:
        - comments
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/CommentDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a Comment object
      operationId: post_comment_list
      tags:
        - comments
  /comments/{comment_id}:
    parameters:
      - name: comment_id
        in: path
        required: true
        type: string
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a specific Comment object
      operationId: delete_comment
      tags:
        - comments
  /configs:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ConfigListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get Config objects in bulk
      operationId: get_config_list
      parameters:
        - type: string
          in: query
          name: key
        - type: string
          in: query
          name: value
        - type: string
          in: query
          name: q
        - enum:
            - key
            - value
          in: query
          name: field
          type: string
      tags:
        - configs
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to get patch Config objects in bulk
      operationId: patch_config_list
      tags:
        - configs
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ConfigDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get create a Config object
      operationId: post_config_list
      tags:
        - configs
  /configs/fields:
    get:
      responses:
        '200':
          description: Success
      operationId: get_field_list
      parameters:
        - type: string
          in: query
          name: type
        - type: string
          in: query
          name: q
        - enum:
            - description
          in: query
          name: field
          type: string
      tags:
        - configs
    post:
      responses:
        '200':
          description: Success
      operationId: post_field_list
      tags:
        - configs
  /configs/fields/{field_id}:
    parameters:
      - name: field_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_field
      tags:
        - configs
    patch:
      responses:
        '200':
          description: Success
      operationId: patch_field
      tags:
        - configs
    delete:
      responses:
        '200':
          description: Success
      operationId: delete_field
      tags:
        - configs
  /configs/{config_key}:
    parameters:
      - name: config_key
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ConfigDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a specific Config object
      operationId: get_config
      tags:
        - configs
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ConfigDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit a specific Config object
      operationId: patch_config
      tags:
        - configs
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a Config object
      operationId: delete_config
      tags:
        - configs
  /exports/raw:
    post:
      responses:
        '200':
          description: Success
      operationId: post_export_list
      tags:
        - exports
  /files:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/FileListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get file objects in bulk
      operationId: get_files_list
      parameters:
        - type: string
          in: query
          name: type
        - type: string
          in: query
          name: location
        - type: string
          in: query
          name: q
        - enum:
            - type
            - location
          in: query
          name: field
          type: string
      tags:
        - files
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/FileDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get file objects in bulk
      operationId: post_files_list
      parameters:
        - type: integer
          in: formData
          name: challenge_id
        - type: integer
          in: formData
          name: challenge
        - type: integer
          in: formData
          name: page_id
        - type: integer
          in: formData
          name: page
        - type: integer
          in: formData
          name: solution_id
        - type: integer
          in: formData
          name: solution
        - type: string
          in: formData
          name: type
        - type: string
          in: formData
          name: location
        - in: formData
          type: file
          required: true
          description: The file to upload
          name: file
      consumes:
        - multipart/form-data
      tags:
        - files
  /files/{file_id}:
    parameters:
      - name: file_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/FileDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a specific file object
      operationId: get_files_detail
      tags:
        - files
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a file object
      operationId: delete_files_detail
      tags:
        - files
  /flags:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/FlagListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to list Flag objects in bulk
      operationId: get_flag_list
      parameters:
        - type: integer
          in: query
          name: challenge_id
        - type: string
          in: query
          name: type
        - type: string
          in: query
          name: content
        - type: string
          in: query
          name: data
        - type: string
          in: query
          name: q
        - enum:
            - type
            - content
            - data
          in: query
          name: field
          type: string
      tags:
        - flags
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/FlagDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a Flag object
      operationId: post_flag_list
      tags:
        - flags
  /flags/types:
    get:
      responses:
        '200':
          description: Success
      operationId: get_flag_types
      tags:
        - flags
  /flags/types/{type_name}:
    parameters:
      - name: type_name
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_flag_type
      tags:
        - flags
  /flags/{flag_id}:
    parameters:
      - name: flag_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/FlagDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a specific Flag object
      operationId: get_flag
      tags:
        - flags
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/FlagDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit a specific Flag object
      operationId: patch_flag
      tags:
        - flags
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a specific Flag object
      operationId: delete_flag
      tags:
        - flags
  /hints:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/HintListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to list Hint objects in bulk
      operationId: get_hint_list
      parameters:
        - type: string
          in: query
          name: type
        - type: integer
          in: query
          name: challenge_id
        - type: string
          in: query
          name: content
        - type: integer
          in: query
          name: cost
        - type: string
          in: query
          name: q
        - enum:
            - type
            - content
          in: query
          name: field
          type: string
      tags:
        - hints
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/HintDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a Hint object
      operationId: post_hint_list
      tags:
        - hints
  /hints/{hint_id}:
    parameters:
      - name: hint_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/HintDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a specific Hint object
      operationId: get_hint
      tags:
        - hints
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/HintDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit a specific Hint object
      operationId: patch_hint
      tags:
        - hints
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a specific Tag object
      operationId: delete_hint
      tags:
        - hints
  /notifications:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/NotificationListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get notification objects in bulk
      operationId: get_notificantion_list
      parameters:
        - type: string
          in: query
          name: title
        - type: string
          in: query
          name: content
        - type: integer
          in: query
          name: user_id
        - type: integer
          in: query
          name: team_id
        - type: string
          in: query
          name: q
        - enum:
            - title
            - content
          in: query
          name: field
          type: string
        - type: integer
          in: query
          name: since_id
      tags:
        - notifications
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/NotificationDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a notification object
      operationId: post_notificantion_list
      tags:
        - notifications
    head:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to get statistics for notification objects in bulk
      operationId: head_notificantion_list
      parameters:
        - type: string
          in: query
          name: title
        - type: string
          in: query
          name: content
        - type: integer
          in: query
          name: user_id
        - type: integer
          in: query
          name: team_id
        - type: string
          in: query
          name: q
        - enum:
            - title
            - content
          in: query
          name: field
          type: string
        - type: integer
          in: query
          name: since_id
      tags:
        - notifications
  /notifications/{notification_id}:
    parameters:
      - in: path
        description: A Notification ID
        name: notification_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/NotificationDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a specific notification object
      operationId: get_notification
      tags:
        - notifications
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a notification object
      operationId: delete_notification
      tags:
        - notifications
  /pages:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/PageListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get page objects in bulk
      operationId: get_page_list
      parameters:
        - type: integer
          in: query
          name: id
        - type: string
          in: query
          name: title
        - type: string
          in: query
          name: route
        - type: boolean
          in: query
          name: draft
        - type: boolean
          in: query
          name: hidden
        - type: boolean
          in: query
          name: auth_required
        - type: string
          in: query
          name: q
        - enum:
            - title
            - route
            - content
          in: query
          name: field
          type: string
      tags:
        - pages
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/PageDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a page object
      operationId: post_page_list
      parameters:
        - in: body
          schema:
            title: Pages
            type: object
            properties:
              title:
                type: string
              route:
                type: string
              content:
                type: string
              draft:
                type: boolean
              hidden:
                type: boolean
              auth_required:
                type: boolean
              format:
                type: string
              link_target:
                type: string
          name: Pages
      tags:
        - pages
  /pages/{page_id}:
    parameters:
      - description: ID of a page object
        name: page_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/PageDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to read a page object
      operationId: get_page_detail
      tags:
        - pages
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/PageDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit a page object
      operationId: patch_page_detail
      tags:
        - pages
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to delete a page object
      operationId: delete_page_detail
      tags:
        - pages
  /scoreboard:
    get:
      responses:
        '200':
          description: Success
      operationId: get_scoreboard_list
      tags:
        - scoreboard
  /scoreboard/top/{count}:
    parameters:
      - in: path
        description: How many top teams to return
        name: count
        required: true
        type: integer
    get:
      responses:
        '200':
          description: Success
      operationId: get_scoreboard_detail
      tags:
        - scoreboard
  /shares:
    post:
      responses:
        '200':
          description: Success
      operationId: post_share
      tags:
        - shares
  /solutions:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SolutionListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get solution objects in bulk
      operationId: get_solution_list
      parameters:
        - type: string
          in: query
          name: state
        - type: string
          in: query
          name: q
        - enum:
            - state
          in: query
          name: field
          type: string
      tags:
        - solutions
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SolutionDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
        '403':
          description: Access denied
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a solution object
      operationId: post_solution_list
      parameters:
        - in: body
          schema:
            title: Solutions
            type: object
            properties:
              challenge_id:
                type: integer
              content:
                type: string
              state:
                type: string
          name: Solutions
      tags:
        - solutions
  /solutions/{solution_id}:
    parameters:
      - in: path
        description: A Solution ID
        name: solution_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SolutionDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a solution object
      operationId: get_solution
      tags:
        - solutions
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SolutionDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit a solution object
      operationId: patch_solution
      tags:
        - solutions
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to delete a solution object
      operationId: delete_solution
      tags:
        - solutions
  /statistics/challenges/solves:
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_solve_statistics
      tags:
        - statistics
  /statistics/challenges/solves/percentages:
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_solve_percentages
      tags:
        - statistics
  /statistics/challenges/{column}:
    parameters:
      - name: column
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_challenge_property_counts
      tags:
        - statistics
  /statistics/progression/matrix:
    get:
      responses:
        '200':
          description: Success
      operationId: get_progression_matrix
      tags:
        - statistics
  /statistics/scores/distribution:
    get:
      responses:
        '200':
          description: Success
      operationId: get_scores_distribution
      tags:
        - statistics
  /statistics/submissions/{column}:
    parameters:
      - name: column
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_submission_property_counts
      tags:
        - statistics
  /statistics/teams:
    get:
      responses:
        '200':
          description: Success
      operationId: get_team_statistics
      tags:
        - statistics
  /statistics/users:
    get:
      responses:
        '200':
          description: Success
      operationId: get_user_statistics
      tags:
        - statistics
  /statistics/users/{column}:
    parameters:
      - name: column
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_user_property_counts
      tags:
        - statistics
  /submissions:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SubmissionListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get submission objects in bulk
      operationId: get_submissions_list
      parameters:
        - type: integer
          in: query
          name: challenge_id
        - type: integer
          in: query
          name: user_id
        - type: integer
          in: query
          name: team_id
        - type: string
          in: query
          name: ip
        - type: string
          in: query
          name: provided
        - type: string
          in: query
          name: type
        - type: string
          in: query
          name: q
        - enum:
            - challenge_id
            - user_id
            - team_id
            - ip
            - provided
            - type
          in: query
          name: field
          type: string
      tags:
        - submissions
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SubmissionListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: >-
        Endpoint to create a submission object. Users should interact with the
        attempt endpoint to submit flags.
      operationId: post_submissions_list
      parameters:
        - in: body
          schema:
            title: Submissions
            type: object
            properties:
              challenge_id:
                type: integer
              user_id:
                type: integer
              team_id:
                type: integer
              ip:
                type: string
              provided:
                type: string
              type:
                type: string
              date:
                type: string
                format: date-time
          name: Submissions
      tags:
        - submissions
  /submissions/{submission_id}:
    parameters:
      - in: path
        description: A Submission ID
        name: submission_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SubmissionDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a submission object
      operationId: get_submission
      tags:
        - submissions
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/SubmissionDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit a submission object
      operationId: patch_submission
      tags:
        - submissions
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to delete a submission object
      operationId: delete_submission
      tags:
        - submissions
  /tags:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TagListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to list Tag objects in bulk
      operationId: get_tag_list
      parameters:
        - type: integer
          in: query
          name: challenge_id
        - type: string
          in: query
          name: value
        - type: string
          in: query
          name: q
        - enum:
            - challenge_id
            - value
          in: query
          name: field
          type: string
      tags:
        - tags
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TagDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a Tag object
      operationId: post_tag_list
      tags:
        - tags
  /tags/{tag_id}:
    parameters:
      - in: path
        description: A Tag ID
        name: tag_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TagDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a specific Tag object
      operationId: get_tag
      tags:
        - tags
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TagDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit a specific Tag object
      operationId: patch_tag
      tags:
        - tags
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a specific Tag object
      operationId: delete_tag
      tags:
        - tags
  /teams:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TeamListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get Team objects in bulk
      operationId: get_team_list
      parameters:
        - type: string
          in: query
          name: affiliation
        - type: string
          in: query
          name: country
        - type: string
          in: query
          name: bracket
        - type: string
          in: query
          name: q
        - enum:
            - name
            - website
            - country
            - bracket
            - affiliation
            - email
          in: query
          name: field
          type: string
      tags:
        - teams
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TeamDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a Team object
      operationId: post_team_list
      tags:
        - teams
  /teams/me:
    parameters:
      - in: query
        description: Current Team
        name: team_id
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TeamDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get the current user's Team object
      operationId: get_team_private
      tags:
        - teams
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TeamDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit the current user's Team object
      operationId: patch_team_private
      tags:
        - teams
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: >-
        Endpoint to disband your current team. Can only be used if the team has
        performed no actions in the CTF.
      operationId: delete_team_private
      tags:
        - teams
  /teams/me/awards:
    get:
      responses:
        '200':
          description: Success
      operationId: get_team_private_awards
      tags:
        - teams
  /teams/me/fails:
    get:
      responses:
        '200':
          description: Success
      operationId: get_team_private_fails
      tags:
        - teams
  /teams/me/members:
    post:
      responses:
        '200':
          description: Success
      operationId: post_team_private_members
      tags:
        - teams
  /teams/me/solves:
    get:
      responses:
        '200':
          description: Success
      operationId: get_team_private_solves
      tags:
        - teams
  /teams/{team_id}:
    parameters:
      - in: path
        description: Team ID
        name: team_id
        required: true
        type: integer
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TeamDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a specific Team object
      operationId: get_team_public
      tags:
        - teams
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TeamDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit a specific Team object
      operationId: patch_team_public
      tags:
        - teams
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a specific Team object
      operationId: delete_team_public
      tags:
        - teams
  /teams/{team_id}/awards:
    parameters:
      - in: path
        description: Team ID
        name: team_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_team_public_awards
      tags:
        - teams
  /teams/{team_id}/fails:
    parameters:
      - in: path
        description: Team ID
        name: team_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_team_public_fails
      tags:
        - teams
  /teams/{team_id}/members:
    parameters:
      - in: path
        description: Team ID
        name: team_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_team_members
      tags:
        - teams
    delete:
      responses:
        '200':
          description: Success
      operationId: delete_team_members
      tags:
        - teams
    post:
      responses:
        '200':
          description: Success
      operationId: post_team_members
      tags:
        - teams
  /teams/{team_id}/solves:
    parameters:
      - in: path
        description: Team ID
        name: team_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_team_public_solves
      tags:
        - teams
  /tokens:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TokenListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get token objects in bulk
      operationId: get_token_list
      tags:
        - tokens
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TokenDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a token object
      operationId: post_token_list
      tags:
        - tokens
  /tokens/{token_id}:
    parameters:
      - in: path
        description: A Token ID
        name: token_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/ValuelessTokenDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get an existing token object
      operationId: get_token_detail
      tags:
        - tokens
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete an existing token object
      operationId: delete_token_detail
      tags:
        - tokens
  /topics:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TopicListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to list Topic objects in bulk
      operationId: get_topic_list
      parameters:
        - type: string
          in: query
          name: value
        - type: string
          in: query
          name: q
        - enum:
            - value
          in: query
          name: field
          type: string
      tags:
        - topics
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a specific Topic object of a specific type
      operationId: delete_topic_list
      parameters:
        - type: string
          in: query
          name: type
        - default: 0
          type: integer
          in: query
          name: target_id
      tags:
        - topics
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TopicDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a Topic object
      operationId: post_topic_list
      tags:
        - topics
  /topics/{topic_id}:
    parameters:
      - name: topic_id
        in: path
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/TopicDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a specific Topic object
      operationId: get_topic
      tags:
        - topics
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a specific Topic object
      operationId: delete_topic
      tags:
        - topics
  /unlocks:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UnlockListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get unlock objects in bulk
      operationId: get_unlock_list
      parameters:
        - type: integer
          in: query
          name: user_id
        - type: integer
          in: query
          name: team_id
        - type: integer
          in: query
          name: target
        - type: string
          in: query
          name: type
        - type: string
          in: query
          name: q
        - enum:
            - target
            - type
          in: query
          name: field
          type: string
      tags:
        - unlocks
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UnlockDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create an unlock object. Used to unlock hints.
      operationId: post_unlock_list
      tags:
        - unlocks
  /users:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserListSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get User objects in bulk
      operationId: get_user_list
      parameters:
        - type: string
          in: query
          name: affiliation
        - type: string
          in: query
          name: country
        - type: string
          in: query
          name: bracket
        - type: string
          in: query
          name: q
        - enum:
            - name
            - website
            - country
            - bracket
            - affiliation
            - email
          in: query
          name: field
          type: string
      tags:
        - users
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to create a User object
      operationId: post_user_list
      parameters:
        - description: Whether to send the created user an email with their credentials
          name: notify
          type: string
          in: query
      tags:
        - users
  /users/me:
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get the User object for the current user
      operationId: get_user_private
      tags:
        - users
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit the User object for the current user
      operationId: patch_user_private
      tags:
        - users
  /users/me/awards:
    parameters:
      - in: query
        description: User ID
        name: user_id
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_user_private_awards
      tags:
        - users
  /users/me/fails:
    get:
      responses:
        '200':
          description: Success
      operationId: get_user_private_fails
      tags:
        - users
  /users/me/solves:
    get:
      responses:
        '200':
          description: Success
      operationId: get_user_private_solves
      tags:
        - users
  /users/me/submissions:
    get:
      responses:
        '200':
          description: Success
      operationId: get_user_private_submissions
      tags:
        - users
  /users/{user_id}:
    parameters:
      - in: path
        description: User ID
        name: user_id
        required: true
        type: integer
    get:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to get a specific User object
      operationId: get_user_public
      tags:
        - users
    patch:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/UserDetailedSuccessResponse'
        '400':
          description: An error occured processing the provided or stored data
          schema:
            $ref: '#/definitions/APISimpleErrorResponse'
      description: Endpoint to edit a specific User object
      operationId: patch_user_public
      tags:
        - users
    delete:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to delete a specific User object
      operationId: delete_user_public
      tags:
        - users
  /users/{user_id}/awards:
    parameters:
      - in: path
        description: User ID or 'me'
        name: user_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_user_public_awards
      tags:
        - users
  /users/{user_id}/email:
    parameters:
      - in: path
        description: User ID
        name: user_id
        required: true
        type: integer
    post:
      responses:
        '200':
          description: Success
          schema:
            $ref: '#/definitions/APISimpleSuccessResponse'
      description: Endpoint to email a User object
      operationId: post_user_emails
      tags:
        - users
  /users/{user_id}/fails:
    parameters:
      - in: path
        description: User ID
        name: user_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_user_public_fails
      tags:
        - users
  /users/{user_id}/solves:
    parameters:
      - in: path
        description: User ID
        name: user_id
        required: true
        type: string
    get:
      responses:
        '200':
          description: Success
      operationId: get_user_public_solves
      tags:
        - users
info:
  title: API
  version: v1
produces:
  - application/json
consumes:
  - application/json
securityDefinitions:
  AccessToken:
    type: apiKey
    in: header
    name: Authorization
    description: Generate access token in the settings page of your user account.
security:
  - AccessToken: []
tags:
  - name: challenges
    description: Endpoint to retrieve Challenges
  - name: tags
    description: Endpoint to retrieve Tags
  - name: topics
    description: Endpoint to retrieve Topics
  - name: awards
    description: Endpoint to retrieve Awards
  - name: hints
    description: Endpoint to retrieve Hints
  - name: flags
    description: Endpoint to retrieve Flags
  - name: submissions
    description: Endpoint to retrieve Submission
  - name: scoreboard
    description: Endpoint to retrieve scores
  - name: teams
    description: Endpoint to retrieve Teams
  - name: users
    description: Endpoint to retrieve Users
  - name: statistics
    description: Endpoint to retrieve Statistics
  - name: files
    description: Endpoint to retrieve Files
  - name: notifications
    description: Endpoint to retrieve Notifications
  - name: configs
    description: Endpoint to retrieve Configs
  - name: pages
    description: Endpoint to retrieve Pages
  - name: unlocks
    description: Endpoint to retrieve Unlocks
  - name: tokens
    description: Endpoint to retrieve Tokens
  - name: comments
    description: Endpoint to retrieve Comments
  - name: shares
    description: Endpoint to create Share links
  - name: brackets
    description: Endpoint to retrieve Brackets
  - name: exports
    description: Endpoint to retrieve Exports
  - name: solutions
    description: Endpoint to retrieve and create Solutions
definitions:
  ChallengeListSuccessResponse:
    title: ChallengeListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Challenges
          type: object
          properties:
            id:
              title: Id
              type: integer
            name:
              title: Name
              type: string
            description:
              title: Description
              type: string
            attribution:
              title: Attribution
              type: string
            connection_info:
              title: Connection Info
              type: string
            next_id:
              title: Next Id
              type: integer
            max_attempts:
              title: Max Attempts
              type: integer
            value:
              title: Value
              type: integer
            category:
              title: Category
              type: string
            type:
              title: Type
              type: string
            state:
              title: State
              type: string
            logic:
              title: Logic
              type: string
            initial:
              title: Initial
              type: integer
            minimum:
              title: Minimum
              type: integer
            decay:
              title: Decay
              type: integer
            position:
              title: Position
              type: integer
            function:
              title: Function
              type: string
            requirements:
              title: Requirements
              type: object
            solves:
              title: Solves
              type: integer
            solved_by_me:
              title: Solved By Me
              type: boolean
          required:
            - id
    required:
      - data
  APISimpleErrorResponse:
    title: APISimpleErrorResponse
    type: object
    properties:
      success:
        title: Success
        default: false
        type: boolean
      errors:
        title: Errors
        type: array
        items:
          type: string
  ChallengeDetailedSuccessResponse:
    title: ChallengeDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Challenges
        type: object
        properties:
          id:
            title: Id
            type: integer
          name:
            title: Name
            type: string
          description:
            title: Description
            type: string
          attribution:
            title: Attribution
            type: string
          connection_info:
            title: Connection Info
            type: string
          next_id:
            title: Next Id
            type: integer
          max_attempts:
            title: Max Attempts
            type: integer
          value:
            title: Value
            type: integer
          category:
            title: Category
            type: string
          type:
            title: Type
            type: string
          state:
            title: State
            type: string
          logic:
            title: Logic
            type: string
          initial:
            title: Initial
            type: integer
          minimum:
            title: Minimum
            type: integer
          decay:
            title: Decay
            type: integer
          position:
            title: Position
            type: integer
          function:
            title: Function
            type: string
          requirements:
            title: Requirements
            type: object
          solves:
            title: Solves
            type: integer
          solved_by_me:
            title: Solved By Me
            type: boolean
        required:
          - id
    required:
      - data
  APISimpleSuccessResponse:
    title: APISimpleSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
  TagListSuccessResponse:
    title: TagListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Tags
          type: object
          properties:
            id:
              title: Id
              type: integer
            challenge_id:
              title: Challenge Id
              type: integer
            value:
              title: Value
              type: string
          required:
            - id
    required:
      - data
  TagDetailedSuccessResponse:
    title: TagDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Tags
        type: object
        properties:
          id:
            title: Id
            type: integer
          challenge_id:
            title: Challenge Id
            type: integer
          value:
            title: Value
            type: string
        required:
          - id
    required:
      - data
  TopicListSuccessResponse:
    title: TopicListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Topics
          type: object
          properties:
            id:
              title: Id
              type: integer
            value:
              title: Value
              type: string
          required:
            - id
    required:
      - data
  TopicDetailedSuccessResponse:
    title: TopicDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Topics
        type: object
        properties:
          id:
            title: Id
            type: integer
          value:
            title: Value
            type: string
        required:
          - id
    required:
      - data
  AwardListSuccessResponse:
    title: AwardListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Awards
          type: object
          properties:
            id:
              title: Id
              type: integer
            user_id:
              title: User Id
              type: integer
            team_id:
              title: Team Id
              type: integer
            type:
              title: Type
              type: string
            name:
              title: Name
              type: string
            description:
              title: Description
              type: string
            date:
              title: Date
              type: string
              format: date-time
            value:
              title: Value
              type: integer
            category:
              title: Category
              type: string
            icon:
              title: Icon
              type: string
            requirements:
              title: Requirements
              type: object
          required:
            - id
    required:
      - data
  AwardDetailedSuccessResponse:
    title: AwardDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Awards
        type: object
        properties:
          id:
            title: Id
            type: integer
          user_id:
            title: User Id
            type: integer
          team_id:
            title: Team Id
            type: integer
          type:
            title: Type
            type: string
          name:
            title: Name
            type: string
          description:
            title: Description
            type: string
          date:
            title: Date
            type: string
            format: date-time
          value:
            title: Value
            type: integer
          category:
            title: Category
            type: string
          icon:
            title: Icon
            type: string
          requirements:
            title: Requirements
            type: object
        required:
          - id
    required:
      - data
  HintListSuccessResponse:
    title: HintListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Hints
          type: object
          properties:
            id:
              title: Id
              type: integer
            title:
              title: Title
              type: string
            type:
              title: Type
              type: string
            challenge_id:
              title: Challenge Id
              type: integer
            content:
              title: Content
              type: string
            cost:
              title: Cost
              type: integer
            requirements:
              title: Requirements
              type: object
          required:
            - id
    required:
      - data
  HintDetailedSuccessResponse:
    title: HintDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Hints
        type: object
        properties:
          id:
            title: Id
            type: integer
          title:
            title: Title
            type: string
          type:
            title: Type
            type: string
          challenge_id:
            title: Challenge Id
            type: integer
          content:
            title: Content
            type: string
          cost:
            title: Cost
            type: integer
          requirements:
            title: Requirements
            type: object
        required:
          - id
    required:
      - data
  FlagListSuccessResponse:
    title: FlagListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Flags
          type: object
          properties:
            id:
              title: Id
              type: integer
            challenge_id:
              title: Challenge Id
              type: integer
            type:
              title: Type
              type: string
            content:
              title: Content
              type: string
            data:
              title: Data
              type: string
          required:
            - id
    required:
      - data
  FlagDetailedSuccessResponse:
    title: FlagDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Flags
        type: object
        properties:
          id:
            title: Id
            type: integer
          challenge_id:
            title: Challenge Id
            type: integer
          type:
            title: Type
            type: string
          content:
            title: Content
            type: string
          data:
            title: Data
            type: string
        required:
          - id
    required:
      - data
  SubmissionListSuccessResponse:
    title: SubmissionListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Submissions
          type: object
          properties:
            id:
              title: Id
              type: integer
            challenge_id:
              title: Challenge Id
              type: integer
            user_id:
              title: User Id
              type: integer
            team_id:
              title: Team Id
              type: integer
            ip:
              title: Ip
              type: string
            provided:
              title: Provided
              type: string
            type:
              title: Type
              type: string
            date:
              title: Date
              type: string
              format: date-time
          required:
            - id
      meta:
        title: Meta
        type: object
        properties:
          pagination:
            title: Pagination
            type: object
            properties:
              page:
                title: Page
                type: integer
              next:
                title: Next
                type: integer
              prev:
                title: Prev
                type: integer
              pages:
                title: Pages
                type: integer
              per_page:
                title: Per Page
                type: integer
              total:
                title: Total
                type: integer
            required:
              - page
              - next
              - prev
              - pages
              - per_page
              - total
        required:
          - pagination
    required:
      - data
      - meta
  SubmissionDetailedSuccessResponse:
    title: SubmissionDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Submissions
        type: object
        properties:
          id:
            title: Id
            type: integer
          challenge_id:
            title: Challenge Id
            type: integer
          user_id:
            title: User Id
            type: integer
          team_id:
            title: Team Id
            type: integer
          ip:
            title: Ip
            type: string
          provided:
            title: Provided
            type: string
          type:
            title: Type
            type: string
          date:
            title: Date
            type: string
            format: date-time
        required:
          - id
    required:
      - data
  TeamListSuccessResponse:
    title: TeamListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Teams
          type: object
          properties:
            id:
              title: Id
              type: integer
            oauth_id:
              title: Oauth Id
              type: integer
            name:
              title: Name
              type: string
            email:
              title: Email
              type: string
            password:
              title: Password
              type: string
            secret:
              title: Secret
              type: string
            website:
              title: Website
              type: string
            affiliation:
              title: Affiliation
              type: string
            country:
              title: Country
              type: string
            bracket_id:
              title: Bracket Id
              type: integer
            hidden:
              title: Hidden
              type: boolean
            banned:
              title: Banned
              type: boolean
            captain_id:
              title: Captain Id
              type: integer
            created:
              title: Created
              type: string
              format: date-time
          required:
            - id
      meta:
        title: Meta
        type: object
        properties:
          pagination:
            title: Pagination
            type: object
            properties:
              page:
                title: Page
                type: integer
              next:
                title: Next
                type: integer
              prev:
                title: Prev
                type: integer
              pages:
                title: Pages
                type: integer
              per_page:
                title: Per Page
                type: integer
              total:
                title: Total
                type: integer
            required:
              - page
              - next
              - prev
              - pages
              - per_page
              - total
        required:
          - pagination
    required:
      - data
      - meta
  TeamDetailedSuccessResponse:
    title: TeamDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Teams
        type: object
        properties:
          id:
            title: Id
            type: integer
          oauth_id:
            title: Oauth Id
            type: integer
          name:
            title: Name
            type: string
          email:
            title: Email
            type: string
          password:
            title: Password
            type: string
          secret:
            title: Secret
            type: string
          website:
            title: Website
            type: string
          affiliation:
            title: Affiliation
            type: string
          country:
            title: Country
            type: string
          bracket_id:
            title: Bracket Id
            type: integer
          hidden:
            title: Hidden
            type: boolean
          banned:
            title: Banned
            type: boolean
          captain_id:
            title: Captain Id
            type: integer
          created:
            title: Created
            type: string
            format: date-time
        required:
          - id
    required:
      - data
  UserListSuccessResponse:
    title: UserListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Users
          type: object
          properties:
            id:
              title: Id
              type: integer
            oauth_id:
              title: Oauth Id
              type: integer
            name:
              title: Name
              type: string
            password:
              title: Password
              type: string
            email:
              title: Email
              type: string
            type:
              title: Type
              type: string
            secret:
              title: Secret
              type: string
            website:
              title: Website
              type: string
            affiliation:
              title: Affiliation
              type: string
            country:
              title: Country
              type: string
            bracket_id:
              title: Bracket Id
              type: integer
            hidden:
              title: Hidden
              type: boolean
            banned:
              title: Banned
              type: boolean
            verified:
              title: Verified
              type: boolean
            language:
              title: Language
              type: string
            change_password:
              title: Change Password
              type: boolean
            team_id:
              title: Team Id
              type: integer
            created:
              title: Created
              type: string
              format: date-time
          required:
            - id
      meta:
        title: Meta
        type: object
        properties:
          pagination:
            title: Pagination
            type: object
            properties:
              page:
                title: Page
                type: integer
              next:
                title: Next
                type: integer
              prev:
                title: Prev
                type: integer
              pages:
                title: Pages
                type: integer
              per_page:
                title: Per Page
                type: integer
              total:
                title: Total
                type: integer
            required:
              - page
              - next
              - prev
              - pages
              - per_page
              - total
        required:
          - pagination
    required:
      - data
      - meta
  UserDetailedSuccessResponse:
    title: UserDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Users
        type: object
        properties:
          id:
            title: Id
            type: integer
          oauth_id:
            title: Oauth Id
            type: integer
          name:
            title: Name
            type: string
          password:
            title: Password
            type: string
          email:
            title: Email
            type: string
          type:
            title: Type
            type: string
          secret:
            title: Secret
            type: string
          website:
            title: Website
            type: string
          affiliation:
            title: Affiliation
            type: string
          country:
            title: Country
            type: string
          bracket_id:
            title: Bracket Id
            type: integer
          hidden:
            title: Hidden
            type: boolean
          banned:
            title: Banned
            type: boolean
          verified:
            title: Verified
            type: boolean
          language:
            title: Language
            type: string
          change_password:
            title: Change Password
            type: boolean
          team_id:
            title: Team Id
            type: integer
          created:
            title: Created
            type: string
            format: date-time
        required:
          - id
    required:
      - data
  FileListSuccessResponse:
    title: FileListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Files
          type: object
          properties:
            id:
              title: Id
              type: integer
            type:
              title: Type
              type: string
            location:
              title: Location
              type: string
            sha1sum:
              title: Sha1Sum
              type: string
          required:
            - id
    required:
      - data
  FileDetailedSuccessResponse:
    title: FileDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Files
        type: object
        properties:
          id:
            title: Id
            type: integer
          type:
            title: Type
            type: string
          location:
            title: Location
            type: string
          sha1sum:
            title: Sha1Sum
            type: string
        required:
          - id
    required:
      - data
  NotificationListSuccessResponse:
    title: NotificationListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Notifications
          type: object
          properties:
            id:
              title: Id
              type: integer
            title:
              title: Title
              type: string
            content:
              title: Content
              type: string
            date:
              title: Date
              type: string
              format: date-time
            user_id:
              title: User Id
              type: integer
            team_id:
              title: Team Id
              type: integer
          required:
            - id
    required:
      - data
  NotificationDetailedSuccessResponse:
    title: NotificationDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Notifications
        type: object
        properties:
          id:
            title: Id
            type: integer
          title:
            title: Title
            type: string
          content:
            title: Content
            type: string
          date:
            title: Date
            type: string
            format: date-time
          user_id:
            title: User Id
            type: integer
          team_id:
            title: Team Id
            type: integer
        required:
          - id
    required:
      - data
  ConfigListSuccessResponse:
    title: ConfigListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Configs
          type: object
          properties:
            id:
              title: Id
              type: integer
            key:
              title: Key
              type: string
            value:
              title: Value
              type: string
          required:
            - id
    required:
      - data
  ConfigDetailedSuccessResponse:
    title: ConfigDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Configs
        type: object
        properties:
          id:
            title: Id
            type: integer
          key:
            title: Key
            type: string
          value:
            title: Value
            type: string
        required:
          - id
    required:
      - data
  PageListSuccessResponse:
    title: PageListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Pages
          type: object
          properties:
            id:
              title: Id
              type: integer
            title:
              title: Title
              type: string
            route:
              title: Route
              type: string
            content:
              title: Content
              type: string
            draft:
              title: Draft
              type: boolean
            hidden:
              title: Hidden
              type: boolean
            auth_required:
              title: Auth Required
              type: boolean
            format:
              title: Format
              type: string
            link_target:
              title: Link Target
              type: string
          required:
            - id
    required:
      - data
  PageDetailedSuccessResponse:
    title: PageDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Pages
        type: object
        properties:
          id:
            title: Id
            type: integer
          title:
            title: Title
            type: string
          route:
            title: Route
            type: string
          content:
            title: Content
            type: string
          draft:
            title: Draft
            type: boolean
          hidden:
            title: Hidden
            type: boolean
          auth_required:
            title: Auth Required
            type: boolean
          format:
            title: Format
            type: string
          link_target:
            title: Link Target
            type: string
        required:
          - id
    required:
      - data
  UnlockListSuccessResponse:
    title: UnlockListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Unlocks
          type: object
          properties:
            id:
              title: Id
              type: integer
            user_id:
              title: User Id
              type: integer
            team_id:
              title: Team Id
              type: integer
            target:
              title: Target
              type: integer
            date:
              title: Date
              type: string
              format: date-time
            type:
              title: Type
              type: string
          required:
            - id
    required:
      - data
  UnlockDetailedSuccessResponse:
    title: UnlockDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Unlocks
        type: object
        properties:
          id:
            title: Id
            type: integer
          user_id:
            title: User Id
            type: integer
          team_id:
            title: Team Id
            type: integer
          target:
            title: Target
            type: integer
          date:
            title: Date
            type: string
            format: date-time
          type:
            title: Type
            type: string
        required:
          - id
    required:
      - data
  TokenListSuccessResponse:
    title: TokenListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Tokens
          type: object
          properties:
            id:
              title: Id
              type: integer
            type:
              title: Type
              type: string
            user_id:
              title: User Id
              type: integer
            created:
              title: Created
              type: string
              format: date-time
            expiration:
              title: Expiration
              type: string
              format: date-time
            description:
              title: Description
              type: string
            value:
              title: Value
              type: string
          required:
            - id
    required:
      - data
  TokenDetailedSuccessResponse:
    title: TokenDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Tokens
        type: object
        properties:
          id:
            title: Id
            type: integer
          type:
            title: Type
            type: string
          user_id:
            title: User Id
            type: integer
          created:
            title: Created
            type: string
            format: date-time
          expiration:
            title: Expiration
            type: string
            format: date-time
          description:
            title: Description
            type: string
          value:
            title: Value
            type: string
        required:
          - id
    required:
      - data
  ValuelessTokenDetailedSuccessResponse:
    title: ValuelessTokenDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Tokens
        type: object
        properties:
          id:
            title: Id
            type: integer
          type:
            title: Type
            type: string
          user_id:
            title: User Id
            type: integer
          created:
            title: Created
            type: string
            format: date-time
          expiration:
            title: Expiration
            type: string
            format: date-time
          description:
            title: Description
            type: string
        required:
          - id
    required:
      - data
  CommentListSuccessResponse:
    title: CommentListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Comments
          type: object
          properties:
            id:
              title: Id
              type: integer
            type:
              title: Type
              type: string
            content:
              title: Content
              type: string
            date:
              title: Date
              type: string
              format: date-time
            author_id:
              title: Author Id
              type: integer
          required:
            - id
    required:
      - data
  CommentDetailedSuccessResponse:
    title: CommentDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Comments
        type: object
        properties:
          id:
            title: Id
            type: integer
          type:
            title: Type
            type: string
          content:
            title: Content
            type: string
          date:
            title: Date
            type: string
            format: date-time
          author_id:
            title: Author Id
            type: integer
        required:
          - id
    required:
      - data
  SolutionListSuccessResponse:
    title: SolutionListSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Data
        type: array
        items:
          title: Solutions
          type: object
          properties:
            id:
              title: Id
              type: integer
            challenge_id:
              title: Challenge Id
              type: integer
            content:
              title: Content
              type: string
            state:
              title: State
              type: string
          required:
            - id
    required:
      - data
  SolutionDetailedSuccessResponse:
    title: SolutionDetailedSuccessResponse
    type: object
    properties:
      success:
        title: Success
        default: true
        type: boolean
      data:
        title: Solutions
        type: object
        properties:
          id:
            title: Id
            type: integer
          challenge_id:
            title: Challenge Id
            type: integer
          content:
            title: Content
            type: string
          state:
            title: State
            type: string
        required:
          - id
    required:
      - data
responses:
  ParseError:
    description: When a mask can't be parsed
  MaskError:
    description: When any error occurs on mask
