{
 "openapi": "3.1.0",
 "info": {
  "title": "Jasvel open Jass data",
  "version": "1.0.0",
  "summary": "The rules of Schieber Jass as machine-readable tables.",
  "description": "Keyless, CORS-open, CC BY 4.0 with attribution. Seven datasets covering card values and strength order, Weis, the contracts and their contested multiplier tables, the written score, the glossary, the site's own pages, and what the Jasvel app does.\n\nThree things to know before quoting any of it:\n\n1. The multiplier is a property of the table, not of the game. Three real tables are published and none is marked correct.\n2. Undenufe inverts the trick and never the meld.\n3. Trick points, Weis and Stöck are added together before the factor is applied.",
  "license": {
   "name": "Creative Commons Attribution 4.0 International",
   "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "contact": {
   "name": "Jasvel",
   "url": "https://jasvel.org/api/",
   "email": "support@jasvel.org"
  }
 },
 "servers": [
  {
   "url": "https://jasvel.org/api/v1",
   "description": "Static JSON, rebuilt with the site."
  }
 ],
 "externalDocs": {
  "url": "https://jasvel.org/api/",
  "description": "Human documentation, with the field semantics."
 },
 "paths": {
  "/card-values.json": {
   "get": {
    "operationId": "get_card_values",
    "summary": "Card values and strength order",
    "description": "Points in all four columns, the three strength ladders, and the 152 that checks a deal.",
    "responses": {
     "200": {
      "description": "Card values and strength order",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "id",
          "generated",
          "licence",
          "count",
          "data"
         ],
         "properties": {
          "id": {
           "type": "string",
           "const": "card-values"
          },
          "title": {
           "type": "string"
          },
          "description": {
           "type": "string"
          },
          "generated": {
           "type": "string",
           "format": "date-time"
          },
          "publisher": {
           "type": "object"
          },
          "licence": {
           "type": "object"
          },
          "reference_sources": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "scope_limits": {
           "type": "object"
          },
          "not_published": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "count": {
           "type": "integer"
          },
          "data": {
           "type": "array",
           "items": {
            "type": "object"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/weis.json": {
   "get": {
    "operationId": "get_weis",
    "summary": "Weis — melds and how they are compared",
    "description": "Every meld with its value, and the five rules about Weis that are most often got wrong.",
    "responses": {
     "200": {
      "description": "Weis — melds and how they are compared",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "id",
          "generated",
          "licence",
          "count",
          "data"
         ],
         "properties": {
          "id": {
           "type": "string",
           "const": "weis"
          },
          "title": {
           "type": "string"
          },
          "description": {
           "type": "string"
          },
          "generated": {
           "type": "string",
           "format": "date-time"
          },
          "publisher": {
           "type": "object"
          },
          "licence": {
           "type": "object"
          },
          "reference_sources": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "scope_limits": {
           "type": "object"
          },
          "not_published": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "count": {
           "type": "integer"
          },
          "data": {
           "type": "array",
           "items": {
            "type": "object"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/contracts.json": {
   "get": {
    "operationId": "get_contracts",
    "summary": "Contracts, multipliers and targets",
    "description": "The six contracts and three published multiplier tables, with the bodies that publish each.",
    "responses": {
     "200": {
      "description": "Contracts, multipliers and targets",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "id",
          "generated",
          "licence",
          "count",
          "data"
         ],
         "properties": {
          "id": {
           "type": "string",
           "const": "contracts"
          },
          "title": {
           "type": "string"
          },
          "description": {
           "type": "string"
          },
          "generated": {
           "type": "string",
           "format": "date-time"
          },
          "publisher": {
           "type": "object"
          },
          "licence": {
           "type": "object"
          },
          "reference_sources": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "scope_limits": {
           "type": "object"
          },
          "not_published": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "count": {
           "type": "integer"
          },
          "data": {
           "type": "array",
           "items": {
            "type": "object"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/scoring.json": {
   "get": {
    "operationId": "get_scoring",
    "summary": "How a round is scored and written",
    "description": "The order of operations, the Jasstafel notation, the Coiffeur sheet and the Differenzler round.",
    "responses": {
     "200": {
      "description": "How a round is scored and written",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "id",
          "generated",
          "licence",
          "count",
          "data"
         ],
         "properties": {
          "id": {
           "type": "string",
           "const": "scoring"
          },
          "title": {
           "type": "string"
          },
          "description": {
           "type": "string"
          },
          "generated": {
           "type": "string",
           "format": "date-time"
          },
          "publisher": {
           "type": "object"
          },
          "licence": {
           "type": "object"
          },
          "reference_sources": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "scope_limits": {
           "type": "object"
          },
          "not_published": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "count": {
           "type": "integer"
          },
          "data": {
           "type": "array",
           "items": {
            "type": "object"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/glossary.json": {
   "get": {
    "operationId": "get_glossary",
    "summary": "The Swiss terms of art",
    "description": "Every word used at a Jass table, defined in English, German and French.",
    "responses": {
     "200": {
      "description": "The Swiss terms of art",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "id",
          "generated",
          "licence",
          "count",
          "data"
         ],
         "properties": {
          "id": {
           "type": "string",
           "const": "glossary"
          },
          "title": {
           "type": "string"
          },
          "description": {
           "type": "string"
          },
          "generated": {
           "type": "string",
           "format": "date-time"
          },
          "publisher": {
           "type": "object"
          },
          "licence": {
           "type": "object"
          },
          "reference_sources": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "scope_limits": {
           "type": "object"
          },
          "not_published": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "count": {
           "type": "integer"
          },
          "data": {
           "type": "array",
           "items": {
            "type": "object"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/pages.json": {
   "get": {
    "operationId": "get_pages",
    "summary": "Pages with their quotable answers",
    "description": "Every indexable page in three languages with its self-contained bottom line and markdown twin.",
    "responses": {
     "200": {
      "description": "Pages with their quotable answers",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "id",
          "generated",
          "licence",
          "count",
          "data"
         ],
         "properties": {
          "id": {
           "type": "string",
           "const": "pages"
          },
          "title": {
           "type": "string"
          },
          "description": {
           "type": "string"
          },
          "generated": {
           "type": "string",
           "format": "date-time"
          },
          "publisher": {
           "type": "object"
          },
          "licence": {
           "type": "object"
          },
          "reference_sources": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "scope_limits": {
           "type": "object"
          },
          "not_published": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "count": {
           "type": "integer"
          },
          "data": {
           "type": "array",
           "items": {
            "type": "object"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/jasvel.json": {
   "get": {
    "operationId": "get_jasvel",
    "summary": "What the app does and does not do",
    "description": "The offline Schieber app, with an explicit list of what it has no support for.",
    "responses": {
     "200": {
      "description": "What the app does and does not do",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "id",
          "generated",
          "licence",
          "count",
          "data"
         ],
         "properties": {
          "id": {
           "type": "string",
           "const": "jasvel"
          },
          "title": {
           "type": "string"
          },
          "description": {
           "type": "string"
          },
          "generated": {
           "type": "string",
           "format": "date-time"
          },
          "publisher": {
           "type": "object"
          },
          "licence": {
           "type": "object"
          },
          "reference_sources": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "scope_limits": {
           "type": "object"
          },
          "not_published": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "count": {
           "type": "integer"
          },
          "data": {
           "type": "array",
           "items": {
            "type": "object"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/index.json": {
   "get": {
    "operationId": "get_index",
    "summary": "Entry point",
    "description": "The dataset list, the licence, the scope limits and what is deliberately not published.",
    "responses": {
     "200": {
      "description": "The catalogue",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/status.json": {
   "get": {
    "operationId": "get_status",
    "summary": "Build stamp and endpoint list",
    "responses": {
     "200": {
      "description": "Status",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  }
 }
}