AimRank Personal Rankings API

The Personal Rankings API from AimRank — 12 operation(s) for personal rankings.

Operations 18

GET /api/v1/personal/templates List Templates #
GET /api/v1/personal/collections List Collections #
POST /api/v1/personal/collections Create Collection #
GET /api/v1/personal/collections/{collection_id} Get Collection #
PUT /api/v1/personal/collections/{collection_id} Update Collection #
DELETE /api/v1/personal/collections/{collection_id} Delete Collection #
GET /api/v1/personal/collections/{collection_id}/items List Items #
POST /api/v1/personal/collections/{collection_id}/items Add Item #
POST /api/v1/personal/collections/{collection_id}/items/bulk Add Items Bulk #
PUT /api/v1/personal/collections/{collection_id}/items/{item_id} Update Item #
DELETE /api/v1/personal/collections/{collection_id}/items/{item_id} Delete Item #
GET /api/v1/personal/collections/{collection_id}/next-pair Get Next Pair #
POST /api/v1/personal/collections/{collection_id}/vote Submit Vote #
GET /api/v1/personal/collections/{collection_id}/rankings Get Rankings #
POST /api/v1/personal/collections/{collection_id}/share Generate Share Link #
GET /api/v1/personal/collections/{collection_id}/share/stats Get Share Stats #
GET /api/v1/personal/shared/{share_code} Get Shared Collection #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/aimrank-io:aimrank-io-personal-rankings-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

aimrank-io-personal-rankings-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AimRank Personal Rankings API
  description: Ranking-as-a-Service API — Turn binary comparisons into calibrated rankings with Glicko-2, Bradley-Terry, TrueSkill, and cross-domain transfer learning. Includes webhooks, API keys, RLHF exports, and embeddable widgets.
  version: 4.12.0
tags:
- name: Personal Rankings
paths:
  /api/v1/personal/templates:
    get:
      tags:
      - Personal Rankings
      summary: List Templates
      description: Get available collection templates.
      operationId: list_templates_api_v1_personal_templates_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/TemplateResponse'
                type: array
                title: Response List Templates Api V1 Personal Templates Get
  /api/v1/personal/collections:
    get:
      tags:
      - Personal Rankings
      summary: List Collections
      description: List all personal collections for the current user.
      operationId: list_collections_api_v1_personal_collections_get
      parameters:
      - name: category
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CollectionResponse'
                title: Response List Collections Api V1 Personal Collections Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Personal Rankings
      summary: Create Collection
      description: Create a new personal collection.
      operationId: create_collection_api_v1_personal_collections_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectionCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/personal/collections/{collection_id}:
    get:
      tags:
      - Personal Rankings
      summary: Get Collection
      description: Get a specific collection.
      operationId: get_collection_api_v1_personal_collections__collection_id__get
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
      - Personal Rankings
      summary: Update Collection
      description: Update a collection.
      operationId: update_collection_api_v1_personal_collections__collection_id__put
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectionUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Personal Rankings
      summary: Delete Collection
      description: Delete a collection and all its items.
      operationId: delete_collection_api_v1_personal_collections__collection_id__delete
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/personal/collections/{collection_id}/items:
    get:
      tags:
      - Personal Rankings
      summary: List Items
      description: List all items in a collection.
      operationId: list_items_api_v1_personal_collections__collection_id__items_get
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      - name: sort_by
        in: query
        required: false
        schema:
          enum:
          - rank
          - name
          - rating
          - created
          type: string
          default: rank
          title: Sort By
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ItemResponse'
                title: Response List Items Api V1 Personal Collections  Collection Id  Items Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Personal Rankings
      summary: Add Item
      description: Add an item to a collection.
      operationId: add_item_api_v1_personal_collections__collection_id__items_post
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/personal/collections/{collection_id}/items/bulk:
    post:
      tags:
      - Personal Rankings
      summary: Add Items Bulk
      description: Add multiple items to a collection at once.
      operationId: add_items_bulk_api_v1_personal_collections__collection_id__items_bulk_post
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemBulkCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ItemResponse'
                title: Response Add Items Bulk Api V1 Personal Collections  Collection Id  Items Bulk Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/personal/collections/{collection_id}/items/{item_id}:
    put:
      tags:
      - Personal Rankings
      summary: Update Item
      description: Update an item in a collection.
      operationId: update_item_api_v1_personal_collections__collection_id__items__item_id__put
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      - name: item_id
        in: path
        required: true
        schema:
          type: string
          title: Item Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ItemUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ItemResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Personal Rankings
      summary: Delete Item
      description: Remove an item from a collection.
      operationId: delete_item_api_v1_personal_collections__collection_id__items__item_id__delete
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      - name: item_id
        in: path
        required: true
        schema:
          type: string
          title: Item Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/personal/collections/{collection_id}/next-pair:
    get:
      tags:
      - Personal Rankings
      summary: Get Next Pair
      description: Get the next pair of items to compare.
      operationId: get_next_pair_api_v1_personal_collections__collection_id__next_pair_get
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      - name: strategy
        in: query
        required: false
        schema:
          enum:
          - smart
          - random
          - uncertainty
          - similar
          type: string
          default: smart
          title: Strategy
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PairResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/personal/collections/{collection_id}/vote:
    post:
      tags:
      - Personal Rankings
      summary: Submit Vote
      description: Submit a vote comparing two items.
      operationId: submit_vote_api_v1_personal_collections__collection_id__vote_post
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/api__routes__personal_rankings__VoteCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoteResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/personal/collections/{collection_id}/rankings:
    get:
      tags:
      - Personal Rankings
      summary: Get Rankings
      description: Get the ranked list of items in a collection.
      operationId: get_rankings_api_v1_personal_collections__collection_id__rankings_get
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      - name: limit
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RankingsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/personal/collections/{collection_id}/share:
    post:
      tags:
      - Personal Rankings
      summary: Generate Share Link
      description: 'Generate or regenerate a share link for a collection.


        - If no share code exists, creates one

        - If `regenerate=true`, creates a new code (invalidates old one)

        - Optionally set expiration with `expires_in_days`'
      operationId: generate_share_link_api_v1_personal_collections__collection_id__share_post
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/api__routes__personal_rankings__ShareCreate'
              default:
                regenerate: false
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShareResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Personal Rankings
      summary: Revoke Share Link
      description: Revoke the share link for a collection. Old links will no longer work.
      operationId: revoke_share_link_api_v1_personal_collections__collection_id__share_delete
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/personal/collections/{collection_id}/share/stats:
    get:
      tags:
      - Personal Rankings
      summary: Get Share Stats
      description: Get sharing statistics for a collection.
      operationId: get_share_stats_api_v1_personal_collections__collection_id__share_stats_get
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: string
          title: Collection Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShareStatsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/personal/shared/{share_code}:
    get:
      tags:
      - Personal Rankings
      summary: Get Shared Collection
      description: 'View a shared collection (no auth required).


        Returns 404 if:

        - Collection not found

        - Share link has been revoked

        - Share link has expired'
      operationId: get_shared_collection_api_v1_personal_shared__share_code__get
      parameters:
      - name: share_code
        in: path
        required: true
        schema:
          type: string
          title: Share Code
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RankingsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    PairResponse:
      properties:
        item_a:
          $ref: '#/components/schemas/ItemResponse'
        item_b:
          $ref: '#/components/schemas/ItemResponse'
        comparison_number:
          type: integer
          title: Comparison Number
        total_items:
          type: integer
          title: Total Items
        completion_percentage:
          type: number
          title: Completion Percentage
      type: object
      required:
      - item_a
      - item_b
      - comparison_number
      - total_items
      - completion_percentage
      title: PairResponse
    ItemBulkCreate:
      properties:
        items:
          items:
            $ref: '#/components/schemas/ItemCreate'
          type: array
          maxItems: 100
          minItems: 1
          title: Items
      type: object
      required:
      - items
      title: ItemBulkCreate
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ItemCreate:
      properties:
        name:
          type: string
          maxLength: 255
          minLength: 1
          title: Name
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        image_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Image Url
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
      type: object
      required:
      - name
      title: ItemCreate
    RankedItemResponse:
      properties:
        rank:
          type: integer
          title: Rank
        item:
          $ref: '#/components/schemas/ItemResponse'
        confidence_level:
          type: string
          title: Confidence Level
      type: object
      required:
      - rank
      - item
      - confidence_level
      title: RankedItemResponse
    ItemUpdate:
      properties:
        name:
          anyOf:
          - type: string
            maxLength: 255
            minLength: 1
          - type: 'null'
          title: Name
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        image_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Image Url
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
      type: object
      title: ItemUpdate
    api__routes__personal_rankings__VoteCreate:
      properties:
        item_a_id:
          type: string
          title: Item A Id
        item_b_id:
          type: string
          title: Item B Id
        winner_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Winner Id
        decision_time_ms:
          anyOf:
          - type: integer
          - type: 'null'
          title: Decision Time Ms
      type: object
      required:
      - item_a_id
      - item_b_id
      title: VoteCreate
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    ShareStatsResponse:
      properties:
        share_code:
          anyOf:
          - type: string
          - type: 'null'
          title: Share Code
        is_active:
          type: boolean
          title: Is Active
        created_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Created At
        expires_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Expires At
        view_count:
          type: integer
          title: View Count
        last_viewed_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Last Viewed At
        days_until_expiry:
          anyOf:
          - type: integer
          - type: 'null'
          title: Days Until Expiry
      type: object
      required:
      - share_code
      - is_active
      - created_at
      - expires_at
      - view_count
      - last_viewed_at
      - days_until_expiry
      title: ShareStatsResponse
    CollectionResponse:
      properties:
        id:
          type: string
          title: Id
        user_id:
          type: string
          title: User Id
        name:
          type: string
          title: Name
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        category:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
        image_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Image Url
        is_private:
          type: boolean
          title: Is Private
        share_code:
          anyOf:
          - type: string
          - type: 'null'
          title: Share Code
        item_count:
          type: integer
          title: Item Count
        vote_count:
          type: integer
          title: Vote Count
        completion_percentage:
          type: number
          title: Completion Percentage
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
      type: object
      required:
      - id
      - user_id
      - name
      - description
      - category
      - image_url
      - is_private
      - share_code
      - item_count
      - vote_count
      - completion_percentage
      - created_at
      - updated_at
      title: CollectionResponse
    CollectionCreate:
      properties:
        name:
          type: string
          maxLength: 255
          minLength: 1
          title: Name
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        category:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
        image_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Image Url
        is_private:
          type: boolean
          title: Is Private
          default: true
      type: object
      required:
      - name
      title: CollectionCreate
    ShareResponse:
      properties:
        share_code:
          type: string
          title: Share Code
        share_url:
          type: string
          title: Share Url
        created_at:
          type: string
          format: date-time
          title: Created At
        expires_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Expires At
        view_count:
          type: integer
          title: View Count
        last_viewed_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Last Viewed At
        is_active:
          type: boolean
          title: Is Active
      type: object
      required:
      - share_code
      - share_url
      - created_at
      - expires_at
      - view_count
      - last_viewed_at
      - is_active
      title: ShareResponse
    CollectionUpdate:
      properties:
        name:
          anyOf:
          - type: string
            maxLength: 255
            minLength: 1
          - type: 'null'
          title: Name
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        category:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
        image_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Image Url
        is_private:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Is Private
      type: object
      title: CollectionUpdate
    api__routes__personal_rankings__ShareCreate:
      properties:
        expires_in_days:
          anyOf:
          - type: integer
            maximum: 365.0
            minimum: 1.0
          - type: 'null'
          title: Expires In Days
          description: Days until link expires (null = never)
        regenerate:
          type: boolean
          title: Regenerate
          description: Generate a new code even if one exists
          default: false
      type: object
      title: ShareCreate
    ItemResponse:
      properties:
        id:
          type: string
          title: Id
        collection_id:
          type: string
          title: Collection Id
        name:
          type: string
          title: Name
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        image_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Image Url
        attributes:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Attributes
        rating:
          type: integer
          title: Rating
        confidence:
          type: integer
          title: Confidence
        uncertainty_level:
          type: string
          title: Uncertainty Level
        match_count:
          type: integer
          title: Match Count
        win_count:
          type: integer
          title: Win Count
        loss_count:
          type: integer
          title: Loss Count
        win_rate:
          type: number
          title: Win Rate
        current_rank:
          anyOf:
          - type: integer
          - type: 'null'
          title: Current Rank
        created_at:
          type: string
          format: date-time
          title: Created At
      type: object
      required:
      - id
      - collection_id
      - name
      - description
      - image_url
      - attributes
      - rating
      - confidence
      - uncertainty_level
      - match_count
      - win_count
      - loss_count
      - win_rate
      - current_rank
      - created_at
      title: ItemResponse
    TemplateResponse:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        category:
          type: string
          title: Category
        description:
          type: string
          title: Description
        suggested_items:
          items:
            type: string
          type: array
          title: Suggested Items
      type: object
      required:
      - id
      - name
      - category
      - description
      - suggested_items
      title: TemplateResponse
    RankingsResponse:
      properties:
        collection:
          $ref: '#/components/schemas/CollectionResponse'
        rankings:
          items:
            $ref: '#/components/schemas/RankedItemResponse'
          type: array
          title: Rankings
        total_votes:
          type: integer
          title: Total Votes
        completion_percentage:
          type: number
          title: Completion Percentage
      type: object
      required:
      - collection
      - rankings
      - total_votes
      - completion_percentage
      title: RankingsResponse
    VoteResponse:
      properties:
        vote_id:
          type: string
          title: Vote Id
        winner_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Winner Id
        is_skip:
          type: boolean
          title: Is Skip
        rating_change_a:
          type: number
          title: Rating Change A
        rating_change_b:
          type: number
          title: Rating Change B
        new_rating_a:
          type: number
          title: New Rating A
        new_rating_b:
          type: number
          title: New Rating B
        item_a_new_rank:
          anyOf:
          - type: integer
          - type: 'null'
          title: Item A New Rank
        item_b_new_rank:
          anyOf:
          - type: integer
          - type: 'null'
          title: Item B New Rank
        collection_vote_count:
          type: integer
          title: Collection Vote Count
        completion_percentage:
          type: number
          title: Completion Percentage
        next_pair:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Next Pair
      type: object
      required:
      - vote_id
      - winner_id
      - is_skip
      - rating_change_a
      - rating_change_b
      - new_rating_a
      - new_rating_b
      - item_a_new_rank
      - item_b_new_rank
      - collection_vote_count
      - completion_percentage
      - next_pair
      title: VoteResponse
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key