CrunchDAO leaderboard API

The leaderboard API from CrunchDAO — 8 operation(s) for leaderboard.

Operations 9

GET /v2/competitions/{competitionIdentifier}/leaderboards List leaderboards. #
POST /v2/competitions/{competitionIdentifier}/leaderboards Update leaderboards. #
GET /v4/competitions/{competitionIdentifier}/leaderboards List available leaderboards. #
GET /v3/competitions/{competitionIdentifier}/leaderboards List leaderboards. #
GET /v3/competitions/{competitionIdentifier}/leaderboards/{leaderboardDefinitionIdentifier} Show a leaderboard with positions. #
GET /v3/competitions/{competitionIdentifier}/leaderboards/{leaderboardDefinitionIdentifier}/changes/users/{userLogin} Show a user changes. #
GET /v2/competitions/{competitionIdentifier}/leaderboards/{leaderboardDefinitionIdentifier} Show a leaderboard with positions. #
GET /v2/competitions/{competitionIdentifier}/leaderboards/progress Show a leaderboard progress. #
GET /v2/competitions/{competitionIdentifier}/leaderboards/changes/users/{userLogin} Show a user changes. #

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/crunchdao-leaderboard-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

crunchdao-leaderboard-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Tournament activity Leaderboard API
  description: CrunchDAO Tournament Platform API Endpoints
  version: v2
servers:
- url: http://api.hub.crunchdao.com
  description: Generated server url
security: []
tags:
- name: leaderboard
paths:
  /v2/competitions/{competitionIdentifier}/leaderboards:
    x-service-id: competition-service
    get:
      tags:
      - leaderboard
      summary: List leaderboards.
      operationId: listLeaderboardsV2
      parameters:
      - name: competitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LeaderboardDefinition'
      deprecated: true
    post:
      tags:
      - leaderboard
      summary: Update leaderboards.
      operationId: updateLeaderboard
      parameters:
      - name: competitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeaderboardUpdateForm'
        required: true
      responses:
        '200':
          description: OK
      security:
      - apiKey: []
  /v4/competitions/{competitionIdentifier}/leaderboards:
    x-service-id: competition-service
    get:
      tags:
      - leaderboard
      summary: List available leaderboards.
      operationId: listLeaderboards
      parameters:
      - name: competitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: crunchId
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Leaderboard'
  /v3/competitions/{competitionIdentifier}/leaderboards:
    x-service-id: competition-service
    get:
      tags:
      - leaderboard
      summary: List leaderboards.
      operationId: listLeaderboards_1
      parameters:
      - name: competitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LeaderboardDefinition'
      security:
      - accessToken: []
      - apiKey: []
  /v3/competitions/{competitionIdentifier}/leaderboards/{leaderboardDefinitionIdentifier}:
    x-service-id: competition-service
    get:
      tags:
      - leaderboard
      summary: Show a leaderboard with positions.
      operationId: getLeaderboardPositions
      parameters:
      - name: competitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: leaderboardDefinitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: crunchId
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int64
      - name: showPositions
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: boolean
      - name: teamIdentifier
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeaderboardDefinition'
      security:
      - accessToken: []
      - apiKey: []
  /v3/competitions/{competitionIdentifier}/leaderboards/{leaderboardDefinitionIdentifier}/changes/users/{userLogin}:
    x-service-id: competition-service
    get:
      tags:
      - leaderboard
      summary: Show a user changes.
      operationId: showUserChanges
      parameters:
      - name: competitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: leaderboardDefinitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: userLogin
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: crunchId
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int64
      - name: projectIdentifier
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: string
          default: INSTANCE
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeaderboardChange'
      security:
      - accessToken: []
      - apiKey: []
  /v2/competitions/{competitionIdentifier}/leaderboards/{leaderboardDefinitionIdentifier}:
    x-service-id: competition-service
    get:
      tags:
      - leaderboard
      summary: Show a leaderboard with positions.
      operationId: getLeaderboardPositions_1
      parameters:
      - name: competitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: leaderboardDefinitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: crunchId
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int64
      - name: showPositions
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: boolean
      - name: teamIdentifier
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeaderboardDefinition'
      deprecated: true
  /v2/competitions/{competitionIdentifier}/leaderboards/progress:
    x-service-id: competition-service
    get:
      tags:
      - leaderboard
      summary: Show a leaderboard progress.
      operationId: showLeaderboardProgress
      parameters:
      - name: competitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: crunchId
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeaderboardProgress'
  /v2/competitions/{competitionIdentifier}/leaderboards/changes/users/{userLogin}:
    x-service-id: competition-service
    get:
      tags:
      - leaderboard
      summary: Show a user changes.
      operationId: showUserChanges_1
      parameters:
      - name: competitionIdentifier
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: userLogin
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: crunchId
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int64
      - name: projectIdentifier
        in: query
        required: false
        style: form
        explode: true
        schema:
          type: string
          default: INSTANCE
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeaderboardChange'
      deprecated: true
components:
  schemas:
    CompetitionTag:
      type: object
      properties:
        name:
          type: string
          description: Slug-like name.
        displayName:
          type: string
          description: Display name for the UI.
    PayoutType:
      type: string
      enum:
      - AIRDROP
      - MONTHLY
      - CHECKPOINT
    LeaderboardDefinitionColumn:
      type: object
      properties:
        id:
          type: integer
          format: int64
        type:
          $ref: '#/components/schemas/LeaderboardDefinitionColumnType'
          description: Type of the column.
        property:
          type: string
          description: Property name that must be read from the values object.
        format:
          type: string
          description: Format for the value.
        displayName:
          type: string
          description: Column display name used in the table header.
        tooltip:
          type: string
          description: Tooltip to show when hovering on the table header column. Can be `null`.
        nativeConfiguration:
          type: string
          description: Native frontend configuration for the cell. If `null`, render as regular string.
        order:
          type: integer
          format: int64
          description: Order to sort the column.
    CompetitionVisibility:
      type: string
      enum:
      - HIDDEN
      - PUBLIC
    Leaderboard:
      type: object
      properties:
        id:
          type: integer
          format: int64
        definition:
          $ref: '#/components/schemas/LeaderboardDefinition'
        size:
          type: integer
          format: int64
    LeaderboardTarget:
      type: object
      properties:
        crunch:
          $ref: '#/components/schemas/Crunch'
        bounty:
          $ref: '#/components/schemas/Bounty'
        positions:
          type: array
          items:
            $ref: '#/components/schemas/Position'
        metrics:
          type: array
          items:
            $ref: '#/components/schemas/Metric'
        valueColumns:
          type: array
          description: Columns for real-time competitions.
          items:
            $ref: '#/components/schemas/LeaderboardDefinitionColumn'
    Unit:
      type: object
      properties:
        prefix:
          type: string
          description: String to show before the value.
        suffix:
          type: string
          description: String to show after the value.
        scale:
          type: integer
          format: int32
          description: Number of digits to keep after the comma.
    MetricDefinition:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        displayName:
          type: string
    CompetitionStatus:
      type: string
      enum:
      - PENDING
      - OPEN
      - CLOSED
    LeaderboardChangeValue:
      type: object
      properties:
        unit:
          $ref: '#/components/schemas/Unit'
        current:
          type: number
        previous:
          type: number
        change:
          type: number
        changeDirection:
          $ref: '#/components/schemas/LeaderboardChangeDirection'
    PhaseSplit:
      type: object
      properties:
        key:
          type: object
          anyOf:
          - type: integer
            format: int64
          - type: string
          example: 1
    DataReleaseSplitKey:
      type: string
      enum:
      - INTEGER
      - STRING
    LeaderboardChange:
      type: object
      properties:
        submitted:
          type: boolean
        targets:
          type: array
          items:
            $ref: '#/components/schemas/LeaderboardChangeTarget'
    User:
      type: object
      properties:
        id:
          type: integer
          format: int64
        login:
          type: string
    LeaderboardRankOrder:
      type: string
      enum:
      - DESCENDING
      - ASCENDING
    Bounty:
      type: object
      properties:
        id:
          type: integer
          format: int64
        leaderboard:
          $ref: '#/components/schemas/LeaderboardDefinition'
        target:
          $ref: '#/components/schemas/Target'
        rewardScheme:
          $ref: '#/components/schemas/BountyRewardScheme'
        payout:
          $ref: '#/components/schemas/Payout'
        granted:
          type: number
        displayName:
          type: string
        tooltip:
          type: string
        rewards:
          type: array
          items:
            $ref: '#/components/schemas/BountyReward'
    LeaderboardVisibility:
      type: string
      enum:
      - HIDDEN
      - PUBLIC
    PhaseType:
      type: string
      enum:
      - SUBMISSION
      - OUT_OF_SAMPLE
    PayoutRecipient:
      type: object
      properties:
        id:
          type: integer
          format: int64
        user:
          $ref: '#/components/schemas/User'
        address:
          type: string
          description: Address where the payout has been sent to.
        value:
          type: number
          description: Amount that has been sent to the address.
        rank:
          type: integer
          format: int64
          description: Rank of the recipient in the payout.
        claimed:
          type: boolean
          description: If `Payout.type` is `CHECKPOINT`, did the user claim their payout? Uses a 3-state boolean, where null corresponds to a payout that cannot be claimed.
        claimedAt:
          type: string
          format: date-time
          description: If `Payout.type` is `CHECKPOINT`, when did the user claim their payout?
        claimTransactionHash:
          type: string
          description: If `Payout.type` is `CHECKPOINT`, in which transaction was the claim made?
        details:
          type: array
          items:
            $ref: '#/components/schemas/PayoutDetail'
        userId:
          type: integer
          format: int64
          deprecated: true
    PayoutCompetitionName:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        displayName:
          type: string
    PositionUser:
      type: object
      properties:
        crowned:
          type: boolean
        certified:
          type: boolean
        rewarded:
          type: boolean
        benchmarked:
          type: boolean
    TimelineEventType:
      type: string
      enum:
      - GENERIC
      - LEADERBOARD
      - RULES
      - REWARDS
    PayoutStatus:
      type: string
      enum:
      - CREATED
      - PENDING
      - PAID
    ReducerFunction:
      type: string
      enum:
      - NONE
      - SUM
      - MEAN
      - PRODUCT_PLUS_MINUS_1
    LeaderboardChangeDirection:
      type: string
      enum:
      - RED
      - GREEN
    PayoutDetail:
      type: object
      properties:
        id:
          type: integer
          format: int64
        type:
          $ref: '#/components/schemas/PayoutDetailType'
        name:
          type: string
        value:
          type: number
        createdAt:
          type: string
          format: date-time
    BountyRewardScheme:
      type: string
      enum:
      - UNSTRUCTURED
      - NORMALIZED_EXPONENTIAL
    CompetitionMode:
      type: string
      enum:
      - OFFLINE
      - REAL_TIME
    LeaderboardProgress:
      type: object
      properties:
        current:
          type: integer
          format: int64
        total:
          type: integer
          format: int64
    MetricColors:
      type: object
      properties:
        details:
          type: string
        submissionPhase:
          type: string
        outOfSamplePhase:
          type: string
    PayoutDetailType:
      type: string
      enum:
      - REWARD
      - BONUS
    PositionTeam:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        lookingForTeammates:
          type: boolean
    Round:
      type: object
      properties:
        id:
          type: integer
          format: int64
        competition:
          $ref: '#/components/schemas/Competition'
        number:
          type: integer
          format: int64
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        automaticSelectionFreezeEnabled:
          type: boolean
        automaticSubmissionPhaseCrunchCreationEnabled:
          type: boolean
        automaticSubmissionPhaseLeaderboardUpdateEnabled:
          type: boolean
        predictionSizeLimit:
          type: integer
          format: int64
        maxSubmissionsPerDay:
          type: integer
          format: int64
    BountyReward:
      type: object
      properties:
        id:
          type: integer
          format: int64
        user:
          $ref: '#/components/schemas/User'
        value:
          type: number
        userId:
          type: integer
          format: int64
          deprecated: true
    CompetitionFormat:
      type: string
      enum:
      - TIMESERIES
      - DAG
      - STREAM
      - SPATIAL
      - UNSTRUCTURED
    Position:
      type: object
      properties:
        id:
          type: integer
          format: int64
        rank:
          type: integer
          format: int64
        rewardRank:
          type: number
          format: double
    PositionParticipant:
      type: object
      properties:
        user:
          $ref: '#/components/schemas/PositionUser'
        team:
          $ref: '#/components/schemas/PositionTeam'
        project:
          $ref: '#/components/schemas/LeaderboardProject'
    CompetitionType:
      type: string
      enum:
      - OPEN
      - PAUSED
    Target:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
          description: Slug-like name.
        displayName:
          type: string
          description: Display name for the UI.
        weight:
          type: number
          format: float
          description: Weight of the target in the global leaderboard.
        weightedMeanUnit:
          $ref: '#/components/schemas/Unit'
          description: Display name for the UI of the weighted mean column.
        primary:
          type: boolean
          description: Is the target displayed on the home page?
        virtual:
          type: boolean
          description: Is the target based on other targets.
        rankOrder:
          $ref: '#/components/schemas/LeaderboardRankOrder'
          description: Orders of the position on the leaderboard.
        weightedMeanDisplayUnit:
          type: string
          deprecated: true
    TimelineEventButton:
      type: object
      properties:
        text:
          type: string
        link:
          type: string
        color:
          type: string
    LeaderboardProject:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        writeupUrl:
          type: string
          description: Writeup URL, only included on Out-of-Sample leaderboards.
    Metric:
      type: object
      properties:
        id:
          type: integer
          format: int64
        target:
          $ref: '#/components/schemas/Target'
        metricDefinition:
          $ref: '#/components/schemas/MetricDefinition'
        name:
          type: string
          description: Slug-like name.
        displayName:
          type: string
          description: Display name.
        unit:
          $ref: '#/components/schemas/Unit'
          description: Unit to format the value. None if `null`.
        signless:
          type: boolean
          description: Ignore and hide the sign of the value.
        weight:
          type: integer
          format: int32
          description: Weight of the value used for the weighted average.
        minimum:
          type: number
          format: double
          description: Minimum value allowed before being considered out of range. `null` if there is no minimum.
        maximum:
          type: number
          format: double
          description: Maximum value allowed before being considered out of range. `null` if there is no maximum.
        score:
          type: boolean
          description: Is it a score that is not considered in the weighted average?
        multiplier:
          type: number
          format: double
          description: Multiplier used to convert the raw value (divide to get the original value).
        cumulative:
          type: boolean
          description: Are previous values are needed to compute the final score.
        scorerFunction:
          $ref: '#/components/schemas/ScorerFunction'
          description: Scoring function to use implemented in the crunch-cli.
        reducerFunction:
          $ref: '#/components/schemas/ReducerFunction'
          description: Reducer function to consume the value to get the score.
        reducedDisplayName:
          type: string
          description: Display name for the reducer function.
        visualizationType:
          $ref: '#/components/schemas/VisualizationType'
          description: Type of visualization used to display the values.
        colors:
          $ref: '#/components/schemas/MetricColors'
          description: Colors for the lines.
        visibleOnPerformanceGraph:
          type: boolean
          description: Is the line visible on the performance graph.
        createdAt:
          type: string
          format: date-time
        displayUnit:
          type: string
          deprecated: true
    Competition:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
          description: Slug-like name.
        displayName:
          type: string
          description: Display name for cards.
        fullName:
          type: string
          description: Full name for the overview.
        shortDescription:
          type: string
          description: Short description for cards.
        type:
          $ref: '#/components/schemas/CompetitionType'
        format:
          $ref: '#/components/schemas/CompetitionFormat'
        mode:
          $ref: '#/components/schemas/CompetitionMode'
        status:
          $ref: '#/components/schemas/CompetitionStatus'
        splitKeyType:
          $ref: '#/components/schemas/DataReleaseSplitKey'
        start:
          type: string
          format: date-time
          description: Start of competition.
        end:
          type: string
          format: date-time
          description: End of competition. (specified if not continuous)
        continuous:
          type: boolean
          description: Will the competition never end?
        external:
          type: boolean
          description: Is the competition external? If so, redirect to `url`.
        featured:
          type: boolean
          description: Is the competition featured?
        visibility:
          $ref: '#/components/schemas/CompetitionVisibility'
        url:
          type: string
          description: URL where the competition takes place.
        onChainId:
          type: string
          description: On-Chain ID where the competition takes place. Only if `mode` is `REAL_TIME`.
        cardImageUrl:
          type: string
          description: Image URL used for cards.
        bannerImageUrl:
          type: string
          description: Image URL used for the overview.
        documentationUrl:
          type: string
          description: External documentation URL.
        notebookUrl:
          type: string
          description: External baseline notebook URL.
        advancedNotebookUrl:
          type: string
          description: External advanced notebook URL.
        discussionUrl:
          type: string
          description: External discussion platform URL. (either discord or the forum)
        codeUrl:
          type: string
          description: External GitHub URL where the code is located.
        hostedByName:
          type: string
          description: Name of the competition organizer/host.
        prizePoolText:
          type: string
          description: Prize pool in a text form.
        prizePoolShortText:
          type: string
          description: Prize pool in a short text form.
        prizePoolUsd:
          type: number
          format: double
          description: Prize pool in USD.
        projectNameFormat:
          type: string
          description: Default project name format, use `{n}` for incremental.
        teamBased:
          type: boolean
          description: Are the teams enabled?
        onlyTeamLeader:
          type: boolean
          description: Does only the team leader appear on the leaderboard?
        maxTeamSize:
          type: integer
          format: int64
          description: Maximum size for a team.
        projectCreationLimit:
          type: integer
          format: int64
          description: Maximum number of projects per user, if one, a default project is always created when the rules are accepted.
        projectSelectionLimit:
          type: integer
          format: int64
          description: If multiple project can be created, how many should appear on the leaderboard?
        allowPredictions:
          type: boolean
          description: Are direct prediction file accepted for submission?
        encryptSubmissions:
          type: boolean
          description: Should the predictions be encrypted?
        phalaKeyUrl:
          type: string
          description: If the prediction should be encrypted, which URL to use to fetch the public key?
        hideDashboard:
          type: boolean
          description: Is the dashboard tab hidden?
        hideChanges:
          type: boolean
          description: Are the dashboard change cards hidden?
        hidePerformance:
          type: boolean
          description: Is the dashboard performance graph hidden?
        hideRunPerformance:
          type: boolean
          description: Is the dashboard run performance graph hidden?
        hideStatistics:
          type: boolean
          description: Is the statistics card hidden?
        hideNotebookSetupCommand:
          type: boolean
          description: Should the setup command for the notebook be hidden? Only useful for Real Time competitions.
        hideTrainFrequency:
          type: boolean
          description: Should the train frequency field be hidden?
        hideForceFirstTrain:
          type: boolean
          description: Should the train field be hidden?
        web3:
          type: boolean
          description: Are the web3 integrations enabled for the competitions? (e.g. team referendums)
        order:
          type: integer
          format: int64
          description: Sorting order of the competition. (descending)
        statistics:
          $ref: '#/components/schemas/CompetitionStatistics'
          description: Competition submission statistics.
        session:
          $ref: '#/components/schemas/CompetitionSession'
          description: Competition current session. No session if `null`.
        createdAt:
          type: string
          format: date-time
          description: Competition creation timestamp.
        updatedAt:
          type: string
          format: date-time
          description: Competition update timestamp.
        tags:
          type: array
          description: Tags that describe the competition.
          items:
            $ref: '#/components/schemas/CompetitionTag'
        timelineEvents:
          type: array
          description: Non-detailed timeline events.
          items:
            $ref: '#/components/schemas/TimelineEvent'
    LeaderboardDefinition:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        displayName:
          type: string
        visibility:
          $ref: '#/components/schemas/LeaderboardVisibility'
        layout:
          $ref: '#/components/schemas/LeaderboardLayout'
        externalUrl:
          type: string
        progress:
          $ref: '#/components/schemas/LeaderboardProgress'
        round:
          $ref: '#/components/schemas/Round'
        crunch:
          $ref: '#/components/schemas/Crunch'
        phase:
          $ref: '#/components/schemas/Phase'
        targets:
          type: array
          description: Sub-leaderboards when the leaderboard is published.
          items:
            $ref: '#/components/schemas/LeaderboardTarget'
        participants:
          type: array
          description: List of participants when the ranking is still hidden.
          items:
            $ref: '#/components/schemas/PositionParticipant'
        positions:
          type: array
          deprecated: true
          description: Position for real-time competitions.
          items:
            $ref: '#/components/schemas/RealTimePosition'
        valueColumns:
          type: array
          deprecated: true
          description: Columns for real-time competitions.
          items:
            $ref: '#/components/schemas/LeaderboardDefinitionColumn'
        columns:
          type: array
          description: Columns for real-time competitions.
          items:
            $ref: '#/components/schemas/LeaderboardDefinitionColumn'
        default:
          type: boolean
    VisualizationType:
      type: string
      enum:
      - LINE
      - HISTOGRAM
    LeaderboardLayout:
      type: object
      properties:
        hideTeam:
          type: boolean
        hideProgress:
          type: boolean
        hideBest:
          type: boolean
        hideCrunchStartEnd:
          type: boolean
        hideRoundChange:
          type: boolean
        hidePhaseChange:
          type: boolean
        hideCrunchChange:
          type: boolean
        hideCommittedRewards:
          type: boolean
        hideProjectedRewards:
          type: boolean
        bestDisplayBy:
          $ref: '#/components/schemas/LeaderboardBestDisplayBy'
    Phase:
      type: object
      properties:
        id:
          type: integer
          format: int64
        type:
          $ref: '#/components/schemas/PhaseType'
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        dataReleaseId:
          type: integer
          format: int64
        localDataReleaseId:
          type: integer
          format: int64
        cloudCredits:
          anyOf:
          - $comment: Seconds
            example: '60'
          - format: duration
            $anchor: https://en.wikipedia.org/wiki/ISO_week_date
            $comment: ISO 8601 Duration
            example: PT1M
        perCrunchWeight:
          type: number
          format: float
        autoCompute:
          type: boolean
        runDisabled:
          type: boolean
        showPositions:
          type: boolean
        showProjectNames:
          type: boolean
        runDeterminismCheckEnabled:
          type: boolean
        showOnlyRewardedProjectsDefault:
          type: boolean
        splits:
          type: array
          items:
            $ref: '#/components/schemas/PhaseSplit'
    LeaderboardBestDisplayBy:
      type: string
      enum:
      - PER_METRIC
      - WEIGHTED_MEAN
    LeaderboardDefinitionColumnType:
      type: string
      enum:
      - REWARD_RANK
      - PROJECT
      - VALUE
      - TARGET
    C

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/crunchdao/refs/heads/main/openapi/crunchdao-leaderboard-api-openapi.yml