{
  "openapi": "3.1.0",
  "info": {
    "title": "Deep Almanac: Australian savings account rates",
    "version": "1.0.0",
    "description": "Covers the banks, credit unions and other deposit-takers on the Consumer Data Right register that publish savings accounts; every rate is as the bank's own product data states it. Transaction (everyday) accounts are in that data and in rates.json but are not ranked. Not every rate a bank advertises is in its product data. Bonus conditions are summarised from its wording, and the conditions and limits it leaves out (what counts as a deposit, age, membership, where the holder must live) are read from the bank's own terms and pages, quoted and re-read daily. kind ongoing is the conditional rate: the rate paid in a month in which every bonus condition is met, with no introductory period; intro is the introductory rate: the rate paid during an introductory period (the conditional rate plus the introductory add-on, or the whole introductory rate), and for an account with no introductory offer it equals the conditional rate; base is the base rate: the rate paid in a month in which the bonus conditions are not all met, or on an account with none. Every rate is the rate at the slice's balance: whole-balance tiers take the tier the balance is in, stepped (per-tier) tiers are blended over the balance.",
    "license": {
      "name": "Deep Almanac's own work CC BY 4.0; source data under its own terms, listed in licences in each index.json",
      "url": "https://deepalmanac.com/terms#data-licences"
    }
  },
  "servers": [
    {
      "url": "https://deepalmanac.com"
    }
  ],
  "paths": {
    "/au/finance/savings-accounts/v1/index.json": {
      "get": {
        "summary": "Dataset index",
        "responses": {
          "200": {
            "description": "Index",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "The dataset's index: timestamps, files, and how to answer questions",
                  "properties": {
                    "dataset": {
                      "type": "string",
                      "description": "Dataset name."
                    },
                    "page": {
                      "type": "string",
                      "description": "Human-readable page for the dataset.",
                      "format": "uri"
                    },
                    "start_here": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "description": "The small file that answers most questions here: answer_file (a URL template), inputs (how to fill it), example (a filled-in URL) and sometimes also (the next file for a common variant).",
                      "properties": {
                        "answer_file": {
                          "type": "string",
                          "description": "URL template of the answer file."
                        },
                        "inputs": {
                          "type": "string",
                          "description": "What each placeholder takes."
                        },
                        "example": {
                          "type": "string",
                          "description": "A filled-in answer file URL.",
                          "format": "uri"
                        },
                        "also": {
                          "type": "string",
                          "description": "Another file for a common variant of the question."
                        },
                        "lookup": {
                          "type": "string",
                          "description": "Where present: a /v1/lookup URL that takes the reader's own numbers, applies the bucket rules and redirects to the answer file.",
                          "format": "uri"
                        },
                        "compare": {
                          "type": "string",
                          "description": "Where present: a /v1/compare URL that ranks every rate at the reader's exact amount and answers with JSON directly.",
                          "format": "uri"
                        }
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "description": "When this index was written, UTC, YYYY-MM-DDTHH:MM:SSZ.",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
                    },
                    "fetched_at": {
                      "type": "string",
                      "description": "When the source was last fetched, UTC, YYYY-MM-DDTHH:MM:SSZ.",
                      "format": "date-time",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
                    },
                    "data_as_of": {
                      "type": "string",
                      "description": "How current the data is: a date (YYYY-MM-DD) or a UTC timestamp (YYYY-MM-DDTHH:MM:SSZ); data_as_of_basis says what it means here.",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$"
                    },
                    "data_as_of_basis": {
                      "type": "string",
                      "description": "One sentence saying what data_as_of means for this dataset."
                    },
                    "source": {
                      "type": "string",
                      "description": "Data source statement."
                    },
                    "licence_note": {
                      "type": "string",
                      "description": "Terms of reuse and the not-advice note."
                    },
                    "licences": {
                      "type": "array",
                      "description": "What may be reused and on what terms, layer by layer: each layer's source, the fields it covers, its licence and the attribution it asks for. The last layer is Deep Almanac's own work (CC BY 4.0), covering every field no other layer names. Reusing a field means meeting the terms of the layer that covers it.",
                      "items": {
                        "type": "object",
                        "required": [
                          "layer",
                          "covers",
                          "licence",
                          "licence_url",
                          "attribution"
                        ],
                        "properties": {
                          "layer": {
                            "type": "string",
                            "description": "The source."
                          },
                          "covers": {
                            "type": "string",
                            "description": "The fields it covers."
                          },
                          "licence": {
                            "type": "string",
                            "description": "Its licence, or why there is none."
                          },
                          "licence_url": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "uri",
                            "description": "The licence's own page, where it has one."
                          },
                          "attribution": {
                            "type": "string",
                            "description": "The credit the layer asks for."
                          }
                        }
                      }
                    },
                    "questions": {
                      "type": "string",
                      "description": "This dataset's questions.json: what to ask the reader first and which file answers each.",
                      "format": "uri"
                    },
                    "openapi": {
                      "type": "string",
                      "description": "This dataset's OpenAPI document.",
                      "format": "uri"
                    },
                    "status": {
                      "type": "string",
                      "description": "https://deepalmanac.com/status.json: when every dataset was last fetched and when it counts as overdue.",
                      "format": "uri"
                    },
                    "llms": {
                      "type": "string",
                      "description": "https://deepalmanac.com/llms.txt: the site's guide for language models.",
                      "format": "uri"
                    },
                    "files": {
                      "type": "array",
                      "description": "Every top-level file this dataset publishes, as absolute URLs.",
                      "items": {
                        "type": "string",
                        "format": "uri"
                      }
                    },
                    "file_guide": {
                      "type": "array",
                      "description": "What each of those files holds, in the same order.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "file": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "description": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  },
                  "required": [
                    "dataset",
                    "page",
                    "start_here",
                    "generated_at",
                    "fetched_at",
                    "data_as_of",
                    "data_as_of_basis",
                    "source",
                    "licence_note",
                    "licences",
                    "questions",
                    "openapi",
                    "status",
                    "llms",
                    "files"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/au/finance/savings-accounts/v1/questions.json": {
      "get": {
        "summary": "What to ask the reader, and which file answers",
        "responses": {
          "200": {
            "description": "Question guide",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "note",
                    "questions",
                    "commentary",
                    "commentary_note",
                    "what_it_cannot_answer_yet",
                    "context_this_dataset_does_not_hold",
                    "not_advice"
                  ],
                  "properties": {
                    "note": {
                      "type": "string"
                    },
                    "questions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "question": {
                            "type": "string"
                          },
                          "also_asked_as": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "has_no_single_answer": {
                            "type": "boolean",
                            "description": "True when the inputs below change the answer."
                          },
                          "ask_the_reader_first": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "input": {
                                  "type": "string"
                                },
                                "why": {
                                  "type": "string"
                                },
                                "how_much_it_moves_the_answer": {
                                  "type": "string",
                                  "description": "Computed from today's data."
                                }
                              }
                            }
                          },
                          "then_read": {
                            "type": "object",
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "Label to URL or URL template; fill {placeholders} from the inputs."
                          },
                          "say_as_well": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "commentary": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "topic": {
                            "type": "string"
                          },
                          "what_you_will_see": {
                            "type": "string"
                          },
                          "why_it_is_correct": {
                            "type": "string"
                          },
                          "what_it_actually_means": {
                            "type": "string"
                          },
                          "say_this_as_well": {
                            "type": "string"
                          },
                          "do_not": {
                            "type": "string"
                          },
                          "check_it_yourself": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "commentary_note": {
                      "type": "string"
                    },
                    "what_it_cannot_answer_yet": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "question": {
                            "type": "string"
                          },
                          "why": {
                            "type": "string"
                          },
                          "where_to_send_the_reader": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "context_this_dataset_does_not_hold": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "not_advice": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/au/finance/savings-accounts/v1/best.json": {
      "get": {
        "summary": "Every ranking slice in one file",
        "responses": {
          "200": {
            "description": "Rankings",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "guarantee_groups": {
                      "type": "array",
                      "description": "Brands that are one bank for the Financial Claims Scheme's $250,000 limit; see guarantee_groups_note.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "adi": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "abn": {
                            "type": "string"
                          },
                          "apra_trading_names": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "brands": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "brand_slug": {
                                  "type": "string"
                                },
                                "brand_label": {
                                  "type": "string"
                                },
                                "has_savings_account_rates": {
                                  "type": "boolean"
                                }
                              }
                            }
                          },
                          "unconfirmed_brands": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "brand_slug": {
                                  "type": "string"
                                },
                                "brand_label": {
                                  "type": "string"
                                },
                                "has_savings_account_rates": {
                                  "type": "boolean"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "guarantee_groups_note": {
                      "type": "string"
                    },
                    "rankings": {
                      "type": "object",
                      "description": "rankings[segment][kind][balance] = entries"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/au/finance/savings-accounts/v1/best/{segment}/{kind}/{balance}.json": {
      "get": {
        "summary": "One ranking slice, every bank",
        "parameters": [
          {
            "name": "segment",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "personal",
                "smsf",
                "business"
              ]
            }
          },
          {
            "name": "kind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ongoing",
                "intro",
                "base"
              ]
            }
          },
          {
            "name": "balance",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                10000,
                50000,
                250000
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Slice",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "segment": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string"
                    },
                    "balance": {
                      "type": "integer"
                    },
                    "generated_at": {
                      "type": "string"
                    },
                    "entries": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "rank": {
                            "type": "integer"
                          },
                          "brand": {
                            "type": "string"
                          },
                          "brand_label": {
                            "type": "string"
                          },
                          "brand_slug": {
                            "type": "string"
                          },
                          "legal_entity_abn": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "product_id": {
                            "type": "string"
                          },
                          "product_name": {
                            "type": "string"
                          },
                          "product_label": {
                            "type": "string"
                          },
                          "product_slug": {
                            "type": "string",
                            "description": "product_label as a URL segment, unique within the bank."
                          },
                          "page": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Site-relative path of the account's own page (its rate tiers, conditions, features and fees); null for product types with no page."
                          },
                          "product_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "terms_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "account_type": {
                            "type": "string",
                            "enum": [
                              "savings",
                              "cash_management",
                              "notice",
                              "transaction",
                              "offset",
                              "foreign_currency",
                              "farm_management_deposit",
                              "term_deposit",
                              "other"
                            ]
                          },
                          "segments": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "segment": {
                            "type": "string"
                          },
                          "kind": {
                            "type": "string",
                            "enum": [
                              "ongoing",
                              "intro",
                              "base"
                            ]
                          },
                          "balance": {
                            "type": "integer"
                          },
                          "rate": {
                            "type": "number",
                            "description": "The rate at the slice's balance for the slice's kind, as a fraction."
                          },
                          "rate_pct": {
                            "type": "number"
                          },
                          "base_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The base rate: paid when no bonus condition is met."
                          },
                          "bonus_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The bonus at this balance: added to the base rate, or the whole rate when bonus_is_total."
                          },
                          "bonus_is_total": {
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "intro_is_total": {
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "intro_is_bonus_rate": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "description": "The feed types the introductory row BONUS: the bank calls its introductory rate a bonus rate (Defence Bank's Salute Account)."
                          },
                          "intro_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The introductory add-on at this balance (the amount above the conditional rate, ongoing)."
                          },
                          "intro_total_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "intro_months": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "intro_conditions": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "rate_after_intro_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "On kind intro entries: the conditional rate (ongoing) the account falls to."
                          },
                          "balance_from": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "balance_to": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "rate_application": {
                            "type": "string",
                            "enum": [
                              "whole_balance",
                              "per_tier",
                              "mixed"
                            ]
                          },
                          "max_bonus_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "min_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "max_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "notice_days": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "bonus_conditions": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string"
                                },
                                "value": {},
                                "text": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              }
                            }
                          },
                          "extra_bonuses": {
                            "type": "array",
                            "items": {
                              "type": "object"
                            }
                          },
                          "interest_paid_correction": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "description": "Set when interest_paid is corrected from the bank's own page (INTEREST_PAID_CORRECTIONS): {quote, url, checked, citation}; citation is the five-field citation llms.txt describes."
                          },
                          "min_balance_correction": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "description": "Set when min_balance is corrected from the bank's own terms (MIN_BALANCE_CORRECTIONS): {quote, url, checked, citation}; citation is the five-field citation llms.txt describes."
                          },
                          "rate_correction": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "description": "Set when the feed's rate rows are corrected from the bank's own page (RATE_CORRECTIONS): {quote, url, checked, citation}, the bank's sentence and where it is; citation is the five-field citation llms.txt describes."
                          },
                          "features": {
                            "type": "object"
                          },
                          "feature_tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "features as short labels."
                          },
                          "interest_paid": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "interest_calculated": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "monthly_fee": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "null when the feed states no account-keeping fee."
                          },
                          "monthly_fee_note": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "The fee's own words on who does not pay it (a balance, an age), when the feed gives any."
                          },
                          "fees_without_amount": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "age_min": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "age_max": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "restrictions": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "age_limited",
                                "christmas_club",
                                "closed_to_new",
                                "existing_customers",
                                "linked_account",
                                "notice",
                                "occupation_membership",
                                "organisation_only",
                                "pensioner",
                                "region_limited",
                                "staff",
                                "student",
                                "via_third_party"
                              ]
                            }
                          },
                          "conditions": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "record_stale": {
                            "type": "boolean"
                          },
                          "source_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "source_snapshot": {
                            "type": "string",
                            "description": "Site-relative path of our verbatim snapshot of the CDR detail response."
                          },
                          "bank_last_updated": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "date-time"
                          }
                        }
                      }
                    },
                    "entries_all": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "rank": {
                            "type": "integer"
                          },
                          "brand": {
                            "type": "string"
                          },
                          "brand_label": {
                            "type": "string"
                          },
                          "brand_slug": {
                            "type": "string"
                          },
                          "legal_entity_abn": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "product_id": {
                            "type": "string"
                          },
                          "product_name": {
                            "type": "string"
                          },
                          "product_label": {
                            "type": "string"
                          },
                          "product_slug": {
                            "type": "string",
                            "description": "product_label as a URL segment, unique within the bank."
                          },
                          "page": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Site-relative path of the account's own page (its rate tiers, conditions, features and fees); null for product types with no page."
                          },
                          "product_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "terms_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "account_type": {
                            "type": "string",
                            "enum": [
                              "savings",
                              "cash_management",
                              "notice",
                              "transaction",
                              "offset",
                              "foreign_currency",
                              "farm_management_deposit",
                              "term_deposit",
                              "other"
                            ]
                          },
                          "segments": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "segment": {
                            "type": "string"
                          },
                          "kind": {
                            "type": "string",
                            "enum": [
                              "ongoing",
                              "intro",
                              "base"
                            ]
                          },
                          "balance": {
                            "type": "integer"
                          },
                          "rate": {
                            "type": "number",
                            "description": "The rate at the slice's balance for the slice's kind, as a fraction."
                          },
                          "rate_pct": {
                            "type": "number"
                          },
                          "base_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The base rate: paid when no bonus condition is met."
                          },
                          "bonus_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The bonus at this balance: added to the base rate, or the whole rate when bonus_is_total."
                          },
                          "bonus_is_total": {
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "intro_is_total": {
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "intro_is_bonus_rate": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "description": "The feed types the introductory row BONUS: the bank calls its introductory rate a bonus rate (Defence Bank's Salute Account)."
                          },
                          "intro_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The introductory add-on at this balance (the amount above the conditional rate, ongoing)."
                          },
                          "intro_total_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "intro_months": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "intro_conditions": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "rate_after_intro_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "On kind intro entries: the conditional rate (ongoing) the account falls to."
                          },
                          "balance_from": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "balance_to": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "rate_application": {
                            "type": "string",
                            "enum": [
                              "whole_balance",
                              "per_tier",
                              "mixed"
                            ]
                          },
                          "max_bonus_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "min_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "max_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "notice_days": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "bonus_conditions": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string"
                                },
                                "value": {},
                                "text": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              }
                            }
                          },
                          "extra_bonuses": {
                            "type": "array",
                            "items": {
                              "type": "object"
                            }
                          },
                          "interest_paid_correction": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "description": "Set when interest_paid is corrected from the bank's own page (INTEREST_PAID_CORRECTIONS): {quote, url, checked, citation}; citation is the five-field citation llms.txt describes."
                          },
                          "min_balance_correction": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "description": "Set when min_balance is corrected from the bank's own terms (MIN_BALANCE_CORRECTIONS): {quote, url, checked, citation}; citation is the five-field citation llms.txt describes."
                          },
                          "rate_correction": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "description": "Set when the feed's rate rows are corrected from the bank's own page (RATE_CORRECTIONS): {quote, url, checked, citation}, the bank's sentence and where it is; citation is the five-field citation llms.txt describes."
                          },
                          "features": {
                            "type": "object"
                          },
                          "feature_tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "features as short labels."
                          },
                          "interest_paid": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "interest_calculated": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "monthly_fee": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "null when the feed states no account-keeping fee."
                          },
                          "monthly_fee_note": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "The fee's own words on who does not pay it (a balance, an age), when the feed gives any."
                          },
                          "fees_without_amount": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "age_min": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "age_max": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "restrictions": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "age_limited",
                                "christmas_club",
                                "closed_to_new",
                                "existing_customers",
                                "linked_account",
                                "notice",
                                "occupation_membership",
                                "organisation_only",
                                "pensioner",
                                "region_limited",
                                "staff",
                                "student",
                                "via_third_party"
                              ]
                            }
                          },
                          "conditions": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "record_stale": {
                            "type": "boolean"
                          },
                          "source_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "source_snapshot": {
                            "type": "string",
                            "description": "Site-relative path of our verbatim snapshot of the CDR detail response."
                          },
                          "bank_last_updated": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "date-time"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/au/finance/savings-accounts/v1/top/{segment}/{kind}/{balance}.json": {
      "get": {
        "summary": "One ranking slice, top 10, compact",
        "parameters": [
          {
            "name": "segment",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "personal",
                "smsf",
                "business"
              ]
            }
          },
          {
            "name": "kind",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ongoing",
                "intro",
                "base"
              ]
            }
          },
          {
            "name": "balance",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "enum": [
                10000,
                50000,
                250000
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Top 10",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "segment": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string"
                    },
                    "balance": {
                      "type": "integer"
                    },
                    "generated_at": {
                      "type": "string"
                    },
                    "data_as_of": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "note": {
                      "type": "string"
                    },
                    "full_ranking": {
                      "type": "string"
                    },
                    "banks_ranked": {
                      "type": "integer"
                    },
                    "top": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "A ranked rate cut to what it takes to quote it.",
                        "properties": {
                          "rank": {
                            "type": "integer"
                          },
                          "brand_label": {
                            "type": "string"
                          },
                          "brand_slug": {
                            "type": "string"
                          },
                          "product_label": {
                            "type": "string"
                          },
                          "page": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Site-relative path of the account's own page (its rate tiers, conditions, features and fees); null for product types with no page."
                          },
                          "account_type": {
                            "type": "string",
                            "enum": [
                              "savings",
                              "cash_management",
                              "notice",
                              "transaction",
                              "offset",
                              "foreign_currency",
                              "farm_management_deposit",
                              "term_deposit",
                              "other"
                            ]
                          },
                          "rate_pct": {
                            "type": "number"
                          },
                          "base_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The base rate: paid when no bonus condition is met."
                          },
                          "bonus_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The bonus at this balance: added to the base rate, or the whole rate when bonus_is_total."
                          },
                          "bonus_is_total": {
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "intro_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The introductory add-on at this balance (the amount above the conditional rate, ongoing)."
                          },
                          "intro_months": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "rate_after_intro_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "On kind intro entries: the conditional rate (ongoing) the account falls to."
                          },
                          "max_bonus_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "min_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "max_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "rate_application": {
                            "type": "string",
                            "enum": [
                              "whole_balance",
                              "per_tier",
                              "mixed"
                            ]
                          },
                          "bonus_conditions": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string"
                                },
                                "value": {},
                                "text": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              }
                            }
                          },
                          "conditions": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "restrictions": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "age_limited",
                                "christmas_club",
                                "closed_to_new",
                                "existing_customers",
                                "linked_account",
                                "notice",
                                "occupation_membership",
                                "organisation_only",
                                "pensioner",
                                "region_limited",
                                "staff",
                                "student",
                                "via_third_party"
                              ]
                            }
                          },
                          "feature_tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "features as short labels."
                          },
                          "interest_paid": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "monthly_fee": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "null when the feed states no account-keeping fee."
                          },
                          "age_min": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "age_max": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "record_stale": {
                            "type": "boolean"
                          },
                          "product_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "terms_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "bank_last_updated": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "date-time"
                          }
                        },
                        "required": [
                          "rank",
                          "brand_label",
                          "brand_slug",
                          "product_label",
                          "page",
                          "account_type",
                          "rate_pct",
                          "base_rate_pct",
                          "bonus_rate_pct",
                          "bonus_is_total",
                          "intro_rate_pct",
                          "intro_months",
                          "rate_after_intro_pct",
                          "max_bonus_balance",
                          "min_balance",
                          "max_balance",
                          "rate_application",
                          "bonus_conditions",
                          "conditions",
                          "restrictions",
                          "feature_tags",
                          "interest_paid",
                          "monthly_fee",
                          "age_min",
                          "age_max",
                          "record_stale",
                          "product_url",
                          "terms_url",
                          "bank_last_updated"
                        ]
                      }
                    },
                    "top_all": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "object",
                        "description": "A ranked rate cut to what it takes to quote it.",
                        "properties": {
                          "rank": {
                            "type": "integer"
                          },
                          "brand_label": {
                            "type": "string"
                          },
                          "brand_slug": {
                            "type": "string"
                          },
                          "product_label": {
                            "type": "string"
                          },
                          "page": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Site-relative path of the account's own page (its rate tiers, conditions, features and fees); null for product types with no page."
                          },
                          "account_type": {
                            "type": "string",
                            "enum": [
                              "savings",
                              "cash_management",
                              "notice",
                              "transaction",
                              "offset",
                              "foreign_currency",
                              "farm_management_deposit",
                              "term_deposit",
                              "other"
                            ]
                          },
                          "rate_pct": {
                            "type": "number"
                          },
                          "base_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The base rate: paid when no bonus condition is met."
                          },
                          "bonus_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The bonus at this balance: added to the base rate, or the whole rate when bonus_is_total."
                          },
                          "bonus_is_total": {
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "intro_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The introductory add-on at this balance (the amount above the conditional rate, ongoing)."
                          },
                          "intro_months": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "rate_after_intro_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "On kind intro entries: the conditional rate (ongoing) the account falls to."
                          },
                          "max_bonus_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "min_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "max_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "rate_application": {
                            "type": "string",
                            "enum": [
                              "whole_balance",
                              "per_tier",
                              "mixed"
                            ]
                          },
                          "bonus_conditions": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string"
                                },
                                "value": {},
                                "text": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              }
                            }
                          },
                          "conditions": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "restrictions": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "age_limited",
                                "christmas_club",
                                "closed_to_new",
                                "existing_customers",
                                "linked_account",
                                "notice",
                                "occupation_membership",
                                "organisation_only",
                                "pensioner",
                                "region_limited",
                                "staff",
                                "student",
                                "via_third_party"
                              ]
                            }
                          },
                          "feature_tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "features as short labels."
                          },
                          "interest_paid": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "monthly_fee": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "null when the feed states no account-keeping fee."
                          },
                          "age_min": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "age_max": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "record_stale": {
                            "type": "boolean"
                          },
                          "product_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "terms_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "bank_last_updated": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "date-time"
                          }
                        },
                        "required": [
                          "rank",
                          "brand_label",
                          "brand_slug",
                          "product_label",
                          "page",
                          "account_type",
                          "rate_pct",
                          "base_rate_pct",
                          "bonus_rate_pct",
                          "bonus_is_total",
                          "intro_rate_pct",
                          "intro_months",
                          "rate_after_intro_pct",
                          "max_bonus_balance",
                          "min_balance",
                          "max_balance",
                          "rate_application",
                          "bonus_conditions",
                          "conditions",
                          "restrictions",
                          "feature_tags",
                          "interest_paid",
                          "monthly_fee",
                          "age_min",
                          "age_max",
                          "record_stale",
                          "product_url",
                          "terms_url",
                          "bank_last_updated"
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/au/finance/savings-accounts/v1/curves.json": {
      "get": {
        "summary": "The best rate at each sample balance per segment and kind (the page's chart)",
        "responses": {
          "200": {
            "description": "Curves",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "note": {
                      "type": "string"
                    },
                    "balances": {
                      "type": "array",
                      "items": {
                        "type": "integer"
                      },
                      "description": "The sample balances, ascending."
                    },
                    "reference_balances": {
                      "type": "array",
                      "items": {
                        "type": "integer"
                      }
                    },
                    "ticks": {
                      "type": "array",
                      "items": {
                        "type": "integer"
                      },
                      "description": "The chart's x-axis ticks."
                    },
                    "segments": {
                      "type": "object",
                      "description": "segments[segment][kind][i] is the point at balances[i], or null.",
                      "additionalProperties": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "array",
                          "items": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "properties": {
                              "balance": {
                                "type": "integer"
                              },
                              "rate_pct": {
                                "type": "number"
                              },
                              "brand_label": {
                                "type": "string"
                              },
                              "brand_slug": {
                                "type": "string"
                              },
                              "product_label": {
                                "type": "string"
                              },
                              "page": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "including": {
                                "type": "object",
                                "description": "Present where an account off by default beats the open best: the best with that checkbox group let in (age, occupation or both).",
                                "properties": {
                                  "age": {
                                    "type": "object",
                                    "properties": {
                                      "balance": {
                                        "type": "integer"
                                      },
                                      "rate_pct": {
                                        "type": "number"
                                      },
                                      "brand_label": {
                                        "type": "string"
                                      },
                                      "brand_slug": {
                                        "type": "string"
                                      },
                                      "product_label": {
                                        "type": "string"
                                      },
                                      "page": {
                                        "type": [
                                          "string",
                                          "null"
                                        ]
                                      }
                                    }
                                  },
                                  "occupation": {
                                    "type": "object",
                                    "properties": {
                                      "balance": {
                                        "type": "integer"
                                      },
                                      "rate_pct": {
                                        "type": "number"
                                      },
                                      "brand_label": {
                                        "type": "string"
                                      },
                                      "brand_slug": {
                                        "type": "string"
                                      },
                                      "product_label": {
                                        "type": "string"
                                      },
                                      "page": {
                                        "type": [
                                          "string",
                                          "null"
                                        ]
                                      }
                                    }
                                  },
                                  "both": {
                                    "oneOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "balance": {
                                            "type": "integer"
                                          },
                                          "rate_pct": {
                                            "type": "number"
                                          },
                                          "brand_label": {
                                            "type": "string"
                                          },
                                          "brand_slug": {
                                            "type": "string"
                                          },
                                          "product_label": {
                                            "type": "string"
                                          },
                                          "page": {
                                            "type": [
                                              "string",
                                              "null"
                                            ]
                                          }
                                        }
                                      },
                                      {
                                        "type": "string",
                                        "enum": [
                                          "age",
                                          "occupation"
                                        ],
                                        "description": "The group whose best is also the best with both let in."
                                      }
                                    ]
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/au/finance/savings-accounts/v1/products.json": {
      "get": {
        "summary": "Every ranked product with its rate schedules, to rank at any balance",
        "responses": {
          "200": {
            "description": "Products",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "note": {
                      "type": "string",
                      "description": "How to compute the rate at a balance and rank the products."
                    },
                    "rate_limits": {
                      "type": "object",
                      "properties": {
                        "min": {
                          "type": "number"
                        },
                        "max": {
                          "type": "number"
                        },
                        "plausible_max_addon_sum": {
                          "type": "number"
                        }
                      }
                    },
                    "same_bank": {
                      "type": "object",
                      "description": "Brands that are one bank (ADI) for the Financial Claims Scheme's $250,000 limit, keyed by brand_slug: {bank, abn, confirmed}. Brands with the same abn share one limit; confirmed is false where APRA's list does not name the brand. A brand not here is its own bank.",
                      "additionalProperties": {
                        "type": "object",
                        "properties": {
                          "bank": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "abn": {
                            "type": "string"
                          },
                          "confirmed": {
                            "type": "boolean"
                          }
                        }
                      }
                    },
                    "product_count": {
                      "type": "integer"
                    },
                    "products": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "A ranked product: the entry fields the page shows and its schedules.",
                        "properties": {
                          "brand": {
                            "type": "string"
                          },
                          "brand_label": {
                            "type": "string"
                          },
                          "brand_slug": {
                            "type": "string"
                          },
                          "legal_entity_abn": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "product_id": {
                            "type": "string"
                          },
                          "product_name": {
                            "type": "string"
                          },
                          "product_label": {
                            "type": "string"
                          },
                          "product_slug": {
                            "type": "string",
                            "description": "product_label as a URL segment, unique within the bank."
                          },
                          "page": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Site-relative path of the account's own page (its rate tiers, conditions, features and fees); null for product types with no page."
                          },
                          "product_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "terms_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "source_snapshot": {
                            "type": "string",
                            "description": "Site-relative path of our verbatim snapshot of the CDR detail response."
                          },
                          "account_type": {
                            "type": "string",
                            "enum": [
                              "savings",
                              "cash_management",
                              "notice",
                              "transaction",
                              "offset",
                              "foreign_currency",
                              "farm_management_deposit",
                              "term_deposit",
                              "other"
                            ]
                          },
                          "segments": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "restrictions": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "age_limited",
                                "christmas_club",
                                "closed_to_new",
                                "existing_customers",
                                "linked_account",
                                "notice",
                                "occupation_membership",
                                "organisation_only",
                                "pensioner",
                                "region_limited",
                                "staff",
                                "student",
                                "via_third_party"
                              ]
                            }
                          },
                          "record_stale": {
                            "type": "boolean"
                          },
                          "conditions": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "feature_tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "features as short labels."
                          },
                          "monthly_fee": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "null when the feed states no account-keeping fee."
                          },
                          "max_bonus_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "min_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "max_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "interest_paid": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "intro_months": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "bonus_is_total": {
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "intro_is_total": {
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "has_bonus_conditions": {
                            "type": "boolean"
                          },
                          "linked_account_required": {
                            "type": "boolean",
                            "description": "Present (true) when the account needs a linked or nominated account."
                          },
                          "new_customers_only": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "intro",
                                "bonus"
                              ]
                            },
                            "description": "Present when the introductory (intro) or bonus rate is for new customers only."
                          },
                          "rate_application": {
                            "type": "string",
                            "enum": [
                              "whole_balance",
                              "per_tier",
                              "mixed"
                            ]
                          },
                          "schedules": {
                            "type": "object",
                            "properties": {
                              "base": {
                                "type": "array",
                                "items": {
                                  "type": "array",
                                  "description": "[balance_from, balance_to (null: open-ended), rate as a fraction, method]",
                                  "prefixItems": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": [
                                        "number",
                                        "null"
                                      ]
                                    },
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "string",
                                      "enum": [
                                        "whole_balance",
                                        "per_tier"
                                      ]
                                    }
                                  ],
                                  "minItems": 4,
                                  "maxItems": 4
                                }
                              },
                              "bonus": {
                                "type": "array",
                                "items": {
                                  "type": "array",
                                  "description": "[balance_from, balance_to (null: open-ended), rate as a fraction, method]",
                                  "prefixItems": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": [
                                        "number",
                                        "null"
                                      ]
                                    },
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "string",
                                      "enum": [
                                        "whole_balance",
                                        "per_tier"
                                      ]
                                    }
                                  ],
                                  "minItems": 4,
                                  "maxItems": 4
                                }
                              },
                              "intro": {
                                "type": "array",
                                "items": {
                                  "type": "array",
                                  "description": "[balance_from, balance_to (null: open-ended), rate as a fraction, method]",
                                  "prefixItems": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": [
                                        "number",
                                        "null"
                                      ]
                                    },
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "string",
                                      "enum": [
                                        "whole_balance",
                                        "per_tier"
                                      ]
                                    }
                                  ],
                                  "minItems": 4,
                                  "maxItems": 4
                                }
                              }
                            },
                            "required": [
                              "base",
                              "bonus",
                              "intro"
                            ]
                          }
                        },
                        "required": [
                          "brand",
                          "brand_label",
                          "brand_slug",
                          "legal_entity_abn",
                          "product_id",
                          "product_name",
                          "product_label",
                          "product_slug",
                          "page",
                          "product_url",
                          "terms_url",
                          "source_snapshot",
                          "account_type",
                          "segments",
                          "restrictions",
                          "record_stale",
                          "conditions",
                          "feature_tags",
                          "monthly_fee",
                          "max_bonus_balance",
                          "min_balance",
                          "max_balance",
                          "interest_paid",
                          "intro_months",
                          "bonus_is_total",
                          "intro_is_total",
                          "has_bonus_conditions",
                          "rate_application",
                          "schedules"
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/au/finance/savings-accounts/v1/qualifying.json": {
      "get": {
        "summary": "Every ranked product's conditions in full (the bank's sentences, structured), for the compare endpoint",
        "responses": {
          "200": {
            "description": "Qualifying blocks",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "note": {
                      "type": "string",
                      "description": "What each product's qualifying block holds."
                    },
                    "texts": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Each distinct sentence once; a qualifying block's text (and a watched term's quote) is an index into it."
                    },
                    "watched_terms": {
                      "type": "array",
                      "description": "Terms read in the banks' own documents, each once: {fact, condition, quote (index into texts), url, checked, citation (the five-field citation llms.txt describes)}.",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "product_count": {
                      "type": "integer"
                    },
                    "products": {
                      "type": "object",
                      "description": "<brand_slug>/<product_id>: the product's qualifying block; see note.",
                      "additionalProperties": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/compare/savings-accounts": {
      "get": {
        "summary": "The best rates at the reader's exact balance, as JSON",
        "description": "Ranks products.json at the exact balance given, by the same rule as the best/ slices (one account per bank, its highest rate, then the highest base rate, the lowest monthly fee, the name), and lists every bank for the segment that is not ranked, with why (below_minimum, above_maximum, no_rate, restricted). Replies 200 with JSON directly, not a redirect, and echoes what was asked under query. At 10000, 50000 or 250000 it gives the same ranking as best/<segment>/<kind>/<balance>.json. Each result's conditions are short summaries for a table; bonus_conditions, intro_conditions and eligibility are authoritative: the bank's whole sentences, each condition with amount or count, period, what counts and what is excluded (external deposits only, settled purchases, interest excluded from growth), linked_account and source (feed, or terms_watch with the document's url). if_conditions_missed_pct is this same account's base rate, what it pays in a month the bonus conditions are not all met (a rate=base ranking lists other accounts). closes_to_new is the date it closes to new applications (null when none is known) and open_to_new is false once past. who_can_open.open_to, when present, lists the account holders (smsf, business) the bank's own page says may open it beyond those its feed names, with the sentence (re-read daily) and how, when present (on request: a general clause of the bank's disclosure document, so the account holder asks; in branch, by enquiry or by form: not online). A bank's limit on an SMSF's trustees (Judo's two to four individual trustees or one corporate trustee) is in conditions and eligibility, in its words; the bank's file gives it structured as facts.smsf_trustees. who_can_open.restricted false means not limited to a special group (age, pension, occupation...), not that anyone may open it: eligibility still applies, and apply.barriers names membership when the bank requires it. restricted echoes the kinds of group-limited account included and those left out, with counts, so a ranking is not read as the best for every Australian; field_notes says the same on every reply.",
        "parameters": [
          {
            "name": "balance",
            "in": "query",
            "required": true,
            "description": "Dollars held, e.g. 37000 (37k is read too; amount is read too).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "segment",
            "in": "query",
            "required": false,
            "description": "personal (default), smsf or business.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "rate",
            "in": "query",
            "required": false,
            "description": "ongoing (default), intro or base.",
            "schema": {
              "type": "string",
              "enum": [
                "ongoing",
                "intro",
                "base"
              ]
            }
          },
          {
            "name": "include",
            "in": "query",
            "required": false,
            "description": "Comma-separated kinds of restricted account the reader can open, ranked as well: occupation, age, pension, student, staff, organisation, region, existing_customers, platform (adviser platforms), or all.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "restricted",
            "in": "query",
            "required": false,
            "description": "include is the same as include=all.",
            "schema": {
              "type": "string",
              "enum": [
                "include"
              ]
            }
          },
          {
            "name": "linked_account",
            "in": "query",
            "required": false,
            "description": "no: leave out accounts that need a linked or nominated account (a transaction account to hold, or deposits from one).",
            "schema": {
              "type": "string",
              "enum": [
                "no"
              ]
            }
          },
          {
            "name": "new_customers_only",
            "in": "query",
            "required": false,
            "description": "exclude: the reader is not a new customer, so an introductory or bonus rate for new customers only is not counted (an account is ranked at the rate it pays everyone, and left out when its bonus is new-customer-only).",
            "schema": {
              "type": "string",
              "enum": [
                "exclude"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "How many banks to return.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The ranking at the balance: query, method_note, banks_ranked, not_ranked, restricted, field_notes and results.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "A parameter could not be read; the reply says which and gives an example."
          }
        }
      }
    },
    "/au/finance/savings-accounts/v1/rates.json": {
      "get": {
        "summary": "Every rate row",
        "responses": {
          "200": {
            "description": "Rows",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "rows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "One balance band of one product: the marginal rates inside it.",
                        "properties": {
                          "brand": {
                            "type": "string"
                          },
                          "brand_label": {
                            "type": "string"
                          },
                          "brand_slug": {
                            "type": "string"
                          },
                          "legal_entity_abn": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "product_id": {
                            "type": "string"
                          },
                          "product_name": {
                            "type": "string"
                          },
                          "product_label": {
                            "type": "string"
                          },
                          "product_slug": {
                            "type": "string",
                            "description": "product_label as a URL segment, unique within the bank."
                          },
                          "page": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Site-relative path of the account's own page (its rate tiers, conditions, features and fees); null for product types with no page."
                          },
                          "product_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "terms_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "account_type": {
                            "type": "string",
                            "enum": [
                              "savings",
                              "cash_management",
                              "notice",
                              "transaction",
                              "offset",
                              "foreign_currency",
                              "farm_management_deposit",
                              "term_deposit",
                              "other"
                            ]
                          },
                          "segments": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "segment": {
                            "type": "string"
                          },
                          "base_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The base rate: paid when no bonus condition is met."
                          },
                          "bonus_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The bonus at this balance: added to the base rate, or the whole rate when bonus_is_total."
                          },
                          "bonus_is_total": {
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "intro_is_total": {
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "intro_is_bonus_rate": {
                            "type": [
                              "boolean",
                              "null"
                            ],
                            "description": "The feed types the introductory row BONUS: the bank calls its introductory rate a bonus rate (Defence Bank's Salute Account)."
                          },
                          "intro_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "The introductory add-on at this balance (the amount above the conditional rate, ongoing)."
                          },
                          "intro_total_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "intro_months": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "intro_conditions": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "rate_after_intro_pct": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "On kind intro entries: the conditional rate (ongoing) the account falls to."
                          },
                          "balance_from": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "balance_to": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "rate_application": {
                            "type": "string",
                            "enum": [
                              "whole_balance",
                              "per_tier",
                              "mixed"
                            ]
                          },
                          "max_bonus_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "min_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "max_balance": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "notice_days": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "bonus_conditions": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string"
                                },
                                "value": {},
                                "text": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              }
                            }
                          },
                          "extra_bonuses": {
                            "type": "array",
                            "items": {
                              "type": "object"
                            }
                          },
                          "interest_paid_correction": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "description": "Set when interest_paid is corrected from the bank's own page (INTEREST_PAID_CORRECTIONS): {quote, url, checked, citation}; citation is the five-field citation llms.txt describes."
                          },
                          "min_balance_correction": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "description": "Set when min_balance is corrected from the bank's own terms (MIN_BALANCE_CORRECTIONS): {quote, url, checked, citation}; citation is the five-field citation llms.txt describes."
                          },
                          "rate_correction": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "description": "Set when the feed's rate rows are corrected from the bank's own page (RATE_CORRECTIONS): {quote, url, checked, citation}, the bank's sentence and where it is; citation is the five-field citation llms.txt describes."
                          },
                          "features": {
                            "type": "object"
                          },
                          "feature_tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "features as short labels."
                          },
                          "interest_paid": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "interest_calculated": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "monthly_fee": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "description": "null when the feed states no account-keeping fee."
                          },
                          "monthly_fee_note": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "The fee's own words on who does not pay it (a balance, an age), when the feed gives any."
                          },
                          "fees_without_amount": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "age_min": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "age_max": {
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "restrictions": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "age_limited",
                                "christmas_club",
                                "closed_to_new",
                                "existing_customers",
                                "linked_account",
                                "notice",
                                "occupation_membership",
                                "organisation_only",
                                "pensioner",
                                "region_limited",
                                "staff",
                                "student",
                                "via_third_party"
                              ]
                            }
                          },
                          "conditions": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "record_stale": {
                            "type": "boolean"
                          },
                          "source_url": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "source_snapshot": {
                            "type": "string",
                            "description": "Site-relative path of our verbatim snapshot of the CDR detail response."
                          },
                          "bank_last_updated": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "date-time"
                          },
                          "ongoing_rate_pct": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "ranked": {
                            "type": "boolean"
                          },
                          "unranked_reason": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/au/finance/savings-accounts/v1/brands/{brand_slug}.json": {
      "get": {
        "summary": "One bank: at_a_glance, guarantee, products and rows",
        "parameters": [
          {
            "name": "brand_slug",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Bank",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "guarantee": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": true,
                      "description": "Other brands that are the same bank (ADI) for the Financial Claims Scheme: deposits at shares_limit_with and here count towards one $250,000 per account holder; may_share_limit_with share the ABN but APRA does not name them. null when the brand shares its limit with no brand in this dataset."
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
