{
  "openapi": "3.1.0",
  "info": {
    "title": "BANKIT, öppna data",
    "version": "1",
    "description": "BANKIT jämför betallösningar, fintechbolag och bankerna som byggs i kod, för företag och utvecklare. Varje avgift är läst i bolagets egen prislista, med källa och datum, och ingen kan köpa en plats. Varje uppgift har källa och datum. Null betyder att uppgiften inte är belagd, aldrig nej."
  },
  "servers": [
    {
      "url": "https://bankit.se/api/v1"
    }
  ],
  "paths": {
    "/kategorier": {
      "get": {
        "summary": "Alla kategorier med antal leverantörer.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Finns inte"
          }
        }
      }
    },
    "/system": {
      "get": {
        "summary": "Alla leverantörer, eller de i en kategori. Vägen heter system av historiska skäl.",
        "parameters": [
          {
            "name": "kategori",
            "in": "query",
            "required": false,
            "description": "Kategorins slug, till exempel ta-betalt-online.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Finns inte"
          }
        }
      }
    },
    "/system/{slug}": {
      "get": {
        "summary": "En leverantör med varje uppgift, datum för kontrollen och adressen till källan.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Finns inte"
          }
        }
      }
    },
    "/jamfor": {
      "get": {
        "summary": "Två eller flera leverantörer mot varandra, kriterium för kriterium. En lucka är null, aldrig ett nej.",
        "parameters": [
          {
            "name": "system",
            "in": "query",
            "required": true,
            "description": "Bolagens slug med komma emellan.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Finns inte"
          }
        }
      }
    },
    "/kriterier": {
      "get": {
        "summary": "Frågorna varje leverantör prövas mot.",
        "parameters": [
          {
            "name": "kategori",
            "in": "query",
            "required": false,
            "description": "Kategorins slug.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Finns inte"
          }
        }
      }
    },
    "/topplistor": {
      "get": {
        "summary": "Topplistorna med kraven de räknas på.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Finns inte"
          }
        }
      }
    },
    "/topplistor/{slug}": {
      "get": {
        "summary": "En topplista med varje bolags plats, vilka krav det uppfyller, hur många uppgifter som har källa och vad som skulle flytta upp det.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Finns inte"
          }
        }
      }
    },
    "/fragor": {
      "get": {
        "summary": "Frågor som köpare ställer, med svar räknade ur uppgifterna. Varje fråga har ett fast id.",
        "parameters": [
          {
            "name": "kategori",
            "in": "query",
            "required": false,
            "description": "Kategorins slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "system",
            "in": "query",
            "required": false,
            "description": "Ett bolags slug.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Finns inte"
          }
        }
      }
    },
    "/artiklar": {
      "get": {
        "summary": "Notiser och förklaringar med sina källor.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Finns inte"
          }
        }
      }
    },
    "/andringar": {
      "get": {
        "summary": "De senast uppdaterade uppgifterna: vad som står nu och när det skrevs in. Ett byte kan vara vår egen rättning, så det gamla värdet lämnas inte ut.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "JSON",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Finns inte"
          }
        }
      }
    },
    "/komplettering": {
      "post": {
        "summary": "Lämna en rättelse eller komplettering åt en människa. Den hamnar i redaktionens kö och publiceras aldrig direkt.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "system",
                  "uppgift",
                  "namn",
                  "epost"
                ],
                "properties": {
                  "system": {
                    "type": "string",
                    "description": "Leverantörens adressnamn."
                  },
                  "uppgift": {
                    "type": "string",
                    "minLength": 10,
                    "maxLength": 600,
                    "description": "Vad som är fel eller saknas, med rätt uppgift."
                  },
                  "sida": {
                    "type": "string",
                    "description": "Sidan där uppgiften står, helst på leverantörens egen sajt."
                  },
                  "kriterium": {
                    "type": "string",
                    "description": "Kriteriets nyckel."
                  },
                  "typ": {
                    "type": "string",
                    "enum": [
                      "rattelse",
                      "komplettering"
                    ]
                  },
                  "namn": {
                    "type": "string",
                    "description": "Personen agenten skickar för."
                  },
                  "epost": {
                    "type": "string",
                    "description": "Personens e-post."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Mottagen"
          },
          "400": {
            "description": "Fält saknas, med en lista över vilka"
          }
        }
      }
    }
  }
}