{
  "openapi" : "3.1.0",
  "info" : {
    "title" : "Wink API",
    "description" : "Welcome to the Wink API — a programmer-friendly way to manage, sell and book travel\ninventory on the Wink platform. See the **Overview** page (under **API**) for the full\nintroduction, intended audience, testing, and versioning.\n# Reference API\nReference data for building integrations: exchange rates, timezones, countries, geolocation,\nlifestyles, perks, social networks, and property lookup. Use these endpoints to populate\npickers, labels, and filters.\n\n## Deprecated: the fixed vocabularies\n\nThe OTA codes, supported languages and supported currencies endpoints are **deprecated and\nwill be removed after Thu, 01 Oct 2026 00:00:00 GMT**. They change rarely, so they are now published as a\nstatic reference at https://wink.travel/developers/taxonomy — hardcode them from there rather\nthan fetching them on every start-up.\n\nUntil then those endpoints keep returning exactly what they always did, and announce their\nretirement with `Deprecation`, `Sunset` and `Link` response headers. The `/reference-data/fx/**`\nexchange-rate lookups are **not** affected; those are live data.\n\n",
    "contact" : {
      "name" : "Contact",
      "email" : "hi@wink.travel"
    },
    "version" : "0.0.0-TEST",
    "x-logo" : {
      "backgroundColor" : "#FFFFFF",
      "altText" : "wink",
      "url" : "https://res.cloudinary.com/traveliko/image/upload/c_scale,h_129/v1653285543/wink/logo_text_white.svg"
    }
  },
  "externalDocs" : {
    "description" : "Documentation",
    "url" : "https://wink.travel/getting-started/how-to-use/"
  },
  "servers" : [ {
    "url" : "https://api.wink.travel",
    "description" : "Endpoint"
  } ],
  "tags" : [ {
    "name" : "Social Network",
    "description" : "Social network platform identifiers supported by the platform.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/social-network"
    }
  }, {
    "name" : "Property",
    "description" : "Property lookup by name.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/property"
    }
  }, {
    "name" : "Rate Provider",
    "description" : "Available channel managers on Wink.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/rate-provider"
    }
  }, {
    "name" : "Currency",
    "description" : "Foreign exchange rates, plus the deprecated supported-currency listing. Supported currencies are published at https://wink.travel/developers/taxonomy and that endpoint is removed after Thu, 01 Oct 2026 00:00:00 GMT.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/currency"
    }
  }, {
    "name" : "Country",
    "description" : "Countries supported by the platform.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/country"
    }
  }, {
    "name" : "Language",
    "description" : "Deprecated. Supported languages are published at https://wink.travel/developers/taxonomy and this endpoint is removed after Thu, 01 Oct 2026 00:00:00 GMT.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/language"
    }
  }, {
    "name" : "Lifestyle",
    "description" : "Traveler lifestyle categories supported by the platform.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/lifestyle"
    }
  }, {
    "name" : "OTA",
    "description" : "Deprecated. OTA codes are published at https://wink.travel/developers/taxonomy and these endpoints are removed after Thu, 01 Oct 2026 00:00:00 GMT.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/ota"
    }
  }, {
    "name" : "Timezone",
    "description" : "Timezones supported by the platform.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/timezone"
    }
  }, {
    "name" : "Geo Location",
    "description" : "Resolve the caller's approximate location from their IP address.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/geo-location"
    }
  }, {
    "name" : "Geo Data",
    "description" : "Retrieve supported geo-names based on the [https://geonames.org](https://geonames.org) dataset.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/geo-data"
    }
  }, {
    "name" : "Perk",
    "description" : "Loyalty perks and benefits recognized across the platform.",
    "externalDocs" : {
      "description" : "Try it in Scalar",
      "url" : "https://api.wink.travel/scalar#reference/tag/perk"
    }
  } ],
  "paths" : {
    "/reference-data/timezone/list" : {
      "get" : {
        "tags" : [ "Timezone" ],
        "summary" : "List",
        "description" : "Returns every available timezone formatted with its GMT offset (e.g. \"GMT+7:00\"), one entry per distinct offset.",
        "operationId" : "show-timezones",
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "type" : "string"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/timezone/city/{city}" : {
      "get" : {
        "tags" : [ "Timezone" ],
        "summary" : "Search By City",
        "description" : "Returns timezones whose full English display name starts with the supplied city path variable (case-insensitive); yields an empty list when the city is blank.",
        "operationId" : "show-timezones-for-name",
        "parameters" : [ {
          "name" : "city",
          "in" : "path",
          "description" : "City name or prefix to search for (case-insensitive)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "Bangkok"
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/TimezoneResponse_Non_Authenticated_Entity"
                  }
                },
                "example" : [ {
                  "id" : "Asia/Bangkok",
                  "name" : "Indochina Time (Asia/Bangkok)"
                } ]
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/social/list" : {
      "get" : {
        "tags" : [ "Social Network" ],
        "summary" : "List Social Networks",
        "description" : "Lists the supported social network types as identifier/label pairs (e.g., FACEBOOK/Facebook, INSTAGRAM/Instagram). Use these values in pickers and form dropdowns where users specify their social media profile information.",
        "operationId" : "show-social-networks",
        "parameters" : [ {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/KeyValuePair_Non_Authenticated_Entity"
                  }
                },
                "example" : [ {
                  "label" : "Hotel & Resort",
                  "value" : "HOTEL"
                } ]
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/perk/list" : {
      "get" : {
        "tags" : [ "Perk" ],
        "summary" : "List all perks",
        "description" : "Retrieves every perk available in the platform's reference data, sorted by display order (ascending). Each perk includes a unique identifier, guarantee status, platform tier, and localized descriptions in multiple languages. This endpoint is public and does not require authentication.",
        "operationId" : "show-perks",
        "parameters" : [ {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "All enabled perks sorted by display order (ascending)",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/PerkLightweight_Non_Authenticated_Entity"
                  }
                },
                "example" : [ {
                  "descriptions" : [ {
                    "description" : "Guaranteed upgrade to the next available room category at check-in",
                    "language" : "en",
                    "name" : "Guaranteed Room Upgrade"
                  } ],
                  "guaranteed" : true,
                  "id" : "PERK_GUARANTEED_UPGRADE",
                  "level" : 3,
                  "sort" : 5
                } ]
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/ota/{category}" : {
      "get" : {
        "tags" : [ "OTA" ],
        "summary" : "List Codes by OTA Category (deprecated)",
        "description" : "List every OTA code belonging to the requested category as code/name pairs. Common categories include LOC (location), RTS (room type status), and RRC (room rate code).\n\n**Deprecated — removed after Thu, 01 Oct 2026 00:00:00 GMT.** The OTA vocabulary is now published as a static reference at https://wink.travel/developers/taxonomy. Hardcode the codes from there rather than fetching them.",
        "operationId" : "show-available-codes-for-category",
        "parameters" : [ {
          "name" : "category",
          "in" : "path",
          "description" : "OTA category code (e.g., LOC, RTS, RRC)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "LOC"
        }, {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/KeyValuePair_Non_Authenticated_Entity"
                  }
                },
                "example" : [ {
                  "label" : "Hotel & Resort",
                  "value" : "HOTEL"
                } ]
              }
            }
          }
        },
        "deprecated" : true,
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/ota/list" : {
      "get" : {
        "tags" : [ "OTA" ],
        "summary" : "List OTA Categories (deprecated)",
        "description" : "List the supported OTA code categories as code/name pairs. Categories represent groupings of OTA codes (e.g., LOC for location codes, RTS for room type status).\n\n**Deprecated — removed after Thu, 01 Oct 2026 00:00:00 GMT.** The OTA vocabulary is now published as a static reference at https://wink.travel/developers/taxonomy. Hardcode the codes from there rather than fetching them.",
        "operationId" : "show-available-ota-categories",
        "parameters" : [ {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/KeyValuePair_Non_Authenticated_Entity"
                  }
                },
                "example" : [ {
                  "label" : "Hotel & Resort",
                  "value" : "HOTEL"
                } ]
              }
            }
          }
        },
        "deprecated" : true,
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/lookup/property/{name}" : {
      "get" : {
        "tags" : [ "Property" ],
        "summary" : "Property lookup",
        "description" : "Find active properties whose name matches the search term, returned as id/name pairs for selectors.",
        "operationId" : "show-hotel-names",
        "parameters" : [ {
          "name" : "name",
          "in" : "path",
          "description" : "Partial or full property name to search for",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "Blue Orchid"
        }, {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Active properties whose name matches the search term, as id/name pairs",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/KeyValuePair_Non_Authenticated_Entity"
                },
                "example" : {
                  "label" : "Hotel & Resort",
                  "value" : "HOTEL"
                }
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/lifestyle/list" : {
      "get" : {
        "tags" : [ "Lifestyle" ],
        "summary" : "List Traveler Lifestyles",
        "description" : "Returns the full set of supported traveler lifestyles as identifier/label key-value pairs (e.g., LIFESTYLE_ADVENTURE/Adventure, LIFESTYLE_LUXURY/Luxury). Use these in search filters and preference pickers to help travelers find properties aligned with their travel style. Open reference data requiring no authentication.",
        "operationId" : "show-lifestyles",
        "parameters" : [ {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/KeyValuePair_Non_Authenticated_Entity"
                  }
                },
                "example" : [ {
                  "label" : "Hotel & Resort",
                  "value" : "HOTEL"
                } ]
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/language/list" : {
      "get" : {
        "tags" : [ "Language" ],
        "summary" : "List Supported Languages (deprecated)",
        "description" : "Returns the complete list of languages the platform supports. Each language includes ISO 639-1/639-3 codes, ISO 3166-1 country codes, and localized display names in the target language. Derived from the platform configuration.\n\n**Deprecated — removed after Thu, 01 Oct 2026 00:00:00 GMT.** The supported-language list is now published as a static reference at https://wink.travel/developers/taxonomy. Hardcode the tags from there rather than fetching them.",
        "operationId" : "show-languages",
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Language_Non_Authenticated_Entity"
                  }
                },
                "example" : [ {
                  "country" : "TH",
                  "displayCountry" : "ประเทศไทย",
                  "displayLanguage" : "ไทย",
                  "displayName" : "Thai (Thailand)",
                  "displayScript" : "Thai",
                  "displayVariant" : "",
                  "iso3Country" : null,
                  "iso3Language" : "tha",
                  "language" : "th",
                  "script" : "Thai",
                  "variant" : ""
                } ]
              }
            }
          }
        },
        "deprecated" : true,
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/geo/{geoNameId}" : {
      "get" : {
        "tags" : [ "Geo Data" ],
        "summary" : "Show by ID",
        "description" : "Returns a single geo-name by its GeoNames identifier, throwing 404 if none exists.",
        "operationId" : "show-geo-name-by-id",
        "parameters" : [ {
          "name" : "geoNameId",
          "in" : "path",
          "description" : "GeoNames database identifier (numeric string)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 1609350
        }, {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Geo-name with the specified ID not found"
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Successfully retrieved geo-name by ID",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GeoNameLightweight"
                },
                "example" : {
                  "admin1Code" : "40",
                  "admin2Code" : "2401",
                  "admin3Code" : "",
                  "admin4Code" : "",
                  "alternateCountryCodes" : [ ],
                  "alternateNames" : [ "Krung Thep", "BKK" ],
                  "asciiName" : "Bangkok",
                  "country" : {
                    "area" : 514000.0,
                    "capital" : "Bangkok",
                    "continent" : "AS",
                    "currencyCode" : "THB",
                    "currencyName" : "Baht",
                    "fips" : "TH",
                    "geoNameId" : "1605651",
                    "iso" : "TH",
                    "iso3" : "THA",
                    "isoNumeric" : 764,
                    "languages" : [ "th" ],
                    "name" : "Thailand",
                    "neighbors" : [ "LA", "MM", "KH", "MY" ],
                    "phone" : "66",
                    "population" : 69428524,
                    "postalCodeFormat" : "#####",
                    "postalCodeRegEx" : "^(\\d{5})$",
                    "topLevelDomain" : ".th"
                  },
                  "countryCode" : "TH",
                  "digitalElevationModel" : "3",
                  "elevation" : 5,
                  "featureClass" : "P",
                  "featureCode" : "PPLC",
                  "geoNameId" : "1609350",
                  "location" : {
                    "coordinates" : [ 100.5581533, 13.7370197 ],
                    "type" : "POINT"
                  },
                  "modificationDate" : "2023-06-15",
                  "name" : "Bangkok",
                  "population" : 10539415,
                  "radiusInMeters" : 50000,
                  "subCountry" : {
                    "asciiName" : "Bangkok",
                    "code" : "TH.40",
                    "countryCode" : "TH",
                    "geoNameId" : "1609350",
                    "name" : "Bangkok",
                    "subCountryCode" : "40"
                  },
                  "subSubCountry" : {
                    "asciiName" : "Bangkok District",
                    "code" : "TH.40.2401",
                    "countryCode" : "TH",
                    "geoNameId" : "1609352",
                    "name" : "Bangkok District",
                    "subCountryCode" : "40",
                    "subSubCountryCode" : "2401"
                  },
                  "timezone" : "Asia/Bangkok",
                  "type" : "CITY",
                  "urlName" : "bangkok-thailand"
                }
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/geo/city/search" : {
      "get" : {
        "tags" : [ "Geo Data" ],
        "summary" : "Match cities",
        "description" : "Returns cities and islands whose name phonetically matches the supplied term using a sounds-like search.",
        "operationId" : "search-for-cities",
        "parameters" : [ {
          "name" : "term",
          "in" : "query",
          "description" : "City name term for phonetic matching",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "Bangkok"
        }, {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Successfully retrieved cities with phonetic match",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/GeoNameLightweight"
                  }
                },
                "example" : [ {
                  "admin1Code" : "40",
                  "admin2Code" : "2401",
                  "admin3Code" : "",
                  "admin4Code" : "",
                  "alternateCountryCodes" : [ ],
                  "alternateNames" : [ "Krung Thep", "BKK" ],
                  "asciiName" : "Bangkok",
                  "country" : {
                    "area" : 514000.0,
                    "capital" : "Bangkok",
                    "continent" : "AS",
                    "currencyCode" : "THB",
                    "currencyName" : "Baht",
                    "fips" : "TH",
                    "geoNameId" : "1605651",
                    "iso" : "TH",
                    "iso3" : "THA",
                    "isoNumeric" : 764,
                    "languages" : [ "th" ],
                    "name" : "Thailand",
                    "neighbors" : [ "LA", "MM", "KH", "MY" ],
                    "phone" : "66",
                    "population" : 69428524,
                    "postalCodeFormat" : "#####",
                    "postalCodeRegEx" : "^(\\d{5})$",
                    "topLevelDomain" : ".th"
                  },
                  "countryCode" : "TH",
                  "digitalElevationModel" : "3",
                  "elevation" : 5,
                  "featureClass" : "P",
                  "featureCode" : "PPLC",
                  "geoNameId" : "1609350",
                  "location" : {
                    "coordinates" : [ 100.5581533, 13.7370197 ],
                    "type" : "POINT"
                  },
                  "modificationDate" : "2023-06-15",
                  "name" : "Bangkok",
                  "population" : 10539415,
                  "radiusInMeters" : 50000,
                  "subCountry" : {
                    "asciiName" : "Bangkok",
                    "code" : "TH.40",
                    "countryCode" : "TH",
                    "geoNameId" : "1609350",
                    "name" : "Bangkok",
                    "subCountryCode" : "40"
                  },
                  "subSubCountry" : {
                    "asciiName" : "Bangkok District",
                    "code" : "TH.40.2401",
                    "countryCode" : "TH",
                    "geoNameId" : "1609352",
                    "name" : "Bangkok District",
                    "subCountryCode" : "40",
                    "subSubCountryCode" : "2401"
                  },
                  "timezone" : "Asia/Bangkok",
                  "type" : "CITY",
                  "urlName" : "bangkok-thailand"
                } ]
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/geo-ip/timezone/list" : {
      "get" : {
        "tags" : [ "Geo Data" ],
        "summary" : "List IANA time zones",
        "description" : "Return the full list of 600+ supported IANA time-zone identifiers for use in location-aware scheduling and UI dropdowns.",
        "operationId" : "show-timezones_1",
        "parameters" : [ {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Time zone list returned",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "type" : "string"
                  }
                }
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/geo-ip/country/list" : {
      "get" : {
        "tags" : [ "Geo Data" ],
        "summary" : "List countries",
        "description" : "Return all 249 supported countries with their GeoNames identifiers, ISO 3166-1 codes, and continent grouping for location-selection workflows.",
        "operationId" : "show-countries",
        "parameters" : [ {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Country list returned",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/GeoNameCountry_Non_Authenticated_Entity"
                  }
                },
                "example" : [ {
                  "continentCode" : "AS",
                  "continentName" : "Asia",
                  "countryIsoCode" : "TH",
                  "countryName" : "Thailand",
                  "geoNameId" : "1609350"
                } ]
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/geo-ip/continent/list" : {
      "get" : {
        "tags" : [ "Geo Data" ],
        "summary" : "List continents",
        "description" : "Return the seven continents as ISO 3166-1 code / name pairs for use in location-selection dropdowns and filters.",
        "operationId" : "show-continents",
        "parameters" : [ {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Continent list returned",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/KeyValuePair_Non_Authenticated_Entity"
                  }
                },
                "example" : [ {
                  "label" : "Hotel & Resort",
                  "value" : "HOTEL"
                } ]
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/geo-ip/city/{searchTerm}" : {
      "get" : {
        "tags" : [ "Geo Data" ],
        "summary" : "Search cities by name",
        "description" : "Return all cities whose name matches the given search term, as lightweight geo records with coordinates, geoname identifiers, and timezone information.",
        "operationId" : "search-for-city",
        "parameters" : [ {
          "name" : "searchTerm",
          "in" : "path",
          "description" : "Partial city name (case-insensitive substring match)",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "Bangkok"
        }, {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Matching cities returned",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/GeoIpLightweight_Non_Authenticated_Entity"
                  }
                },
                "example" : [ {
                  "cityName" : "Bangkok",
                  "continentCode" : "AS",
                  "continentName" : "Asia",
                  "countryIsoCode" : "TH",
                  "countryName" : "Thailand",
                  "geoNameId" : "1609350",
                  "localeCode" : "en",
                  "subDivision1Code" : "10",
                  "subDivision1Name" : "Bangkok",
                  "subDivision2Code" : "1001",
                  "subDivision2Name" : "Phra Nakhon",
                  "timezone" : "Asia/Bangkok"
                } ]
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/fx/{sourceCurrency}/{targetCurrency}" : {
      "get" : {
        "tags" : [ "Currency" ],
        "summary" : "Single rate",
        "description" : "Returns the exchange-rate quote between a specific source and target currency pair, or fails if no quote exists.",
        "operationId" : "show-exchange-rate",
        "parameters" : [ {
          "name" : "sourceCurrency",
          "in" : "path",
          "description" : "ISO 4217 source currency code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "USD"
        }, {
          "name" : "targetCurrency",
          "in" : "path",
          "description" : "ISO 4217 target currency code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "THB"
        }, {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Exchange-rate quote for the requested currency pair",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/QuoteLightweight_Non_Authenticated_Entity"
                },
                "example" : {
                  "exchangeRate" : 33.5,
                  "source" : "USD",
                  "target" : "THB",
                  "timestamp" : 1705233000000
                }
              }
            }
          },
          "422" : {
            "description" : "No quote exists for the requested currency pair",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/QuoteLightweight_Non_Authenticated_Entity"
                }
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/fx/{currency}" : {
      "get" : {
        "tags" : [ "Currency" ],
        "summary" : "Rates for target",
        "description" : "Returns exchange-rate quotes from the given target currency to every supported source currency.",
        "operationId" : "show-exchange-rate-for-target-currency",
        "parameters" : [ {
          "name" : "currency",
          "in" : "path",
          "description" : "ISO 4217 target currency code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "THB"
        }, {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Exchange-rate quotes from the target currency to all supported source currencies",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/QuoteLightweight_Non_Authenticated_Entity"
                  }
                },
                "example" : [ {
                  "exchangeRate" : 33.5,
                  "source" : "USD",
                  "target" : "THB",
                  "timestamp" : 1705233000000
                } ]
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/currency/list" : {
      "get" : {
        "tags" : [ "Currency" ],
        "summary" : "List currencies (deprecated)",
        "description" : "Returns the ISO currency codes the platform supports for pricing and exchange-rate lookups.\n\n**Deprecated — removed after Thu, 01 Oct 2026 00:00:00 GMT.** The supported-currency list is now published as a static reference at https://wink.travel/developers/taxonomy. Hardcode the codes from there rather than fetching them. The /reference-data/fx/** lookups are unaffected.",
        "operationId" : "show-currencies",
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "List of ISO 4217 currency codes supported by the platform",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "type" : "string",
                    "example" : "USD"
                  }
                },
                "example" : [ "USD" ]
              }
            }
          }
        },
        "deprecated" : true,
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/country/list" : {
      "get" : {
        "tags" : [ "Country" ],
        "summary" : "Show countries",
        "description" : "Returns all supported countries as lightweight records, sorted by country name. Open reference data requiring no authentication.",
        "operationId" : "show-countries_1",
        "parameters" : [ {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Successfully retrieved list of all countries",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/CountryLightweight"
                  }
                },
                "example" : [ "{\n  \"iso\": \"TH\",\n  \"iso3\": \"THA\",\n  \"isoNumeric\": 764,\n  \"fips\": \"TH\",\n  \"name\": \"Thailand\",\n  \"capital\": \"Bangkok\",\n  \"area\": 514000.0,\n  \"population\": 69428524,\n  \"continent\": \"AS\",\n  \"topLevelDomain\": \".th\",\n  \"currencyCode\": \"THB\",\n  \"currencyName\": \"Baht\",\n  \"phone\": \"66\",\n  \"postalCodeFormat\": \"#####\",\n  \"postalCodeRegEx\": \"^(\\d{5})$\",\n  \"languages\": [\"th\"],\n  \"geoNameId\": \"1605651\",\n  \"neighbors\": [\"LA\", \"MM\", \"KH\", \"MY\"]\n}" ]
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/reference-data/channel-manager/list" : {
      "get" : {
        "tags" : [ "Rate Provider" ],
        "summary" : "List",
        "description" : "Returns all channel managers / rate providers available on Wink as identifier/name pairs.",
        "operationId" : "show-channel-managers",
        "parameters" : [ {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "List of all available channel managers and rate providers as identifier/name pairs.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/KeyValuePair_Administrator"
                  }
                },
                "example" : [ {
                  "label" : "Hotel & Resort",
                  "value" : "HOTEL"
                } ]
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/api/location" : {
      "get" : {
        "tags" : [ "Geo Location" ],
        "summary" : "Get caller's location from IP",
        "description" : "Resolve the approximate geographic location and timezone of the API caller based on their IP address.",
        "operationId" : "show-user-location",
        "parameters" : [ {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Caller's location resolved successfully",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IpLocation_Non_Authenticated_Entity"
                },
                "example" : {
                  "cityGeoNameId" : 1609350,
                  "cityName" : "Bangkok",
                  "continentCode" : "AS",
                  "continentGeoNameId" : 6255147,
                  "continentName" : "Asia",
                  "countryCode" : "TH",
                  "countryGeoNameId" : 1605651,
                  "countryName" : "Thailand",
                  "latitude" : 13.7370197,
                  "longitude" : 100.5581533,
                  "timezone" : "Asia/Bangkok"
                }
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    },
    "/api/location2" : {
      "get" : {
        "tags" : [ "Geo Location" ],
        "summary" : "Get location status (legacy)",
        "description" : "Legacy endpoint that returns a fixed status string. Prefer /api/location for full location details.",
        "operationId" : "show-user-location2",
        "parameters" : [ {
          "name" : "Wink-Version",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "default" : "2.0.0",
            "enum" : [ "2.0" ]
          }
        }, {
          "name" : "Accept",
          "in" : "header",
          "schema" : {
            "type" : "string",
            "enum" : [ "application/json" ],
            "default" : null
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request — missing or invalid request parameter or body",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized — authentication is required or the session has expired",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden — authenticated but lacking the required permission or scope",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "404" : {
            "description" : "Not Found — the requested resource does not exist",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "405" : {
            "description" : "Method Not Allowed — the HTTP verb is not supported on this endpoint",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "415" : {
            "description" : "Unsupported Media Type — use application/json",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error — an unexpected failure occurred on the server",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "503" : {
            "description" : "Service Unavailable — a downstream dependency is unreachable",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "200" : {
            "description" : "Status string returned",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        },
        "security" : [ {
          "oauth2ClientCredentials" : [ ]
        } ]
      }
    }
  },
  "components" : {
    "schemas" : {
      "ProblemDetail" : {
        "type" : "object",
        "properties" : {
          "detail" : {
            "type" : "string"
          },
          "instance" : {
            "type" : "string",
            "format" : "uri"
          },
          "properties" : {
            "additionalProperties" : { },
            "type" : "object"
          },
          "status" : {
            "type" : "integer",
            "format" : "int32"
          },
          "title" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string",
            "format" : "uri"
          }
        }
      },
      "TimezoneResponse_Non_Authenticated_Entity" : {
        "type" : "object",
        "description" : "Timezone identifier and human-readable display name for a geographic region",
        "example" : {
          "id" : "Asia/Bangkok",
          "name" : "Indochina Time (Asia/Bangkok)"
        },
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "IANA timezone identifier (e.g., 'Asia/Bangkok').",
            "example" : "Asia/Bangkok"
          },
          "name" : {
            "type" : "string",
            "description" : "Human-readable timezone name for display in the UI.",
            "example" : "Asia/Bangkok"
          }
        }
      },
      "KeyValuePair_Non_Authenticated_Entity" : {
        "type" : "object",
        "description" : "Immutable key-value pair associating a machine-readable value with a human-readable label.",
        "example" : {
          "label" : "Hotel & Resort",
          "value" : "HOTEL"
        },
        "properties" : {
          "label" : {
            "type" : "string",
            "description" : "English readable text of the value.",
            "example" : "Readable text label",
            "minLength" : 1
          },
          "value" : {
            "type" : "string",
            "description" : "The value that should be persisted.",
            "example" : "id-1",
            "minLength" : 1
          }
        },
        "required" : [ "label", "value" ]
      },
      "PerkLightweight_Non_Authenticated_Entity" : {
        "type" : "object",
        "description" : "Lightweight projection of a platform perk for use in public-facing APIs, search results, and rate configuration, omitting internal admin fields.",
        "example" : {
          "descriptions" : [ {
            "description" : "Guaranteed upgrade to the next available room category at check-in",
            "language" : "en",
            "name" : "Guaranteed Room Upgrade"
          } ],
          "guaranteed" : true,
          "id" : "PERK_GUARANTEED_UPGRADE",
          "level" : 3,
          "sort" : 5
        },
        "properties" : {
          "createdDate" : {
            "type" : [ "string", "null" ],
            "format" : "date-time",
            "description" : "Datetime this record was first created",
            "example" : "2026-01-14T09:30:00",
            "readOnly" : true
          },
          "descriptions" : {
            "type" : "array",
            "description" : "Localized descriptions of this perk in multiple languages. Each element provides a name, description, and language code (e.g., 'en', 'fr', 'de').",
            "items" : {
              "$ref" : "#/components/schemas/SimpleDescription_Non_Authenticated_Entity"
            },
            "minItems" : 1
          },
          "guaranteed" : {
            "type" : "boolean",
            "description" : "Whether this perk is guaranteed to be provided or available on a best-effort basis. Guaranteed perks take priority in allocation.",
            "example" : true
          },
          "id" : {
            "type" : "string",
            "format" : "uuid",
            "description" : "Unique identifier for this record.",
            "example" : "b7e4c1a2-3f5d-4e8a-9c21-6f0b5d8e3a47"
          },
          "lastUpdate" : {
            "type" : [ "string", "null" ],
            "format" : "date-time",
            "description" : "Datetime this record was last updated",
            "example" : "2026-02-03T16:45:12",
            "readOnly" : true
          },
          "level" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Platform tier/value assigned to this perk (0=standard, higher=premium). Used for internal prioritization and matching with rate tiers.",
            "example" : 3
          },
          "sort" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Display order when showing this perk in a list (ascending sort). Lower numbers appear first; 999 is reserved for disabled/unlisted perks.",
            "example" : 5
          },
          "version" : {
            "type" : [ "integer", "null" ],
            "format" : "int64",
            "description" : "Optimistic-locking version. Echo this value back as an If-Match request header on a conditional update; the server responds 409 if the record changed in the meantime. Null when this projection has no backing versioned document, in which case no conditional update is possible.",
            "example" : 3
          }
        },
        "required" : [ "descriptions", "guaranteed", "level", "sort" ]
      },
      "SimpleDescription_Non_Authenticated_Entity" : {
        "type" : "object",
        "description" : "Foundation class for storing multi-language content (names and descriptions) with content change detection throughout the Wink Platform.",
        "example" : {
          "creator" : "USER",
          "description" : "Spacious suite with floor-to-ceiling windows overlooking the Chao Phraya River, featuring a king-size bed, private balcony, and marble bathroom.",
          "language" : "en",
          "md5ContentHash" : "a3f1c8e2d74b60912a5c3e9b1d7f4e82",
          "name" : "Deluxe River View Suite"
        },
        "properties" : {
          "description" : {
            "type" : "string",
            "description" : "Longer text description",
            "example" : "This is a longer description in the specified language.",
            "maxLength" : 2147483647,
            "minLength" : 1
          },
          "language" : {
            "type" : "string",
            "default" : "en",
            "description" : "Indicate which language this description is written in.",
            "example" : "en",
            "maxLength" : 2,
            "minLength" : 2,
            "pattern" : "^[a-z]{2}(-[A-Z]{2})?$"
          },
          "name" : {
            "type" : "string",
            "description" : "Use as title or short text description",
            "example" : "An example title"
          }
        },
        "required" : [ "description", "language", "name" ]
      },
      "Language_Non_Authenticated_Entity" : {
        "type" : "object",
        "description" : "Represents a supported language with localized display names and language codes.",
        "example" : {
          "country" : "TH",
          "displayCountry" : "ประเทศไทย",
          "displayLanguage" : "ไทย",
          "displayName" : "Thai (Thailand)",
          "displayScript" : "Thai",
          "displayVariant" : "",
          "iso3Country" : null,
          "iso3Language" : "tha",
          "language" : "th",
          "script" : "Thai",
          "variant" : ""
        },
        "properties" : {
          "country" : {
            "type" : "string",
            "description" : "ISO 3166-1 alpha-2 country code.",
            "example" : "TH"
          },
          "displayCountry" : {
            "type" : "string",
            "description" : "Country name as displayed in the language represented by this object.",
            "example" : "ประเทศไทย"
          },
          "displayLanguage" : {
            "type" : "string",
            "description" : "The language name as it appears in the language represented by this object.",
            "example" : "ไทย"
          },
          "displayName" : {
            "type" : "string",
            "description" : "The full localized display name of the language.",
            "example" : "Thai (Thailand)"
          },
          "displayScript" : {
            "type" : "string",
            "description" : "The script used by this language, displayed in the language itself.",
            "example" : "Thai"
          },
          "displayVariant" : {
            "type" : "string",
            "description" : "Any variant designations displayed in the language.",
            "example" : "Thai Variant"
          },
          "iso3Country" : {
            "type" : "string",
            "description" : "ISO 3166-1 alpha-3 country code.",
            "example" : "THA"
          },
          "iso3Language" : {
            "type" : "string",
            "description" : "ISO 639-3 three-letter language code.",
            "example" : "tha"
          },
          "language" : {
            "type" : "string",
            "description" : "ISO 639-1 two-letter language code.",
            "example" : "th"
          },
          "script" : {
            "type" : "string",
            "description" : "The script code for this language (e.g., 'Thai' for Thai script).",
            "example" : "Thai"
          },
          "variant" : {
            "type" : "string",
            "description" : "Any variant designations for this language."
          }
        }
      },
      "CountryLightweight" : {
        "type" : "object",
        "description" : "Country",
        "example" : "{\n  \"iso\": \"TH\",\n  \"iso3\": \"THA\",\n  \"isoNumeric\": 764,\n  \"fips\": \"TH\",\n  \"name\": \"Thailand\",\n  \"capital\": \"Bangkok\",\n  \"area\": 514000.0,\n  \"population\": 69428524,\n  \"continent\": \"AS\",\n  \"topLevelDomain\": \".th\",\n  \"currencyCode\": \"THB\",\n  \"currencyName\": \"Baht\",\n  \"phone\": \"66\",\n  \"postalCodeFormat\": \"#####\",\n  \"postalCodeRegEx\": \"^(\\d{5})$\",\n  \"languages\": [\"th\"],\n  \"geoNameId\": \"1605651\",\n  \"neighbors\": [\"LA\", \"MM\", \"KH\", \"MY\"]\n}",
        "properties" : {
          "area" : {
            "type" : "number",
            "format" : "float",
            "description" : "Area in square kilometers",
            "example" : 9629091.0
          },
          "capital" : {
            "type" : "string",
            "description" : "Country capital",
            "example" : "Washington"
          },
          "continent" : {
            "type" : "string",
            "description" : "Continent code",
            "example" : "NA"
          },
          "currencyCode" : {
            "type" : "string",
            "description" : "Currency code",
            "example" : "USD",
            "pattern" : "^[A-Z]{3}$"
          },
          "currencyName" : {
            "type" : "string",
            "description" : "Currency name",
            "example" : "Dollar"
          },
          "fips" : {
            "type" : "string",
            "description" : "FIPS country code",
            "example" : "US"
          },
          "geoNameId" : {
            "type" : "string",
            "description" : "Country GeoNames identifier",
            "example" : "6252001"
          },
          "iso" : {
            "type" : "string",
            "description" : "ISO code",
            "example" : "US"
          },
          "iso3" : {
            "type" : "string",
            "description" : "3 character ISO code",
            "example" : "USA"
          },
          "isoNumeric" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Numeric ISO code",
            "example" : 840
          },
          "languages" : {
            "type" : "array",
            "description" : "Country languages",
            "items" : {
              "type" : "string",
              "description" : "Language code",
              "example" : "en-US"
            }
          },
          "name" : {
            "type" : "string",
            "description" : "Country name",
            "example" : "United States"
          },
          "neighbors" : {
            "type" : "array",
            "description" : "Neighboring countries",
            "items" : {
              "type" : "string",
              "description" : "Country ISO code",
              "example" : "CA"
            }
          },
          "phone" : {
            "type" : "string",
            "description" : "Calling code",
            "example" : "1"
          },
          "population" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Country population",
            "example" : 310232863
          },
          "postalCodeFormat" : {
            "type" : "string",
            "description" : "Postal code format",
            "example" : "#####-####"
          },
          "postalCodeRegEx" : {
            "type" : "string",
            "description" : "Postal code regular expression",
            "example" : "^d{5}(-d{4})?$"
          },
          "topLevelDomain" : {
            "type" : "string",
            "description" : "Country TLD",
            "example" : ".us"
          }
        }
      },
      "GeoJsonPoint" : {
        "type" : "object",
        "properties" : {
          "coordinates" : {
            "type" : "array",
            "items" : {
              "type" : "number",
              "format" : "double"
            }
          },
          "type" : {
            "type" : "string"
          },
          "x" : {
            "type" : "number",
            "format" : "double"
          },
          "y" : {
            "type" : "number",
            "format" : "double"
          }
        }
      },
      "GeoNameLightweight" : {
        "type" : "object",
        "description" : "GeoNames have been created at [https://geonames.org](https://geonames.org) and contain geographical destinations we use as geoname data to associate travel inventory with a location.",
        "example" : {
          "admin1Code" : "40",
          "admin2Code" : "2401",
          "admin3Code" : "",
          "admin4Code" : "",
          "alternateCountryCodes" : [ ],
          "alternateNames" : [ "Krung Thep", "BKK" ],
          "asciiName" : "Bangkok",
          "country" : {
            "area" : 514000.0,
            "capital" : "Bangkok",
            "continent" : "AS",
            "currencyCode" : "THB",
            "currencyName" : "Baht",
            "fips" : "TH",
            "geoNameId" : "1605651",
            "iso" : "TH",
            "iso3" : "THA",
            "isoNumeric" : 764,
            "languages" : [ "th" ],
            "name" : "Thailand",
            "neighbors" : [ "LA", "MM", "KH", "MY" ],
            "phone" : "66",
            "population" : 69428524,
            "postalCodeFormat" : "#####",
            "postalCodeRegEx" : "^(\\d{5})$",
            "topLevelDomain" : ".th"
          },
          "countryCode" : "TH",
          "digitalElevationModel" : "3",
          "elevation" : 5,
          "featureClass" : "P",
          "featureCode" : "PPLC",
          "geoNameId" : "1609350",
          "location" : {
            "coordinates" : [ 100.5581533, 13.7370197 ],
            "type" : "POINT"
          },
          "modificationDate" : "2023-06-15",
          "name" : "Bangkok",
          "population" : 10539415,
          "radiusInMeters" : 50000,
          "subCountry" : {
            "asciiName" : "Bangkok",
            "code" : "TH.40",
            "countryCode" : "TH",
            "geoNameId" : "1609350",
            "name" : "Bangkok",
            "subCountryCode" : "40"
          },
          "subSubCountry" : {
            "asciiName" : "Bangkok District",
            "code" : "TH.40.2401",
            "countryCode" : "TH",
            "geoNameId" : "1609352",
            "name" : "Bangkok District",
            "subCountryCode" : "40",
            "subSubCountryCode" : "2401"
          },
          "timezone" : "Asia/Bangkok",
          "type" : "CITY",
          "urlName" : "bangkok-thailand"
        },
        "properties" : {
          "admin1Code" : {
            "type" : "string",
            "description" : "GeoNames first-level administrative division code, typically a state or province abbreviation (e.g. NY for New York)",
            "example" : "40"
          },
          "admin2Code" : {
            "type" : "string",
            "description" : "GeoNames second-level administrative division code, typically a county or district",
            "example" : "2401"
          },
          "admin3Code" : {
            "type" : "string",
            "description" : "GeoNames third-level administrative division code, typically a municipality",
            "example" : "2401001"
          },
          "admin4Code" : {
            "type" : "string",
            "description" : "GeoNames fourth-level administrative division code, typically a neighbourhood",
            "example" : "240100101"
          },
          "alternateCountryCodes" : {
            "type" : "array",
            "description" : "Secondary ISO country codes for locations that span or border multiple countries",
            "items" : {
              "type" : "string"
            }
          },
          "alternateNames" : {
            "type" : "array",
            "description" : "Array of alternate name",
            "items" : {
              "type" : "string",
              "description" : "An alternate name for the city",
              "example" : "NYC"
            }
          },
          "asciiName" : {
            "type" : "string",
            "description" : "Ascii name of city",
            "example" : "New York City"
          },
          "country" : {
            "$ref" : "#/components/schemas/CountryLightweight",
            "description" : "Country",
            "example" : "TH"
          },
          "countryCode" : {
            "type" : "string",
            "description" : "ISO 3166-1 alpha-2 country code for the country this location belongs to",
            "example" : "TH",
            "pattern" : "^[A-Z]{2}$"
          },
          "digitalElevationModel" : {
            "type" : "string",
            "description" : "Digital elevation model height in meters above sea level from the SRTM dataset",
            "example" : "9"
          },
          "elevation" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "City elevation",
            "example" : 10
          },
          "featureClass" : {
            "type" : "string",
            "description" : "GeoNames broad feature category (e.g. P=populated place, A=administrative, L=parks, H=water, T=terrain)",
            "example" : "P"
          },
          "featureCode" : {
            "type" : "string",
            "description" : "GeoNames specific feature code identifying the place type (e.g. PPL=populated place, PPLC=national capital, ISL=island)",
            "example" : "PPLA"
          },
          "geoNameId" : {
            "type" : "string",
            "description" : "GeoName identifier",
            "example" : "5128581"
          },
          "location" : {
            "$ref" : "#/components/schemas/GeoJsonPoint",
            "description" : "Coordinate points of the city",
            "example" : {
              "coordinates" : [ 100.5581533, 13.7370197 ],
              "type" : "POINT"
            }
          },
          "modificationDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "Date when this GeoNames record was last modified in the GeoNames dataset",
            "example" : "2023-06-15"
          },
          "name" : {
            "type" : "string",
            "description" : "Name of city",
            "example" : "New York City"
          },
          "population" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Population of the city",
            "example" : 8175133
          },
          "radiusInMeters" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Search radius in meters used for proximity queries around this location (defaults to 50,000 m / 50 km)",
            "example" : 50000
          },
          "subCountry" : {
            "$ref" : "#/components/schemas/SubCountryLightweight",
            "description" : "Country sub division",
            "example" : "NY"
          },
          "subSubCountry" : {
            "$ref" : "#/components/schemas/SubSubCountryLightweight",
            "description" : "Country sub sub division",
            "example" : "New York County"
          },
          "timezone" : {
            "type" : "string",
            "description" : "IANA timezone identifier for the location",
            "example" : "America/New_York"
          },
          "type" : {
            "type" : "string",
            "description" : "GeoNameLightweight type",
            "enum" : [ "CITY", "ISLAND", "OTHER" ],
            "example" : "CITY"
          },
          "urlName" : {
            "type" : "string",
            "description" : "Url name",
            "example" : "new-york-city-united-states",
            "pattern" : "^[a-z0-9][a-z0-9-]*[a-z0-9]$"
          }
        }
      },
      "SubCountryLightweight" : {
        "type" : "object",
        "description" : "Country subdivision such as a state or province",
        "example" : {
          "asciiName" : "New York",
          "code" : "US.NY",
          "countryCode" : "US",
          "geoNameId" : "5128638",
          "name" : "New York",
          "subCountryCode" : "NY"
        },
        "properties" : {
          "asciiName" : {
            "type" : "string",
            "description" : "Sub-country ascii name",
            "example" : "New York"
          },
          "code" : {
            "type" : "string",
            "description" : "Code",
            "example" : "US.NY"
          },
          "countryCode" : {
            "type" : "string",
            "description" : "Country code",
            "example" : "US",
            "pattern" : "^[A-Z]{2}$"
          },
          "geoNameId" : {
            "type" : "string",
            "description" : "Sub-country GeoNames identifier",
            "example" : "5128638"
          },
          "name" : {
            "type" : "string",
            "description" : "Sub-country name",
            "example" : "New York"
          },
          "subCountryCode" : {
            "type" : "string",
            "description" : "Sub-country code",
            "example" : "NY"
          }
        }
      },
      "SubSubCountryLightweight" : {
        "type" : "object",
        "description" : "Lightweight representation of a second-level country subdivision such as a county or district",
        "example" : {
          "asciiName" : "New York County",
          "code" : "US.NY.061",
          "countryCode" : "US",
          "geoNameId" : "5128594",
          "name" : "New York County",
          "subCountryCode" : "NY",
          "subSubCountryCode" : "061"
        },
        "properties" : {
          "asciiName" : {
            "type" : "string",
            "description" : "ASCII-transliterated name of the county or district, safe for URLs and sorting",
            "example" : "New York County"
          },
          "code" : {
            "type" : "string",
            "description" : "Fully qualified subdivision code combining country, sub-country, and sub-sub-country codes",
            "example" : "US.NY.061"
          },
          "countryCode" : {
            "type" : "string",
            "description" : "ISO 3166-1 alpha-2 country code",
            "example" : "US",
            "pattern" : "^[A-Z]{2}$"
          },
          "geoNameId" : {
            "type" : "string",
            "description" : "GeoNames.org unique identifier for this subdivision",
            "example" : "5128594"
          },
          "name" : {
            "type" : "string",
            "description" : "Official name of the county or district in its local script",
            "example" : "New York County"
          },
          "subCountryCode" : {
            "type" : "string",
            "description" : "First-level subdivision (state/province) code within the country",
            "example" : "NY"
          },
          "subSubCountryCode" : {
            "type" : "string",
            "description" : "Second-level subdivision (county/district) code within the state or province",
            "example" : "061"
          }
        }
      },
      "GeoNameCountry_Non_Authenticated_Entity" : {
        "type" : "object",
        "description" : "Country geographic data from GeoNames",
        "example" : {
          "continentCode" : "AS",
          "continentName" : "Asia",
          "countryIsoCode" : "TH",
          "countryName" : "Thailand",
          "geoNameId" : "1609350"
        },
        "properties" : {
          "continentCode" : {
            "type" : "string",
            "description" : "Continent code (two-letter ISO)",
            "example" : "AS"
          },
          "continentName" : {
            "type" : "string",
            "description" : "Continent name",
            "example" : "Asia"
          },
          "countryIsoCode" : {
            "type" : "string",
            "description" : "Country ISO 3166-1 alpha-2 code",
            "example" : "TH",
            "pattern" : "^[A-Z]{2}$"
          },
          "countryName" : {
            "type" : "string",
            "description" : "Country name",
            "example" : "Thailand"
          },
          "geoNameId" : {
            "type" : "string",
            "description" : "GeoNames identifier",
            "example" : "1609350"
          }
        }
      },
      "GeoIpLightweight_Non_Authenticated_Entity" : {
        "type" : "object",
        "description" : "Uses MaxMind's city lite db to persist GeoIpLightweight objects in our own db.",
        "example" : {
          "cityName" : "Bangkok",
          "continentCode" : "AS",
          "continentName" : "Asia",
          "countryIsoCode" : "TH",
          "countryName" : "Thailand",
          "geoNameId" : "1609350",
          "localeCode" : "en",
          "subDivision1Code" : "10",
          "subDivision1Name" : "Bangkok",
          "subDivision2Code" : "1001",
          "subDivision2Name" : "Phra Nakhon",
          "timezone" : "Asia/Bangkok"
        },
        "properties" : {
          "cityName" : {
            "type" : "string",
            "description" : "City name",
            "example" : "New York",
            "minLength" : 1
          },
          "continentCode" : {
            "type" : "string",
            "description" : "Continent code",
            "example" : "NA",
            "minLength" : 1
          },
          "continentName" : {
            "type" : "string",
            "description" : "Continent name",
            "example" : "North America",
            "minLength" : 1
          },
          "countryIsoCode" : {
            "type" : "string",
            "description" : "Country ISO code",
            "example" : "US",
            "minLength" : 1,
            "pattern" : "^[A-Z]{2}$"
          },
          "countryName" : {
            "type" : "string",
            "description" : "Country name",
            "example" : "United States",
            "minLength" : 1
          },
          "geoNameId" : {
            "type" : "string",
            "description" : "GeoNameLightweight identifiers taken from [https://geonames.org](https://geonames.org).",
            "example" : "8798734",
            "minLength" : 1
          },
          "localeCode" : {
            "type" : "string",
            "description" : "Locale code",
            "example" : "en",
            "minLength" : 1,
            "pattern" : "^[a-z]{2}(-[A-Z]{2})?$"
          },
          "subDivision1Code" : {
            "type" : "string",
            "description" : "Sub-division 1 code",
            "example" : "NY"
          },
          "subDivision1Name" : {
            "type" : "string",
            "description" : "Sub-division 1 name",
            "example" : "NY"
          },
          "subDivision2Code" : {
            "type" : "string",
            "description" : "Sub-division 2 code",
            "example" : "Kings"
          },
          "subDivision2Name" : {
            "type" : "string",
            "description" : "Sub-division 2 name",
            "example" : "Kings County"
          },
          "timezone" : {
            "type" : "string",
            "description" : "Timezone",
            "example" : "America/New_York",
            "minLength" : 1
          }
        },
        "required" : [ "cityName", "continentCode", "continentName", "countryIsoCode", "countryName", "geoNameId", "localeCode", "timezone" ]
      },
      "QuoteLightweight_Non_Authenticated_Entity" : {
        "type" : "object",
        "description" : "Lightweight representation of an exchange rate quote between a source and target currency pair",
        "example" : {
          "exchangeRate" : 33.5,
          "source" : "USD",
          "target" : "THB",
          "timestamp" : 1705233000000
        },
        "properties" : {
          "exchangeRate" : {
            "type" : "number",
            "description" : "Exchange rate from source to target currency",
            "example" : 33.5
          },
          "source" : {
            "type" : "string",
            "description" : "ISO 4217 source currency code",
            "example" : "USD",
            "minLength" : 1
          },
          "target" : {
            "type" : "string",
            "description" : "ISO 4217 target currency code",
            "example" : "THB",
            "minLength" : 1
          },
          "timestamp" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Unix epoch milliseconds when the quote was recorded",
            "example" : 1705233000000
          }
        },
        "required" : [ "exchangeRate", "source", "target", "timestamp" ]
      },
      "KeyValuePair_Administrator" : {
        "type" : "object",
        "description" : "Immutable key-value pair associating a machine-readable value with a human-readable label.",
        "example" : {
          "label" : "Hotel & Resort",
          "value" : "HOTEL"
        },
        "properties" : {
          "label" : {
            "type" : "string",
            "description" : "English readable text of the value.",
            "example" : "Readable text label",
            "minLength" : 1
          },
          "value" : {
            "type" : "string",
            "description" : "The value that should be persisted.",
            "example" : "id-1",
            "minLength" : 1
          }
        },
        "required" : [ "label", "value" ]
      },
      "IpLocation_Non_Authenticated_Entity" : {
        "type" : "object",
        "description" : "Geo-location details resolved from an IP address",
        "example" : {
          "cityGeoNameId" : 1609350,
          "cityName" : "Bangkok",
          "continentCode" : "AS",
          "continentGeoNameId" : 6255147,
          "continentName" : "Asia",
          "countryCode" : "TH",
          "countryGeoNameId" : 1605651,
          "countryName" : "Thailand",
          "latitude" : 13.7370197,
          "longitude" : 100.5581533,
          "timezone" : "Asia/Bangkok"
        },
        "properties" : {
          "cityGeoNameId" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "City GeoNames identifier",
            "example" : 1609350
          },
          "cityName" : {
            "type" : "string",
            "description" : "City name",
            "example" : "Bangkok"
          },
          "continentCode" : {
            "type" : "string",
            "description" : "Continent code",
            "example" : "AS"
          },
          "continentGeoNameId" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Continent GeoNames identifier",
            "example" : 6255147
          },
          "continentName" : {
            "type" : "string",
            "description" : "Continent name",
            "example" : "Asia"
          },
          "countryCode" : {
            "type" : "string",
            "description" : "Country ISO 3166-1 alpha-2 code",
            "example" : "TH"
          },
          "countryGeoNameId" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Country GeoNames identifier",
            "example" : 1605651
          },
          "countryName" : {
            "type" : "string",
            "description" : "Country name",
            "example" : "Thailand"
          },
          "latitude" : {
            "type" : "number",
            "format" : "double",
            "description" : "Latitude coordinate",
            "example" : 13.7370197
          },
          "longitude" : {
            "type" : "number",
            "format" : "double",
            "description" : "Longitude coordinate",
            "example" : 100.5581533
          },
          "timezone" : {
            "type" : "string",
            "description" : "IANA time zone identifier",
            "example" : "Asia/Bangkok"
          }
        }
      }
    },
    "securitySchemes" : {
      "oauth2ClientCredentials" : {
        "type" : "oauth2",
        "description" : "Every endpoint is protected with OAuth2 **client credentials**. Create an\n**Application** in your account to obtain a `clientId` and `clientSecret`, then\nexchange them for a short-lived bearer token.\n\n### 1. Request an access token\n`POST` to the **Token URL** below with `Content-Type: application/x-www-form-urlencoded`\nand a body of `grant_type=client_credentials` (optionally `scope=<space-separated scopes>`).\nSend your credentials as HTTP Basic auth:\n`Authorization: Basic base64(clientId + \":\" + clientSecret)`.\n\n### 2. Call the API\nPass the returned token on every request: `Authorization: Bearer <access_token>`.\n\nTokens carry only the scopes granted to your Application — request the least privilege\nyou need. There is no interactive authorize step and no refresh token for this flow;\nrequest a new token when the current one expires.",
        "name" : "Client Credentials",
        "flows" : {
          "clientCredentials" : {
            "tokenUrl" : "https://iam.wink.travel/oauth2/token",
            "scopes" : {
              "account.read" : "View your account settings.",
              "account.write" : "Create and update your account settings.",
              "account.remove" : "Delete your account settings.",
              "content.read" : "View your property content.",
              "content.write" : "Create and update your property content.",
              "content.remove" : "Delete your property content.",
              "analytics.read" : "View your analytics & reports.",
              "analytics.write" : "Create and update your analytics & reports.",
              "analytics.remove" : "Delete your analytics & reports."
            }
          }
        }
      }
    }
  }
}