[
  {
    "path": ".config/dotnet-tools.json",
    "content": "{\n  \"version\": 1,\n  \"isRoot\": true,\n  \"tools\": {\n    \"paket\": {\n      \"version\": \"10.3.1\",\n      \"commands\": [\n        \"paket\"\n      ],\n      \"rollForward\": false\n    },\n    \"dotnet-serve\": {\n      \"version\": \"1.10.194\",\n      \"commands\": [\n        \"dotnet-serve\"\n      ],\n      \"rollForward\": false\n    },\n    \"fantomas\": {\n      \"version\": \"7.0.5\",\n      \"commands\": [\n        \"fantomas\"\n      ],\n      \"rollForward\": false\n    }\n  }\n}"
  },
  {
    "path": ".editorconfig",
    "content": "; EditorConfig helps developers define and maintain consistent\n; coding styles between different editors and IDEs.\n\n; For more visit http://editorconfig.org.\nroot = true\n\n; Choose between lf or rf on \"end_of_line\" property\n[*]\nindent_style = space\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n\n[{*.fs,*.fsx}]\nindent_size = 4\nindent_style = space\nmax_line_length=150\nfsharp_max_function_binding_width=10\nfsharp_max_infix_operator_expression=70\nfsharp_space_before_parameter=false\nfsharp_space_before_lowercase_invocation=false\nfsharp_multiline_block_brackets_on_same_column=true\nfsharp_experimental_stroustrup_style=true\nfsharp_bar_before_discriminated_union_declaration = true\nfsharp_keep_max_number_of_blank_lines=3\n"
  },
  {
    "path": ".gitattributes",
    "content": "# Auto detect text files\n* text=auto \n\n# Custom for Visual Studio\n*.cs diff=csharp text=auto eol=lf\n*.fs diff=csharp text=auto eol=lf\n*.fsi diff=csharp text=auto eol=lf\n*.fsx diff=csharp text=auto eol=lf\n*.sln text eol=crlf merge=union\n*.csproj merge=union\n*.vbproj merge=union\n*.fsproj merge=union\n*.dbproj merge=union\n\n# Standard to msysgit\n*.doc diff=astextplain\n*.DOC diff=astextplain\n*.docx diff=astextplain\n*.DOCX diff=astextplain\n*.dot diff=astextplain\n*.DOT diff=astextplain\n*.pdf diff=astextplain\n*.PDF diff=astextplain\n*.rtf diff=astextplain\n*.RTF diff=astextplain\n\n.github/workflows/*.lock.yml linguist-generated=true merge=ours"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "### Description\n\nPlease provide a succinct description of your issue.\n\n### Repro steps\n\nPlease provide the steps required to reproduce the problem\n\n1. Type provider type definition with parameters\n\n2. Sample schema or relevant schema part\n\n### Expected behavior\n\nPlease provide a description of the behavior you expect.\n\n### Actual behavior\n\nPlease provide a description of the actual behavior you observe.\n\n### Known workarounds\n\nPlease provide a description of any known workarounds.\n\n### Affected Type Providers\n\n- [ ] SwaggerClientProvider\n- [ ] OpenApiClientProvider\n\n### Related information\n\n* Operating system\n* Branch\n* .NET Runtime, CoreCLR or Mono Version\n* Performance information, links to performance testing scripts\n"
  },
  {
    "path": ".github/aw/actions-lock.json",
    "content": "{\n  \"entries\": {\n    \"actions/github-script@v9.0.0\": {\n      \"repo\": \"actions/github-script\",\n      \"version\": \"v9.0.0\",\n      \"sha\": \"d746ffe35508b1917358783b479e04febd2b8f71\"\n    },\n    \"github/gh-aw-actions/setup@v0.68.3\": {\n      \"repo\": \"github/gh-aw-actions/setup\",\n      \"version\": \"v0.68.3\",\n      \"sha\": \"ba90f2186d7ad780ec640f364005fa24e797b360\"\n    },\n    \"github/gh-aw/actions/setup@v0.71.1\": {\n      \"repo\": \"github/gh-aw/actions/setup\",\n      \"version\": \"v0.71.1\",\n      \"sha\": \"f01a9d118afa6e306f3645ca31e43f4ea8fb4d22\"\n    }\n  },\n  \"containers\": {\n    \"ghcr.io/github/gh-aw-firewall/agent:0.25.20\": {\n      \"image\": \"ghcr.io/github/gh-aw-firewall/agent:0.25.20\",\n      \"digest\": \"sha256:9161f2415a3306a344aca34dd671ee69f122317e0a512e66dc64c94b9c508682\",\n      \"pinned_image\": \"ghcr.io/github/gh-aw-firewall/agent:0.25.20@sha256:9161f2415a3306a344aca34dd671ee69f122317e0a512e66dc64c94b9c508682\"\n    },\n    \"ghcr.io/github/gh-aw-firewall/api-proxy:0.25.20\": {\n      \"image\": \"ghcr.io/github/gh-aw-firewall/api-proxy:0.25.20\",\n      \"digest\": \"sha256:6971639e381e82e45134bcd333181f456df3a52cd6f818a3e3d6de068ff91519\",\n      \"pinned_image\": \"ghcr.io/github/gh-aw-firewall/api-proxy:0.25.20@sha256:6971639e381e82e45134bcd333181f456df3a52cd6f818a3e3d6de068ff91519\"\n    },\n    \"ghcr.io/github/gh-aw-firewall/squid:0.25.20\": {\n      \"image\": \"ghcr.io/github/gh-aw-firewall/squid:0.25.20\",\n      \"digest\": \"sha256:5411d903f73ee597e6a084971c2adef3eb0bd405910df3ed7bf5e3d6bd58a236\",\n      \"pinned_image\": \"ghcr.io/github/gh-aw-firewall/squid:0.25.20@sha256:5411d903f73ee597e6a084971c2adef3eb0bd405910df3ed7bf5e3d6bd58a236\"\n    },\n    \"ghcr.io/github/gh-aw-mcpg:v0.2.19\": {\n      \"image\": \"ghcr.io/github/gh-aw-mcpg:v0.2.19\",\n      \"digest\": \"sha256:44d4d8de7e6c37aaea484eba489940c52df6a0b54078ddcbc9327592d5b3c3dd\",\n      \"pinned_image\": \"ghcr.io/github/gh-aw-mcpg:v0.2.19@sha256:44d4d8de7e6c37aaea484eba489940c52df6a0b54078ddcbc9327592d5b3c3dd\"\n    },\n    \"ghcr.io/github/github-mcp-server:v0.32.0\": {\n      \"image\": \"ghcr.io/github/github-mcp-server:v0.32.0\",\n      \"digest\": \"sha256:2763823c63bcca718ce53850a1d7fcf2f501ec84028394f1b63ce7e9f4f9be28\",\n      \"pinned_image\": \"ghcr.io/github/github-mcp-server:v0.32.0@sha256:2763823c63bcca718ce53850a1d7fcf2f501ec84028394f1b63ce7e9f4f9be28\"\n    },\n    \"node:lts-alpine\": {\n      \"image\": \"node:lts-alpine\",\n      \"digest\": \"sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f\",\n      \"pinned_image\": \"node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f\"\n    }\n  }\n}\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n    labels:\n      - \"enhancement\"\n  - package-ecosystem: \"nuget\"\n    directory: \"/.config\"\n    schedule:\n      interval: \"weekly\"\n    labels:\n      - \"enhancement\"\n"
  },
  {
    "path": ".github/workflows/docs.yml",
    "content": "name: Deploy docs to GitHub Pages\n\non:\n  push:\n    branches: [master]\n    paths:\n      - 'docs/**'\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  pages: write\n  id-token: write\n\nconcurrency:\n  group: pages\n  cancel-in-progress: false\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n\n      - uses: actions/setup-node@v6\n        with:\n          node-version: 22\n\n      - name: Install dependencies\n        run: npm ci\n        working-directory: docs\n\n      - name: Build docs\n        run: npm run docs:build\n        working-directory: docs\n\n      - uses: actions/configure-pages@v6\n\n      - uses: actions/upload-pages-artifact@v5\n        with:\n          path: docs/.vitepress/dist\n\n  deploy:\n    environment:\n      name: github-pages\n      url: ${{ steps.deployment.outputs.page_url }}\n    needs: build\n    runs-on: ubuntu-latest\n    steps:\n      - name: Deploy to GitHub Pages\n        id: deployment\n        uses: actions/deploy-pages@v5\n"
  },
  {
    "path": ".github/workflows/dotnetcore.yml",
    "content": "name: Build and Test\n\non:\n  push:\n    branches:\n      - master\n  pull_request:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  build:\n    strategy:\n      fail-fast: false\n      matrix:\n        os: [ubuntu-latest, windows-latest]\n    runs-on: ${{ matrix.os }}\n\n    steps:\n      - uses: actions/checkout@v6\n      - name: Setup .NET 10.0 SDK\n        uses: actions/setup-dotnet@v5\n        with:\n          dotnet-version: \"10.0.x\"\n      - name: Cache NuGet packages\n        uses: actions/cache@v5\n        with:\n          path: |\n            ~/.nuget/packages\n            ~/.local/share/NuGet\n            %LOCALAPPDATA%\\NuGet\\v3-cache\n          key: ${{ runner.os }}-nuget-${{ hashFiles('**/paket.lock') }}\n          restore-keys: |\n            ${{ runner.os }}-nuget-\n      - name: Cache .paket directory\n        uses: actions/cache@v5\n        with:\n          path: .paket\n          key: ${{ runner.os }}-paket-${{ hashFiles('**/paket.lock') }}\n          restore-keys: |\n            ${{ runner.os }}-paket-\n      - name: Install local tools\n        run: dotnet tool restore\n      - name: Paket Restore\n        run: dotnet paket restore\n      - name: Build and Test\n        run: dotnet fsi build.fsx\n"
  },
  {
    "path": ".github/workflows/repo-assist.lock.yml",
    "content": "# gh-aw-metadata: {\"schema_version\":\"v3\",\"frontmatter_hash\":\"9795d605bdecebc79c8c5cbb8fbf7ffa7b3dfd48ab232f75dcff9e0b162f1b62\",\"compiler_version\":\"v0.68.3\",\"strict\":true,\"agent_id\":\"copilot\"}\n# gh-aw-manifest: {\"version\":1,\"secrets\":[\"COPILOT_GITHUB_TOKEN\",\"GH_AW_CI_TRIGGER_TOKEN\",\"GH_AW_GITHUB_MCP_SERVER_TOKEN\",\"GH_AW_GITHUB_TOKEN\",\"GITHUB_TOKEN\"],\"actions\":[{\"repo\":\"actions/checkout\",\"sha\":\"de0fac2e4500dabe0009e67214ff5f5447ce83dd\",\"version\":\"v6.0.2\"},{\"repo\":\"actions/download-artifact\",\"sha\":\"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c\",\"version\":\"v8.0.1\"},{\"repo\":\"actions/github-script\",\"sha\":\"373c709c69115d41ff229c7e5df9f8788daa9553\",\"version\":\"v9\"},{\"repo\":\"actions/upload-artifact\",\"sha\":\"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a\",\"version\":\"v7.0.1\"},{\"repo\":\"github/gh-aw-actions/setup\",\"sha\":\"ba90f2186d7ad780ec640f364005fa24e797b360\",\"version\":\"v0.68.3\"}],\"containers\":[{\"image\":\"ghcr.io/github/gh-aw-firewall/agent:0.25.20\",\"digest\":\"sha256:9161f2415a3306a344aca34dd671ee69f122317e0a512e66dc64c94b9c508682\",\"pinned_image\":\"ghcr.io/github/gh-aw-firewall/agent:0.25.20@sha256:9161f2415a3306a344aca34dd671ee69f122317e0a512e66dc64c94b9c508682\"},{\"image\":\"ghcr.io/github/gh-aw-firewall/api-proxy:0.25.20\",\"digest\":\"sha256:6971639e381e82e45134bcd333181f456df3a52cd6f818a3e3d6de068ff91519\",\"pinned_image\":\"ghcr.io/github/gh-aw-firewall/api-proxy:0.25.20@sha256:6971639e381e82e45134bcd333181f456df3a52cd6f818a3e3d6de068ff91519\"},{\"image\":\"ghcr.io/github/gh-aw-firewall/squid:0.25.20\",\"digest\":\"sha256:5411d903f73ee597e6a084971c2adef3eb0bd405910df3ed7bf5e3d6bd58a236\",\"pinned_image\":\"ghcr.io/github/gh-aw-firewall/squid:0.25.20@sha256:5411d903f73ee597e6a084971c2adef3eb0bd405910df3ed7bf5e3d6bd58a236\"},{\"image\":\"ghcr.io/github/gh-aw-mcpg:v0.2.19\",\"digest\":\"sha256:44d4d8de7e6c37aaea484eba489940c52df6a0b54078ddcbc9327592d5b3c3dd\",\"pinned_image\":\"ghcr.io/github/gh-aw-mcpg:v0.2.19@sha256:44d4d8de7e6c37aaea484eba489940c52df6a0b54078ddcbc9327592d5b3c3dd\"},{\"image\":\"ghcr.io/github/github-mcp-server:v0.32.0\",\"digest\":\"sha256:2763823c63bcca718ce53850a1d7fcf2f501ec84028394f1b63ce7e9f4f9be28\",\"pinned_image\":\"ghcr.io/github/github-mcp-server:v0.32.0@sha256:2763823c63bcca718ce53850a1d7fcf2f501ec84028394f1b63ce7e9f4f9be28\"},{\"image\":\"node:lts-alpine\",\"digest\":\"sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f\",\"pinned_image\":\"node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f\"}]}\n#    ___                   _   _      \n#   / _ \\                 | | (_)     \n#  | |_| | __ _  ___ _ __ | |_ _  ___ \n#  |  _  |/ _` |/ _ \\ '_ \\| __| |/ __|\n#  | | | | (_| |  __/ | | | |_| | (__ \n#  \\_| |_/\\__, |\\___|_| |_|\\__|_|\\___|\n#          __/ |\n#  _    _ |___/ \n# | |  | |                / _| |\n# | |  | | ___ _ __ _  __| |_| | _____      ____\n# | |/\\| |/ _ \\ '__| |/ /|  _| |/ _ \\ \\ /\\ / / ___|\n# \\  /\\  / (_) | | | | ( | | | | (_) \\ V  V /\\__ \\\n#  \\/  \\/ \\___/|_| |_|\\_\\|_| |_|\\___/ \\_/\\_/ |___/\n#\n# This file was automatically generated by gh-aw (v0.68.3). DO NOT EDIT.\n#\n# To update this file, edit githubnext/agentics/workflows/repo-assist.md@3de4e604a36b5190a1c7dc4719c7341500ba8a95 and run:\n#   gh aw compile\n# Not all edits will cause changes to this file.\n#\n# For more information: https://github.github.com/gh-aw/introduction/overview/\n#\n# A friendly repository assistant that runs 2 times a day to support contributors and maintainers.\n# Can also be triggered on-demand via '/repo-assist <instructions>' to perform specific tasks.\n# - Labels and triages open issues\n# - Comments helpfully on open issues to unblock contributors and onboard newcomers\n# - Identifies issues that can be fixed and creates draft pull requests with fixes\n# - Improves performance, testing, and code quality via PRs\n# - Makes engineering investments: dependency updates, CI improvements, tooling\n# - Updates its own PRs when CI fails or merge conflicts arise\n# - Nudges stale PRs waiting for author response\n# - Takes the repository forward with proactive improvements\n# - Maintains a persistent memory of work done and what remains\n# Always polite, constructive, and mindful of the project's goals.\n#\n# Source: githubnext/agentics/workflows/repo-assist.md@3de4e604a36b5190a1c7dc4719c7341500ba8a95\n#\n# Secrets used:\n#   - COPILOT_GITHUB_TOKEN\n#   - GH_AW_CI_TRIGGER_TOKEN\n#   - GH_AW_GITHUB_MCP_SERVER_TOKEN\n#   - GH_AW_GITHUB_TOKEN\n#   - GITHUB_TOKEN\n#\n# Custom actions used:\n#   - actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n#   - actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1\n#   - actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n#   - actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1\n#   - github/gh-aw-actions/setup@ba90f2186d7ad780ec640f364005fa24e797b360 # v0.68.3\n#\n# Container images used:\n#   - ghcr.io/github/gh-aw-firewall/agent:0.25.20@sha256:9161f2415a3306a344aca34dd671ee69f122317e0a512e66dc64c94b9c508682\n#   - ghcr.io/github/gh-aw-firewall/api-proxy:0.25.20@sha256:6971639e381e82e45134bcd333181f456df3a52cd6f818a3e3d6de068ff91519\n#   - ghcr.io/github/gh-aw-firewall/squid:0.25.20@sha256:5411d903f73ee597e6a084971c2adef3eb0bd405910df3ed7bf5e3d6bd58a236\n#   - ghcr.io/github/gh-aw-mcpg:v0.2.19@sha256:44d4d8de7e6c37aaea484eba489940c52df6a0b54078ddcbc9327592d5b3c3dd\n#   - ghcr.io/github/github-mcp-server:v0.32.0@sha256:2763823c63bcca718ce53850a1d7fcf2f501ec84028394f1b63ce7e9f4f9be28\n#   - node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f\n\nname: \"Repo Assist\"\n\"on\":\n  discussion:\n    types:\n    - created\n    - edited\n  discussion_comment:\n    types:\n    - created\n    - edited\n  issue_comment:\n    types:\n    - created\n    - edited\n  issues:\n    types:\n    - opened\n    - edited\n    - reopened\n  pull_request:\n    types:\n    - opened\n    - edited\n    - reopened\n  pull_request_review_comment:\n    types:\n    - created\n    - edited\n  schedule:\n  - cron: \"46 12 * * *\"\n  workflow_dispatch:\n    inputs:\n      aw_context:\n        default: \"\"\n        description: Agent caller context (used internally by Agentic Workflows).\n        required: false\n        type: string\n\npermissions: {}\n\nconcurrency:\n  group: \"gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number || github.run_id }}\"\n\nrun-name: \"Repo Assist\"\n\njobs:\n  activation:\n    needs: pre_activation\n    if: \"needs.pre_activation.outputs.activated == 'true' && ((github.event_name == 'issues' || github.event_name == 'issue_comment' || github.event_name == 'pull_request' || github.event_name == 'pull_request_review_comment' || github.event_name == 'discussion' || github.event_name == 'discussion_comment') && (github.event_name == 'issues' && (startsWith(github.event.issue.body, '/repo-assist ') || startsWith(github.event.issue.body, '/repo-assist\\n') || github.event.issue.body == '/repo-assist') || github.event_name == 'issue_comment' && (startsWith(github.event.comment.body, '/repo-assist ') || startsWith(github.event.comment.body, '/repo-assist\\n') || github.event.comment.body == '/repo-assist') && github.event.issue.pull_request == null || github.event_name == 'issue_comment' && (startsWith(github.event.comment.body, '/repo-assist ') || startsWith(github.event.comment.body, '/repo-assist\\n') || github.event.comment.body == '/repo-assist') && github.event.issue.pull_request != null || github.event_name == 'pull_request_review_comment' && (startsWith(github.event.comment.body, '/repo-assist ') || startsWith(github.event.comment.body, '/repo-assist\\n') || github.event.comment.body == '/repo-assist') || github.event_name == 'pull_request' && (startsWith(github.event.pull_request.body, '/repo-assist ') || startsWith(github.event.pull_request.body, '/repo-assist\\n') || github.event.pull_request.body == '/repo-assist') || github.event_name == 'discussion' && (startsWith(github.event.discussion.body, '/repo-assist ') || startsWith(github.event.discussion.body, '/repo-assist\\n') || github.event.discussion.body == '/repo-assist') || github.event_name == 'discussion_comment' && (startsWith(github.event.comment.body, '/repo-assist ') || startsWith(github.event.comment.body, '/repo-assist\\n') || github.event.comment.body == '/repo-assist')) || (!(github.event_name == 'issues')) && (!(github.event_name == 'issue_comment')) && (!(github.event_name == 'pull_request')) && (!(github.event_name == 'pull_request_review_comment')) && (!(github.event_name == 'discussion')) && (!(github.event_name == 'discussion_comment')))\"\n    runs-on: ubuntu-slim\n    permissions:\n      actions: read\n      contents: read\n      discussions: write\n      issues: write\n      pull-requests: write\n    outputs:\n      body: ${{ steps.sanitized.outputs.body }}\n      comment_id: ${{ steps.add-comment.outputs.comment-id }}\n      comment_repo: ${{ steps.add-comment.outputs.comment-repo }}\n      comment_url: ${{ steps.add-comment.outputs.comment-url }}\n      lockdown_check_failed: ${{ steps.generate_aw_info.outputs.lockdown_check_failed == 'true' }}\n      model: ${{ steps.generate_aw_info.outputs.model }}\n      secret_verification_result: ${{ steps.validate-secret.outputs.verification_result }}\n      setup-trace-id: ${{ steps.setup.outputs.trace-id }}\n      slash_command: ${{ needs.pre_activation.outputs.matched_command }}\n      stale_lock_file_failed: ${{ steps.check-lock-file.outputs.stale_lock_file_failed == 'true' }}\n      text: ${{ steps.sanitized.outputs.text }}\n      title: ${{ steps.sanitized.outputs.title }}\n    steps:\n      - name: Setup Scripts\n        id: setup\n        uses: github/gh-aw-actions/setup@ba90f2186d7ad780ec640f364005fa24e797b360 # v0.68.3\n        with:\n          destination: ${{ runner.temp }}/gh-aw/actions\n          job-name: ${{ github.job }}\n          trace-id: ${{ needs.pre_activation.outputs.setup-trace-id }}\n      - name: Generate agentic run info\n        id: generate_aw_info\n        env:\n          GH_AW_INFO_ENGINE_ID: \"copilot\"\n          GH_AW_INFO_ENGINE_NAME: \"GitHub Copilot CLI\"\n          GH_AW_INFO_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || 'auto' }}\n          GH_AW_INFO_VERSION: \"1.0.21\"\n          GH_AW_INFO_AGENT_VERSION: \"1.0.21\"\n          GH_AW_INFO_CLI_VERSION: \"v0.68.3\"\n          GH_AW_INFO_WORKFLOW_NAME: \"Repo Assist\"\n          GH_AW_INFO_EXPERIMENTAL: \"false\"\n          GH_AW_INFO_SUPPORTS_TOOLS_ALLOWLIST: \"true\"\n          GH_AW_INFO_STAGED: \"false\"\n          GH_AW_INFO_ALLOWED_DOMAINS: '[\"defaults\",\"dotnet\",\"node\",\"python\",\"rust\",\"java\"]'\n          GH_AW_INFO_FIREWALL_ENABLED: \"true\"\n          GH_AW_INFO_AWF_VERSION: \"v0.25.20\"\n          GH_AW_INFO_AWMG_VERSION: \"\"\n          GH_AW_INFO_FIREWALL_TYPE: \"squid\"\n          GH_AW_COMPILED_STRICT: \"true\"\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/generate_aw_info.cjs');\n            await main(core, context);\n      - name: Add eyes reaction for immediate feedback\n        id: react\n        if: github.event_name == 'issues' || github.event_name == 'issue_comment' || github.event_name == 'pull_request_review_comment' || github.event_name == 'discussion' || github.event_name == 'discussion_comment' || github.event_name == 'pull_request' && github.event.pull_request.head.repo.id == github.repository_id\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_REACTION: \"eyes\"\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/add_reaction.cjs');\n            await main();\n      - name: Validate COPILOT_GITHUB_TOKEN secret\n        id: validate-secret\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/validate_multi_secret.sh\" COPILOT_GITHUB_TOKEN 'GitHub Copilot CLI' https://github.github.com/gh-aw/reference/engines/#github-copilot-default\n        env:\n          COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}\n      - name: Checkout .github and .agents folders\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          persist-credentials: false\n          sparse-checkout: |\n            .github\n            .agents\n          sparse-checkout-cone-mode: true\n          fetch-depth: 1\n      - name: Check workflow lock file\n        id: check-lock-file\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_WORKFLOW_FILE: \"repo-assist.lock.yml\"\n          GH_AW_CONTEXT_WORKFLOW_REF: \"${{ github.workflow_ref }}\"\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs');\n            await main();\n      - name: Check compile-agentic version\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_COMPILED_VERSION: \"v0.68.3\"\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/check_version_updates.cjs');\n            await main();\n      - name: Compute current body text\n        id: sanitized\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs');\n            await main();\n      - name: Add comment with workflow run link\n        id: add-comment\n        if: github.event_name == 'issues' || github.event_name == 'issue_comment' || github.event_name == 'pull_request_review_comment' || github.event_name == 'discussion' || github.event_name == 'discussion_comment' || github.event_name == 'pull_request' && github.event.pull_request.head.repo.id == github.repository_id\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_WORKFLOW_NAME: \"Repo Assist\"\n          GH_AW_SAFE_OUTPUT_MESSAGES: \"{\\\"footer\\\":\\\"\\\\u003e Generated by 🌈 {workflow_name}, see [workflow run]({run_url}). [Learn more](https://github.com/githubnext/agentics/blob/main/docs/repo-assist.md).\\\",\\\"runStarted\\\":\\\"{workflow_name} is processing {event_type}, see [workflow run]({run_url})...\\\",\\\"runSuccess\\\":\\\"✓ {workflow_name} completed successfully, see [workflow run]({run_url}).\\\",\\\"runFailure\\\":\\\"✗ {workflow_name} encountered {status}, see [workflow run]({run_url}).\\\"}\"\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs');\n            await main();\n      - name: Create prompt with built-in context\n        env:\n          GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt\n          GH_AW_SAFE_OUTPUTS: ${{ runner.temp }}/gh-aw/safeoutputs/outputs.jsonl\n          GH_AW_GITHUB_ACTOR: ${{ github.actor }}\n          GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}\n          GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}\n          GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}\n          GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}\n          GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}\n          GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}\n          GH_AW_GITHUB_SERVER_URL: ${{ github.server_url }}\n          GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}\n          GH_AW_IS_PR_COMMENT: ${{ github.event.issue.pull_request && 'true' || '' }}\n          GH_AW_STEPS_SANITIZED_OUTPUTS_TEXT: ${{ steps.sanitized.outputs.text }}\n          GH_AW_WIKI_NOTE: ${{ '' }}\n        # poutine:ignore untrusted_checkout_exec\n        run: |\n          bash \"${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh\"\n          {\n          cat << 'GH_AW_PROMPT_2095c4ee969b23af_EOF'\n          <system>\n          GH_AW_PROMPT_2095c4ee969b23af_EOF\n          cat \"${RUNNER_TEMP}/gh-aw/prompts/xpia.md\"\n          cat \"${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md\"\n          cat \"${RUNNER_TEMP}/gh-aw/prompts/markdown.md\"\n          cat \"${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md\"\n          cat \"${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md\"\n          cat << 'GH_AW_PROMPT_2095c4ee969b23af_EOF'\n          <safe-output-tools>\n          Tools: add_comment(max:10), create_issue(max:4), update_issue, create_pull_request(max:4), add_labels(max:30), remove_labels(max:5), push_to_pull_request_branch(max:4), missing_tool, missing_data, noop\n          GH_AW_PROMPT_2095c4ee969b23af_EOF\n          cat \"${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md\"\n          cat \"${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md\"\n          cat << 'GH_AW_PROMPT_2095c4ee969b23af_EOF'\n          </safe-output-tools>\n          <github-context>\n          The following GitHub context information is available for this workflow:\n          {{#if __GH_AW_GITHUB_ACTOR__ }}\n          - **actor**: __GH_AW_GITHUB_ACTOR__\n          {{/if}}\n          {{#if __GH_AW_GITHUB_REPOSITORY__ }}\n          - **repository**: __GH_AW_GITHUB_REPOSITORY__\n          {{/if}}\n          {{#if __GH_AW_GITHUB_WORKSPACE__ }}\n          - **workspace**: __GH_AW_GITHUB_WORKSPACE__\n          {{/if}}\n          {{#if __GH_AW_GITHUB_EVENT_ISSUE_NUMBER__ }}\n          - **issue-number**: #__GH_AW_GITHUB_EVENT_ISSUE_NUMBER__\n          {{/if}}\n          {{#if __GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__ }}\n          - **discussion-number**: #__GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__\n          {{/if}}\n          {{#if __GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__ }}\n          - **pull-request-number**: #__GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__\n          {{/if}}\n          {{#if __GH_AW_GITHUB_EVENT_COMMENT_ID__ }}\n          - **comment-id**: __GH_AW_GITHUB_EVENT_COMMENT_ID__\n          {{/if}}\n          {{#if __GH_AW_GITHUB_RUN_ID__ }}\n          - **workflow-run-id**: __GH_AW_GITHUB_RUN_ID__\n          {{/if}}\n          - **checkouts**: The following repositories have been checked out and are available in the workspace:\n            - `$GITHUB_WORKSPACE` → `__GH_AW_GITHUB_REPOSITORY__` (cwd) [full history, all branches available as remote-tracking refs] [additional refs fetched: *]\n            - **Note**: If a branch you need is not in the list above and is not listed as an additional fetched ref, it has NOT been checked out. For private repositories you cannot fetch it without proper authentication. If the branch is required and not available, exit with an error and ask the user to add it to the `fetch:` option of the `checkout:` configuration (e.g., `fetch: [\"refs/pulls/open/*\"]` for all open PR refs, or `fetch: [\"main\", \"feature/my-branch\"]` for specific branches).\n          </github-context>\n          \n          GH_AW_PROMPT_2095c4ee969b23af_EOF\n          cat \"${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md\"\n          if [ \"$GITHUB_EVENT_NAME\" = \"issue_comment\" ] && [ -n \"$GH_AW_IS_PR_COMMENT\" ] || [ \"$GITHUB_EVENT_NAME\" = \"pull_request_review_comment\" ] || [ \"$GITHUB_EVENT_NAME\" = \"pull_request_review\" ]; then\n            cat \"${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md\"\n          fi\n          if [ \"$GITHUB_EVENT_NAME\" = \"issue_comment\" ] && [ -n \"$GH_AW_IS_PR_COMMENT\" ] || [ \"$GITHUB_EVENT_NAME\" = \"pull_request_review_comment\" ] || [ \"$GITHUB_EVENT_NAME\" = \"pull_request_review\" ]; then\n            cat \"${RUNNER_TEMP}/gh-aw/prompts/pr_context_push_to_pr_branch_guidance.md\"\n          fi\n          cat << 'GH_AW_PROMPT_2095c4ee969b23af_EOF'\n          </system>\n          {{#runtime-import .github/workflows/repo-assist.md}}\n          GH_AW_PROMPT_2095c4ee969b23af_EOF\n          } > \"$GH_AW_PROMPT\"\n      - name: Interpolate variables and render templates\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt\n          GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}\n          GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}\n          GH_AW_GITHUB_SERVER_URL: ${{ github.server_url }}\n          GH_AW_STEPS_SANITIZED_OUTPUTS_TEXT: ${{ steps.sanitized.outputs.text }}\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/interpolate_prompt.cjs');\n            await main();\n      - name: Substitute placeholders\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt\n          GH_AW_GITHUB_ACTOR: ${{ github.actor }}\n          GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}\n          GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}\n          GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}\n          GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}\n          GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}\n          GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}\n          GH_AW_GITHUB_SERVER_URL: ${{ github.server_url }}\n          GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}\n          GH_AW_IS_PR_COMMENT: ${{ github.event.issue.pull_request && 'true' || '' }}\n          GH_AW_MEMORY_BRANCH_NAME: 'memory/repo-assist'\n          GH_AW_MEMORY_CONSTRAINTS: \"\\n\\n**Constraints:**\\n- **Max File Size**: 10240 bytes (0.01 MB) per file\\n- **Max File Count**: 100 files per commit\\n- **Max Patch Size**: 10240 bytes (10 KB) total per push (max: 100 KB)\\n\"\n          GH_AW_MEMORY_DESCRIPTION: ''\n          GH_AW_MEMORY_DIR: '/tmp/gh-aw/repo-memory/default/'\n          GH_AW_MEMORY_TARGET_REPO: ' of the current repository'\n          GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED: ${{ needs.pre_activation.outputs.activated }}\n          GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_MATCHED_COMMAND: ${{ needs.pre_activation.outputs.matched_command }}\n          GH_AW_STEPS_SANITIZED_OUTPUTS_TEXT: ${{ steps.sanitized.outputs.text }}\n          GH_AW_WIKI_NOTE: ''\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            \n            const substitutePlaceholders = require('${{ runner.temp }}/gh-aw/actions/substitute_placeholders.cjs');\n            \n            // Call the substitution function\n            return await substitutePlaceholders({\n              file: process.env.GH_AW_PROMPT,\n              substitutions: {\n                GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR,\n                GH_AW_GITHUB_EVENT_COMMENT_ID: process.env.GH_AW_GITHUB_EVENT_COMMENT_ID,\n                GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: process.env.GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER,\n                GH_AW_GITHUB_EVENT_ISSUE_NUMBER: process.env.GH_AW_GITHUB_EVENT_ISSUE_NUMBER,\n                GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: process.env.GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER,\n                GH_AW_GITHUB_REPOSITORY: process.env.GH_AW_GITHUB_REPOSITORY,\n                GH_AW_GITHUB_RUN_ID: process.env.GH_AW_GITHUB_RUN_ID,\n                GH_AW_GITHUB_SERVER_URL: process.env.GH_AW_GITHUB_SERVER_URL,\n                GH_AW_GITHUB_WORKSPACE: process.env.GH_AW_GITHUB_WORKSPACE,\n                GH_AW_IS_PR_COMMENT: process.env.GH_AW_IS_PR_COMMENT,\n                GH_AW_MEMORY_BRANCH_NAME: process.env.GH_AW_MEMORY_BRANCH_NAME,\n                GH_AW_MEMORY_CONSTRAINTS: process.env.GH_AW_MEMORY_CONSTRAINTS,\n                GH_AW_MEMORY_DESCRIPTION: process.env.GH_AW_MEMORY_DESCRIPTION,\n                GH_AW_MEMORY_DIR: process.env.GH_AW_MEMORY_DIR,\n                GH_AW_MEMORY_TARGET_REPO: process.env.GH_AW_MEMORY_TARGET_REPO,\n                GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED: process.env.GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED,\n                GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_MATCHED_COMMAND: process.env.GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_MATCHED_COMMAND,\n                GH_AW_STEPS_SANITIZED_OUTPUTS_TEXT: process.env.GH_AW_STEPS_SANITIZED_OUTPUTS_TEXT,\n                GH_AW_WIKI_NOTE: process.env.GH_AW_WIKI_NOTE\n              }\n            });\n      - name: Validate prompt placeholders\n        env:\n          GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt\n        # poutine:ignore untrusted_checkout_exec\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/validate_prompt_placeholders.sh\"\n      - name: Print prompt\n        env:\n          GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt\n        # poutine:ignore untrusted_checkout_exec\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/print_prompt_summary.sh\"\n      - name: Upload activation artifact\n        if: success()\n        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1\n        with:\n          name: activation\n          path: |\n            /tmp/gh-aw/aw_info.json\n            /tmp/gh-aw/aw-prompts/prompt.txt\n            /tmp/gh-aw/github_rate_limits.jsonl\n          if-no-files-found: ignore\n          retention-days: 1\n\n  agent:\n    needs: activation\n    runs-on: ubuntu-latest\n    permissions: read-all\n    env:\n      DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}\n      GH_AW_ASSETS_ALLOWED_EXTS: \"\"\n      GH_AW_ASSETS_BRANCH: \"\"\n      GH_AW_ASSETS_MAX_SIZE_KB: 0\n      GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs\n      GH_AW_WORKFLOW_ID_SANITIZED: repoassist\n    outputs:\n      agentic_engine_timeout: ${{ steps.detect-copilot-errors.outputs.agentic_engine_timeout || 'false' }}\n      checkout_pr_success: ${{ steps.checkout-pr.outputs.checkout_pr_success || 'true' }}\n      effective_tokens: ${{ steps.parse-mcp-gateway.outputs.effective_tokens }}\n      has_patch: ${{ steps.collect_output.outputs.has_patch }}\n      inference_access_error: ${{ steps.detect-copilot-errors.outputs.inference_access_error || 'false' }}\n      mcp_policy_error: ${{ steps.detect-copilot-errors.outputs.mcp_policy_error || 'false' }}\n      model: ${{ needs.activation.outputs.model }}\n      model_not_supported_error: ${{ steps.detect-copilot-errors.outputs.model_not_supported_error || 'false' }}\n      output: ${{ steps.collect_output.outputs.output }}\n      output_types: ${{ steps.collect_output.outputs.output_types }}\n      setup-trace-id: ${{ steps.setup.outputs.trace-id }}\n    steps:\n      - name: Setup Scripts\n        id: setup\n        uses: github/gh-aw-actions/setup@ba90f2186d7ad780ec640f364005fa24e797b360 # v0.68.3\n        with:\n          destination: ${{ runner.temp }}/gh-aw/actions\n          job-name: ${{ github.job }}\n          trace-id: ${{ needs.activation.outputs.setup-trace-id }}\n      - name: Set runtime paths\n        id: set-runtime-paths\n        run: |\n          {\n            echo \"GH_AW_SAFE_OUTPUTS=${RUNNER_TEMP}/gh-aw/safeoutputs/outputs.jsonl\"\n            echo \"GH_AW_SAFE_OUTPUTS_CONFIG_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/config.json\"\n            echo \"GH_AW_SAFE_OUTPUTS_TOOLS_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/tools.json\"\n          } >> \"$GITHUB_OUTPUT\"\n      - name: Checkout repository\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          persist-credentials: false\n          fetch-depth: 0\n      - name: Fetch additional refs\n        env:\n          GH_AW_FETCH_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n        run: |\n          header=$(printf \"x-access-token:%s\" \"${GH_AW_FETCH_TOKEN}\" | base64 -w 0)\n          git -c \"http.extraheader=Authorization: Basic ${header}\" fetch origin '+refs/heads/*:refs/remotes/origin/*'\n      - name: Create gh-aw temp directory\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/create_gh_aw_tmp_dir.sh\"\n      - name: Configure gh CLI for GitHub Enterprise\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/configure_gh_for_ghe.sh\"\n        env:\n          GH_TOKEN: ${{ github.token }}\n      - name: Start DIFC proxy for pre-agent gh calls\n        env:\n          GH_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n          GITHUB_SERVER_URL: ${{ github.server_url }}\n          DIFC_PROXY_POLICY: '{\"allow-only\":{\"min-integrity\":\"none\",\"repos\":\"all\"}}'\n          DIFC_PROXY_IMAGE: 'ghcr.io/github/gh-aw-mcpg:v0.2.19'\n        run: |\n          bash \"${RUNNER_TEMP}/gh-aw/actions/start_difc_proxy.sh\"\n      - name: Set GH_REPO for proxied steps\n        run: |\n          echo \"GH_REPO=${GITHUB_REPOSITORY}\" >> \"$GITHUB_ENV\"\n      - env:\n          GH_TOKEN: ${{ github.token }}\n        name: Fetch repo data for task weighting\n        run: \"mkdir -p /tmp/gh-aw\\n\\n# Fetch open issues with labels (up to 500)\\ngh issue list --state open --limit 500 --json number,labels > /tmp/gh-aw/issues.json\\n\\n# Fetch open PRs with titles (up to 200)\\ngh pr list --state open --limit 200 --json number,title > /tmp/gh-aw/prs.json\\n\\n# Compute task weights and select two tasks for this run\\npython3 - << 'EOF'\\nimport json, random, os\\n\\nwith open('/tmp/gh-aw/issues.json') as f:\\n    issues = json.load(f)\\nwith open('/tmp/gh-aw/prs.json') as f:\\n    prs = json.load(f)\\n\\nopen_issues     = len(issues)\\nunlabelled      = sum(1 for i in issues if not i.get('labels'))\\nrepo_assist_prs = sum(1 for p in prs if p['title'].startswith('[Repo Assist]'))\\nother_prs       = sum(1 for p in prs if not p['title'].startswith('[Repo Assist]'))\\n\\ntask_names = {\\n    1:  'Issue Labelling',\\n    2:  'Issue Investigation and Comment',\\n    3:  'Issue Investigation and Fix',\\n    4:  'Engineering Investments',\\n    5:  'Coding Improvements',\\n    6:  'Maintain Repo Assist PRs',\\n    7:  'Stale PR Nudges',\\n    8:  'Performance Improvements',\\n    9:  'Testing Improvements',\\n    10: 'Take the Repository Forward',\\n}\\n\\nweights = {\\n    1:  1   + 3 * unlabelled,\\n    2:  3   + 1 * open_issues,\\n    3:  3   + 0.7 * open_issues,\\n    4:  5   + 0.2 * open_issues,\\n    5:  5   + 0.1 * open_issues,\\n    6:  float(repo_assist_prs),\\n    7:  0.1 * other_prs,\\n    8:  3   + 0.05 * open_issues,\\n    9:  3   + 0.05 * open_issues,\\n    10: 3   + 0.05 * open_issues,\\n}\\n\\n# Seed with run ID for reproducibility within a run\\nrun_id = int(os.environ.get('GITHUB_RUN_ID', '0'))\\nrng = random.Random(run_id)\\n\\ntask_ids     = list(weights.keys())\\ntask_weights = [weights[t] for t in task_ids]\\n\\n# Weighted sample without replacement (pick 2 distinct tasks)\\nchosen, seen = [], set()\\nfor t in rng.choices(task_ids, weights=task_weights, k=30):\\n    if t not in seen:\\n        seen.add(t)\\n        chosen.append(t)\\n    if len(chosen) == 2:\\n        break\\n\\nprint('=== Repo Assist Task Selection ===')\\nprint(f'Open issues       : {open_issues}')\\nprint(f'Unlabelled issues : {unlabelled}')\\nprint(f'Repo Assist PRs   : {repo_assist_prs}')\\nprint(f'Other open PRs    : {other_prs}')\\nprint()\\nprint('Task weights:')\\nfor t, w in weights.items():\\n    tag = ' <-- SELECTED' if t in chosen else ''\\n    print(f'  Task {t:2d} ({task_names[t]}): weight {w:6.1f}{tag}')\\nprint()\\nprint(f'Selected tasks for this run: Task {chosen[0]} ({task_names[chosen[0]]}) and Task {chosen[1]} ({task_names[chosen[1]]})')\\n\\nresult = {\\n    'open_issues': open_issues, 'unlabelled_issues': unlabelled,\\n    'repo_assist_prs': repo_assist_prs, 'other_prs': other_prs,\\n    'task_names': task_names,\\n    'weights': {str(k): round(v, 2) for k, v in weights.items()},\\n    'selected_tasks': chosen,\\n}\\nwith open('/tmp/gh-aw/task_selection.json', 'w') as f:\\n    json.dump(result, f, indent=2)\\nEOF\\n\"\n\n      # Repo memory git-based storage configuration from frontmatter processed below\n      - name: Clone repo-memory branch (default)\n        env:\n          GH_TOKEN: ${{ github.token }}\n          GITHUB_SERVER_URL: ${{ github.server_url }}\n          BRANCH_NAME: memory/repo-assist\n          TARGET_REPO: ${{ github.repository }}\n          MEMORY_DIR: /tmp/gh-aw/repo-memory/default\n          CREATE_ORPHAN: true\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/clone_repo_memory_branch.sh\"\n      - name: Configure Git credentials\n        env:\n          REPO_NAME: ${{ github.repository }}\n          SERVER_URL: ${{ github.server_url }}\n          GITHUB_TOKEN: ${{ github.token }}\n        run: |\n          git config --global user.email \"github-actions[bot]@users.noreply.github.com\"\n          git config --global user.name \"github-actions[bot]\"\n          git config --global am.keepcr true\n          # Re-authenticate git with GitHub token\n          SERVER_URL_STRIPPED=\"${SERVER_URL#https://}\"\n          git remote set-url origin \"https://x-access-token:${GITHUB_TOKEN}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git\"\n          echo \"Git configured with standard GitHub Actions identity\"\n      - name: Checkout PR branch\n        id: checkout-pr\n        if: |\n          github.event.pull_request || github.event.issue.pull_request\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n        with:\n          github-token: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/checkout_pr_branch.cjs');\n            await main();\n      - name: Install GitHub Copilot CLI\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/install_copilot_cli.sh\" 1.0.21\n        env:\n          GH_HOST: github.com\n      - name: Install AWF binary\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/install_awf_binary.sh\" v0.25.20\n      - name: Parse integrity filter lists\n        id: parse-guard-vars\n        env:\n          GH_AW_BLOCKED_USERS_VAR: ${{ vars.GH_AW_GITHUB_BLOCKED_USERS || '' }}\n          GH_AW_TRUSTED_USERS_VAR: ${{ vars.GH_AW_GITHUB_TRUSTED_USERS || '' }}\n          GH_AW_APPROVAL_LABELS_VAR: ${{ vars.GH_AW_GITHUB_APPROVAL_LABELS || '' }}\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/parse_guard_list.sh\"\n      - name: Stop DIFC proxy\n        if: always()\n        continue-on-error: true\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/stop_difc_proxy.sh\"\n      - name: Download container images\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/download_docker_images.sh\" ghcr.io/github/gh-aw-firewall/agent:0.25.20@sha256:9161f2415a3306a344aca34dd671ee69f122317e0a512e66dc64c94b9c508682 ghcr.io/github/gh-aw-firewall/api-proxy:0.25.20@sha256:6971639e381e82e45134bcd333181f456df3a52cd6f818a3e3d6de068ff91519 ghcr.io/github/gh-aw-firewall/squid:0.25.20@sha256:5411d903f73ee597e6a084971c2adef3eb0bd405910df3ed7bf5e3d6bd58a236 ghcr.io/github/gh-aw-mcpg:v0.2.19@sha256:44d4d8de7e6c37aaea484eba489940c52df6a0b54078ddcbc9327592d5b3c3dd ghcr.io/github/github-mcp-server:v0.32.0@sha256:2763823c63bcca718ce53850a1d7fcf2f501ec84028394f1b63ce7e9f4f9be28 node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f\n      - name: Write Safe Outputs Config\n        run: |\n          mkdir -p \"${RUNNER_TEMP}/gh-aw/safeoutputs\"\n          mkdir -p /tmp/gh-aw/safeoutputs\n          mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs\n          cat > \"${RUNNER_TEMP}/gh-aw/safeoutputs/config.json\" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0438119ce4975251_EOF'\n          {\"add_comment\":{\"hide_older_comments\":true,\"max\":10,\"target\":\"*\"},\"add_labels\":{\"allowed\":[\"bug\",\"enhancement\",\"help wanted\",\"good first issue\",\"spam\",\"off topic\",\"documentation\",\"question\",\"duplicate\",\"wontfix\",\"needs triage\",\"needs investigation\",\"breaking change\",\"performance\",\"security\",\"refactor\"],\"max\":30,\"target\":\"*\"},\"create_issue\":{\"labels\":[\"automation\",\"repo-assist\"],\"max\":4,\"title_prefix\":\"[Repo Assist] \"},\"create_pull_request\":{\"draft\":true,\"labels\":[\"automation\",\"repo-assist\"],\"max\":4,\"max_patch_size\":1024,\"protected_files\":[\"package.json\",\"bun.lockb\",\"bunfig.toml\",\"deno.json\",\"deno.jsonc\",\"deno.lock\",\"global.json\",\"NuGet.Config\",\"Directory.Packages.props\",\"mix.exs\",\"mix.lock\",\"go.mod\",\"go.sum\",\"stack.yaml\",\"stack.yaml.lock\",\"pom.xml\",\"build.gradle\",\"build.gradle.kts\",\"settings.gradle\",\"settings.gradle.kts\",\"gradle.properties\",\"package-lock.json\",\"yarn.lock\",\"pnpm-lock.yaml\",\"npm-shrinkwrap.json\",\"requirements.txt\",\"Pipfile\",\"Pipfile.lock\",\"pyproject.toml\",\"setup.py\",\"setup.cfg\",\"Gemfile\",\"Gemfile.lock\",\"uv.lock\",\"CODEOWNERS\"],\"protected_files_policy\":\"fallback-to-issue\",\"protected_path_prefixes\":[\".github/\",\".agents/\"],\"title_prefix\":\"[Repo Assist] \"},\"create_report_incomplete_issue\":{},\"missing_data\":{},\"missing_tool\":{},\"noop\":{\"max\":1,\"report-as-issue\":\"true\"},\"push_repo_memory\":{\"memories\":[{\"dir\":\"/tmp/gh-aw/repo-memory/default\",\"id\":\"default\",\"max_file_count\":100,\"max_file_size\":10240,\"max_patch_size\":10240}]},\"push_to_pull_request_branch\":{\"if_no_changes\":\"warn\",\"max\":4,\"max_patch_size\":1024,\"protected_files\":[\"package.json\",\"bun.lockb\",\"bunfig.toml\",\"deno.json\",\"deno.jsonc\",\"deno.lock\",\"global.json\",\"NuGet.Config\",\"Directory.Packages.props\",\"mix.exs\",\"mix.lock\",\"go.mod\",\"go.sum\",\"stack.yaml\",\"stack.yaml.lock\",\"pom.xml\",\"build.gradle\",\"build.gradle.kts\",\"settings.gradle\",\"settings.gradle.kts\",\"gradle.properties\",\"package-lock.json\",\"yarn.lock\",\"pnpm-lock.yaml\",\"npm-shrinkwrap.json\",\"requirements.txt\",\"Pipfile\",\"Pipfile.lock\",\"pyproject.toml\",\"setup.py\",\"setup.cfg\",\"Gemfile\",\"Gemfile.lock\",\"uv.lock\",\"CODEOWNERS\"],\"protected_files_policy\":\"fallback-to-issue\",\"protected_path_prefixes\":[\".github/\",\".agents/\"],\"target\":\"*\",\"title_prefix\":\"[Repo Assist] \"},\"remove_labels\":{\"allowed\":[\"bug\",\"enhancement\",\"help wanted\",\"good first issue\",\"spam\",\"off topic\",\"documentation\",\"question\",\"duplicate\",\"wontfix\",\"needs triage\",\"needs investigation\",\"breaking change\",\"performance\",\"security\",\"refactor\"],\"max\":5,\"target\":\"*\"},\"report_incomplete\":{},\"update_issue\":{\"allow_body\":true,\"max\":1,\"target\":\"*\",\"title_prefix\":\"[Repo Assist] \"}}\n          GH_AW_SAFE_OUTPUTS_CONFIG_0438119ce4975251_EOF\n      - name: Write Safe Outputs Tools\n        env:\n          GH_AW_TOOLS_META_JSON: |\n            {\n              \"description_suffixes\": {\n                \"add_comment\": \" CONSTRAINTS: Maximum 10 comment(s) can be added. Target: *. Supports reply_to_id for discussion threading.\",\n                \"add_labels\": \" CONSTRAINTS: Maximum 30 label(s) can be added. Only these labels are allowed: [\\\"bug\\\" \\\"enhancement\\\" \\\"help wanted\\\" \\\"good first issue\\\" \\\"spam\\\" \\\"off topic\\\" \\\"documentation\\\" \\\"question\\\" \\\"duplicate\\\" \\\"wontfix\\\" \\\"needs triage\\\" \\\"needs investigation\\\" \\\"breaking change\\\" \\\"performance\\\" \\\"security\\\" \\\"refactor\\\"]. Target: *.\",\n                \"create_issue\": \" CONSTRAINTS: Maximum 4 issue(s) can be created. Title will be prefixed with \\\"[Repo Assist] \\\". Labels [\\\"automation\\\" \\\"repo-assist\\\"] will be automatically added.\",\n                \"create_pull_request\": \" CONSTRAINTS: Maximum 4 pull request(s) can be created. Title will be prefixed with \\\"[Repo Assist] \\\". Labels [\\\"automation\\\" \\\"repo-assist\\\"] will be automatically added. PRs will be created as drafts.\",\n                \"push_to_pull_request_branch\": \" CONSTRAINTS: Maximum 4 push(es) can be made. The target pull request title must start with \\\"[Repo Assist] \\\".\",\n                \"remove_labels\": \" CONSTRAINTS: Maximum 5 label(s) can be removed. Only these labels can be removed: [bug enhancement help wanted good first issue spam off topic documentation question duplicate wontfix needs triage needs investigation breaking change performance security refactor]. Target: *.\",\n                \"update_issue\": \" CONSTRAINTS: Maximum 1 issue(s) can be updated. Target: *. The target issue title must start with \\\"[Repo Assist] \\\".\"\n              },\n              \"repo_params\": {},\n              \"dynamic_tools\": []\n            }\n          GH_AW_VALIDATION_JSON: |\n            {\n              \"add_comment\": {\n                \"defaultMax\": 1,\n                \"fields\": {\n                  \"body\": {\n                    \"required\": true,\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 65000\n                  },\n                  \"item_number\": {\n                    \"issueOrPRNumber\": true\n                  },\n                  \"reply_to_id\": {\n                    \"type\": \"string\",\n                    \"maxLength\": 256\n                  },\n                  \"repo\": {\n                    \"type\": \"string\",\n                    \"maxLength\": 256\n                  }\n                }\n              },\n              \"add_labels\": {\n                \"defaultMax\": 5,\n                \"fields\": {\n                  \"item_number\": {\n                    \"issueNumberOrTemporaryId\": true\n                  },\n                  \"labels\": {\n                    \"required\": true,\n                    \"type\": \"array\",\n                    \"itemType\": \"string\",\n                    \"itemSanitize\": true,\n                    \"itemMaxLength\": 128\n                  },\n                  \"repo\": {\n                    \"type\": \"string\",\n                    \"maxLength\": 256\n                  }\n                }\n              },\n              \"create_issue\": {\n                \"defaultMax\": 1,\n                \"fields\": {\n                  \"body\": {\n                    \"required\": true,\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 65000\n                  },\n                  \"labels\": {\n                    \"type\": \"array\",\n                    \"itemType\": \"string\",\n                    \"itemSanitize\": true,\n                    \"itemMaxLength\": 128\n                  },\n                  \"parent\": {\n                    \"issueOrPRNumber\": true\n                  },\n                  \"repo\": {\n                    \"type\": \"string\",\n                    \"maxLength\": 256\n                  },\n                  \"temporary_id\": {\n                    \"type\": \"string\"\n                  },\n                  \"title\": {\n                    \"required\": true,\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 128\n                  }\n                }\n              },\n              \"create_pull_request\": {\n                \"defaultMax\": 1,\n                \"fields\": {\n                  \"body\": {\n                    \"required\": true,\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 65000\n                  },\n                  \"branch\": {\n                    \"required\": true,\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 256\n                  },\n                  \"draft\": {\n                    \"type\": \"boolean\"\n                  },\n                  \"labels\": {\n                    \"type\": \"array\",\n                    \"itemType\": \"string\",\n                    \"itemSanitize\": true,\n                    \"itemMaxLength\": 128\n                  },\n                  \"repo\": {\n                    \"type\": \"string\",\n                    \"maxLength\": 256\n                  },\n                  \"title\": {\n                    \"required\": true,\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 128\n                  }\n                }\n              },\n              \"missing_data\": {\n                \"defaultMax\": 20,\n                \"fields\": {\n                  \"alternatives\": {\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 256\n                  },\n                  \"context\": {\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 256\n                  },\n                  \"data_type\": {\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 128\n                  },\n                  \"reason\": {\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 256\n                  }\n                }\n              },\n              \"missing_tool\": {\n                \"defaultMax\": 20,\n                \"fields\": {\n                  \"alternatives\": {\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 512\n                  },\n                  \"reason\": {\n                    \"required\": true,\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 256\n                  },\n                  \"tool\": {\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 128\n                  }\n                }\n              },\n              \"noop\": {\n                \"defaultMax\": 1,\n                \"fields\": {\n                  \"message\": {\n                    \"required\": true,\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 65000\n                  }\n                }\n              },\n              \"push_to_pull_request_branch\": {\n                \"defaultMax\": 1,\n                \"fields\": {\n                  \"branch\": {\n                    \"required\": true,\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 256\n                  },\n                  \"message\": {\n                    \"required\": true,\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 65000\n                  },\n                  \"pull_request_number\": {\n                    \"issueOrPRNumber\": true\n                  }\n                }\n              },\n              \"remove_labels\": {\n                \"defaultMax\": 5,\n                \"fields\": {\n                  \"item_number\": {\n                    \"issueNumberOrTemporaryId\": true\n                  },\n                  \"labels\": {\n                    \"required\": true,\n                    \"type\": \"array\",\n                    \"itemType\": \"string\",\n                    \"itemSanitize\": true,\n                    \"itemMaxLength\": 128\n                  },\n                  \"repo\": {\n                    \"type\": \"string\",\n                    \"maxLength\": 256\n                  }\n                }\n              },\n              \"report_incomplete\": {\n                \"defaultMax\": 5,\n                \"fields\": {\n                  \"details\": {\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 65000\n                  },\n                  \"reason\": {\n                    \"required\": true,\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 1024\n                  }\n                }\n              },\n              \"update_issue\": {\n                \"defaultMax\": 1,\n                \"fields\": {\n                  \"assignees\": {\n                    \"type\": \"array\",\n                    \"itemType\": \"string\",\n                    \"itemSanitize\": true,\n                    \"itemMaxLength\": 39\n                  },\n                  \"body\": {\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 65000\n                  },\n                  \"issue_number\": {\n                    \"issueOrPRNumber\": true\n                  },\n                  \"labels\": {\n                    \"type\": \"array\",\n                    \"itemType\": \"string\",\n                    \"itemSanitize\": true,\n                    \"itemMaxLength\": 128\n                  },\n                  \"milestone\": {\n                    \"optionalPositiveInteger\": true\n                  },\n                  \"operation\": {\n                    \"type\": \"string\",\n                    \"enum\": [\n                      \"replace\",\n                      \"append\",\n                      \"prepend\",\n                      \"replace-island\"\n                    ]\n                  },\n                  \"repo\": {\n                    \"type\": \"string\",\n                    \"maxLength\": 256\n                  },\n                  \"status\": {\n                    \"type\": \"string\",\n                    \"enum\": [\n                      \"open\",\n                      \"closed\"\n                    ]\n                  },\n                  \"title\": {\n                    \"type\": \"string\",\n                    \"sanitize\": true,\n                    \"maxLength\": 128\n                  }\n                },\n                \"customValidation\": \"requiresOneOf:status,title,body\"\n              }\n            }\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/generate_safe_outputs_tools.cjs');\n            await main();\n      - name: Generate Safe Outputs MCP Server Config\n        id: safe-outputs-config\n        run: |\n          # Generate a secure random API key (360 bits of entropy, 40+ chars)\n          # Mask immediately to prevent timing vulnerabilities\n          API_KEY=$(openssl rand -base64 45 | tr -d '/+=')\n          echo \"::add-mask::${API_KEY}\"\n          \n          PORT=3001\n          \n          # Set outputs for next steps\n          {\n            echo \"safe_outputs_api_key=${API_KEY}\"\n            echo \"safe_outputs_port=${PORT}\"\n          } >> \"$GITHUB_OUTPUT\"\n          \n          echo \"Safe Outputs MCP server will run on port ${PORT}\"\n          \n      - name: Start Safe Outputs MCP HTTP Server\n        id: safe-outputs-start\n        env:\n          DEBUG: '*'\n          GH_AW_SAFE_OUTPUTS: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS }}\n          GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-config.outputs.safe_outputs_port }}\n          GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-config.outputs.safe_outputs_api_key }}\n          GH_AW_SAFE_OUTPUTS_TOOLS_PATH: ${{ runner.temp }}/gh-aw/safeoutputs/tools.json\n          GH_AW_SAFE_OUTPUTS_CONFIG_PATH: ${{ runner.temp }}/gh-aw/safeoutputs/config.json\n          GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs\n        run: |\n          # Environment variables are set above to prevent template injection\n          export DEBUG\n          export GH_AW_SAFE_OUTPUTS\n          export GH_AW_SAFE_OUTPUTS_PORT\n          export GH_AW_SAFE_OUTPUTS_API_KEY\n          export GH_AW_SAFE_OUTPUTS_TOOLS_PATH\n          export GH_AW_SAFE_OUTPUTS_CONFIG_PATH\n          export GH_AW_MCP_LOG_DIR\n          \n          bash \"${RUNNER_TEMP}/gh-aw/actions/start_safe_outputs_server.sh\"\n          \n      - name: Start MCP Gateway\n        id: start-mcp-gateway\n        env:\n          GH_AW_SAFE_OUTPUTS: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS }}\n          GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-start.outputs.api_key }}\n          GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-start.outputs.port }}\n          GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n        run: |\n          set -eo pipefail\n          mkdir -p /tmp/gh-aw/mcp-config\n          \n          # Export gateway environment variables for MCP config and gateway script\n          export MCP_GATEWAY_PORT=\"80\"\n          export MCP_GATEWAY_DOMAIN=\"host.docker.internal\"\n          MCP_GATEWAY_API_KEY=$(openssl rand -base64 45 | tr -d '/+=')\n          echo \"::add-mask::${MCP_GATEWAY_API_KEY}\"\n          export MCP_GATEWAY_API_KEY\n          export MCP_GATEWAY_PAYLOAD_DIR=\"/tmp/gh-aw/mcp-payloads\"\n          mkdir -p \"${MCP_GATEWAY_PAYLOAD_DIR}\"\n          export MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD=\"524288\"\n          export DEBUG=\"*\"\n          \n          export GH_AW_ENGINE=\"copilot\"\n          export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host -v /var/run/docker.sock:/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GH_AW_SAFE_OUTPUTS_PORT -e GH_AW_SAFE_OUTPUTS_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '\"${GITHUB_WORKSPACE}\"':'\"${GITHUB_WORKSPACE}\"':rw ghcr.io/github/gh-aw-mcpg:v0.2.19'\n          \n          mkdir -p /home/runner/.copilot\n          cat << GH_AW_MCP_CONFIG_567b4b2b7203b398_EOF | bash \"${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.sh\"\n          {\n            \"mcpServers\": {\n              \"github\": {\n                \"type\": \"stdio\",\n                \"container\": \"ghcr.io/github/github-mcp-server:v0.32.0\",\n                \"env\": {\n                  \"GITHUB_HOST\": \"\\${GITHUB_SERVER_URL}\",\n                  \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"\\${GITHUB_MCP_SERVER_TOKEN}\",\n                  \"GITHUB_READ_ONLY\": \"1\",\n                  \"GITHUB_TOOLSETS\": \"all\"\n                },\n                \"guard-policies\": {\n                  \"allow-only\": {\n                    \"approval-labels\": ${{ steps.parse-guard-vars.outputs.approval_labels }},\n                    \"blocked-users\": ${{ steps.parse-guard-vars.outputs.blocked_users }},\n                    \"min-integrity\": \"none\",\n                    \"repos\": \"all\",\n                    \"trusted-users\": ${{ steps.parse-guard-vars.outputs.trusted_users }}\n                  }\n                }\n              },\n              \"safeoutputs\": {\n                \"type\": \"http\",\n                \"url\": \"http://host.docker.internal:$GH_AW_SAFE_OUTPUTS_PORT\",\n                \"headers\": {\n                  \"Authorization\": \"\\${GH_AW_SAFE_OUTPUTS_API_KEY}\"\n                },\n                \"guard-policies\": {\n                  \"write-sink\": {\n                    \"accept\": [\n                      \"*\"\n                    ]\n                  }\n                }\n              }\n            },\n            \"gateway\": {\n              \"port\": $MCP_GATEWAY_PORT,\n              \"domain\": \"${MCP_GATEWAY_DOMAIN}\",\n              \"apiKey\": \"${MCP_GATEWAY_API_KEY}\",\n              \"payloadDir\": \"${MCP_GATEWAY_PAYLOAD_DIR}\"\n            }\n          }\n          GH_AW_MCP_CONFIG_567b4b2b7203b398_EOF\n      - name: Download activation artifact\n        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1\n        with:\n          name: activation\n          path: /tmp/gh-aw\n      - name: Clean git credentials\n        continue-on-error: true\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/clean_git_credentials.sh\"\n      - name: Execute GitHub Copilot CLI\n        id: agentic_execution\n        # Copilot CLI tool arguments (sorted):\n        timeout-minutes: 60\n        run: |\n          set -o pipefail\n          touch /tmp/gh-aw/agent-step-summary.md\n          (umask 177 && touch /tmp/gh-aw/agent-stdio.log)\n          # shellcheck disable=SC1003\n          sudo -E awf --container-workdir \"${GITHUB_WORKSPACE}\" --mount \"${RUNNER_TEMP}/gh-aw:${RUNNER_TEMP}/gh-aw:ro\" --mount \"${RUNNER_TEMP}/gh-aw:/host${RUNNER_TEMP}/gh-aw:ro\" --env-all --exclude-env COPILOT_GITHUB_TOKEN --exclude-env GITHUB_MCP_SERVER_TOKEN --exclude-env MCP_GATEWAY_API_KEY --allow-domains '*.gradle-enterprise.cloud,*.pythonhosted.org,*.vsblob.vsassets.io,adoptium.net,anaconda.org,api.adoptium.net,api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.foojay.io,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.npms.io,api.nuget.org,api.snapcraft.io,archive.apache.org,archive.ubuntu.com,azure.archive.ubuntu.com,azuresearch-usnc.nuget.org,azuresearch-ussc.nuget.org,binstar.org,bootstrap.pypa.io,builds.dotnet.microsoft.com,bun.sh,cdn.azul.com,cdn.jsdelivr.net,central.sonatype.com,ci.dot.net,conda.anaconda.org,conda.binstar.org,crates.io,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,dc.services.visualstudio.com,deb.nodesource.com,deno.land,develocity.apache.org,dist.nuget.org,dl.google.com,dlcdn.apache.org,dot.net,dotnet.microsoft.com,dotnetcli.blob.core.windows.net,download.eclipse.org,download.java.net,download.oracle.com,downloads.gradle-dn.com,esm.sh,files.pythonhosted.org,ge.spockframework.org,get.pnpm.io,github.com,googleapis.deno.dev,googlechromelabs.github.io,gradle.org,host.docker.internal,index.crates.io,jcenter.bintray.com,jdk.java.net,json-schema.org,json.schemastore.org,jsr.io,keyserver.ubuntu.com,maven-central.storage-download.googleapis.com,maven.apache.org,maven.google.com,maven.oracle.com,maven.pkg.github.com,nodejs.org,npm.pkg.github.com,npmjs.com,npmjs.org,nuget.org,nuget.pkg.github.com,nugetregistryv2prod.blob.core.windows.net,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,oneocsp.microsoft.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,pip.pypa.io,pkgs.dev.azure.com,plugins-artifacts.gradle.org,plugins.gradle.org,ppa.launchpad.net,pypi.org,pypi.python.org,raw.githubusercontent.com,registry.bower.io,registry.npmjs.com,registry.npmjs.org,registry.yarnpkg.com,repo.anaconda.com,repo.continuum.io,repo.gradle.org,repo.grails.org,repo.maven.apache.org,repo.spring.io,repo.yarnpkg.com,repo1.maven.org,repository.apache.org,s.symcb.com,s.symcd.com,scans-in.gradle.com,security.ubuntu.com,services.gradle.org,sh.rustup.rs,skimdb.npmjs.com,static.crates.io,static.rust-lang.org,storage.googleapis.com,telemetry.enterprise.githubcopilot.com,telemetry.vercel.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com,www.googleapis.com,www.java.com,www.microsoft.com,www.npmjs.com,www.npmjs.org,yarnpkg.com' --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --audit-dir /tmp/gh-aw/sandbox/firewall/audit --enable-host-access --image-tag 0.25.20 --skip-pull --enable-api-proxy \\\n            -- /bin/bash -c 'node ${RUNNER_TEMP}/gh-aw/actions/copilot_driver.cjs /usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --disable-builtin-mcps --no-ask-user --allow-all-tools --allow-all-paths --add-dir \"${GITHUB_WORKSPACE}\" --prompt \"$(cat /tmp/gh-aw/aw-prompts/prompt.txt)\"' 2>&1 | tee -a /tmp/gh-aw/agent-stdio.log\n        env:\n          COPILOT_AGENT_RUNNER_TYPE: STANDALONE\n          COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}\n          COPILOT_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || '' }}\n          GH_AW_MCP_CONFIG: /home/runner/.copilot/mcp-config.json\n          GH_AW_PHASE: agent\n          GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt\n          GH_AW_SAFE_OUTPUTS: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS }}\n          GH_AW_VERSION: v0.68.3\n          GITHUB_API_URL: ${{ github.api_url }}\n          GITHUB_AW: true\n          GITHUB_HEAD_REF: ${{ github.head_ref }}\n          GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n          GITHUB_REF_NAME: ${{ github.ref_name }}\n          GITHUB_SERVER_URL: ${{ github.server_url }}\n          GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md\n          GITHUB_WORKSPACE: ${{ github.workspace }}\n          GIT_AUTHOR_EMAIL: github-actions[bot]@users.noreply.github.com\n          GIT_AUTHOR_NAME: github-actions[bot]\n          GIT_COMMITTER_EMAIL: github-actions[bot]@users.noreply.github.com\n          GIT_COMMITTER_NAME: github-actions[bot]\n          XDG_CONFIG_HOME: /home/runner\n      - name: Detect Copilot errors\n        id: detect-copilot-errors\n        if: always()\n        continue-on-error: true\n        run: node \"${RUNNER_TEMP}/gh-aw/actions/detect_copilot_errors.cjs\"\n      - name: Configure Git credentials\n        env:\n          REPO_NAME: ${{ github.repository }}\n          SERVER_URL: ${{ github.server_url }}\n          GITHUB_TOKEN: ${{ github.token }}\n        run: |\n          git config --global user.email \"github-actions[bot]@users.noreply.github.com\"\n          git config --global user.name \"github-actions[bot]\"\n          git config --global am.keepcr true\n          # Re-authenticate git with GitHub token\n          SERVER_URL_STRIPPED=\"${SERVER_URL#https://}\"\n          git remote set-url origin \"https://x-access-token:${GITHUB_TOKEN}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git\"\n          echo \"Git configured with standard GitHub Actions identity\"\n      - name: Copy Copilot session state files to logs\n        if: always()\n        continue-on-error: true\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/copy_copilot_session_state.sh\"\n      - name: Stop MCP Gateway\n        if: always()\n        continue-on-error: true\n        env:\n          MCP_GATEWAY_PORT: ${{ steps.start-mcp-gateway.outputs.gateway-port }}\n          MCP_GATEWAY_API_KEY: ${{ steps.start-mcp-gateway.outputs.gateway-api-key }}\n          GATEWAY_PID: ${{ steps.start-mcp-gateway.outputs.gateway-pid }}\n        run: |\n          bash \"${RUNNER_TEMP}/gh-aw/actions/stop_mcp_gateway.sh\" \"$GATEWAY_PID\"\n      - name: Redact secrets in logs\n        if: always()\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/redact_secrets.cjs');\n            await main();\n        env:\n          GH_AW_SECRET_NAMES: 'COPILOT_GITHUB_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN'\n          SECRET_COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}\n          SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }}\n          SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }}\n          SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n      - name: Append agent step summary\n        if: always()\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/append_agent_step_summary.sh\"\n      - name: Copy Safe Outputs\n        if: always()\n        env:\n          GH_AW_SAFE_OUTPUTS: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS }}\n        run: |\n          mkdir -p /tmp/gh-aw\n          cp \"$GH_AW_SAFE_OUTPUTS\" /tmp/gh-aw/safeoutputs.jsonl 2>/dev/null || true\n      - name: Ingest agent output\n        id: collect_output\n        if: always()\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_SAFE_OUTPUTS: ${{ steps.set-runtime-paths.outputs.GH_AW_SAFE_OUTPUTS }}\n          GH_AW_ALLOWED_DOMAINS: \"*.gradle-enterprise.cloud,*.pythonhosted.org,*.vsblob.vsassets.io,adoptium.net,anaconda.org,api.adoptium.net,api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.foojay.io,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.npms.io,api.nuget.org,api.snapcraft.io,archive.apache.org,archive.ubuntu.com,azure.archive.ubuntu.com,azuresearch-usnc.nuget.org,azuresearch-ussc.nuget.org,binstar.org,bootstrap.pypa.io,builds.dotnet.microsoft.com,bun.sh,cdn.azul.com,cdn.jsdelivr.net,central.sonatype.com,ci.dot.net,conda.anaconda.org,conda.binstar.org,crates.io,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,dc.services.visualstudio.com,deb.nodesource.com,deno.land,develocity.apache.org,dist.nuget.org,dl.google.com,dlcdn.apache.org,dot.net,dotnet.microsoft.com,dotnetcli.blob.core.windows.net,download.eclipse.org,download.java.net,download.oracle.com,downloads.gradle-dn.com,esm.sh,files.pythonhosted.org,ge.spockframework.org,get.pnpm.io,github.com,googleapis.deno.dev,googlechromelabs.github.io,gradle.org,host.docker.internal,index.crates.io,jcenter.bintray.com,jdk.java.net,json-schema.org,json.schemastore.org,jsr.io,keyserver.ubuntu.com,maven-central.storage-download.googleapis.com,maven.apache.org,maven.google.com,maven.oracle.com,maven.pkg.github.com,nodejs.org,npm.pkg.github.com,npmjs.com,npmjs.org,nuget.org,nuget.pkg.github.com,nugetregistryv2prod.blob.core.windows.net,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,oneocsp.microsoft.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,pip.pypa.io,pkgs.dev.azure.com,plugins-artifacts.gradle.org,plugins.gradle.org,ppa.launchpad.net,pypi.org,pypi.python.org,raw.githubusercontent.com,registry.bower.io,registry.npmjs.com,registry.npmjs.org,registry.yarnpkg.com,repo.anaconda.com,repo.continuum.io,repo.gradle.org,repo.grails.org,repo.maven.apache.org,repo.spring.io,repo.yarnpkg.com,repo1.maven.org,repository.apache.org,s.symcb.com,s.symcd.com,scans-in.gradle.com,security.ubuntu.com,services.gradle.org,sh.rustup.rs,skimdb.npmjs.com,static.crates.io,static.rust-lang.org,storage.googleapis.com,telemetry.enterprise.githubcopilot.com,telemetry.vercel.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com,www.googleapis.com,www.java.com,www.microsoft.com,www.npmjs.com,www.npmjs.org,yarnpkg.com\"\n          GITHUB_SERVER_URL: ${{ github.server_url }}\n          GITHUB_API_URL: ${{ github.api_url }}\n          GH_AW_COMMAND: repo-assist\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/collect_ndjson_output.cjs');\n            await main();\n      - name: Parse agent logs for step summary\n        if: always()\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_AGENT_OUTPUT: /tmp/gh-aw/sandbox/agent/logs/\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/parse_copilot_log.cjs');\n            await main();\n      - name: Parse MCP Gateway logs for step summary\n        if: always()\n        id: parse-mcp-gateway\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/parse_mcp_gateway_log.cjs');\n            await main();\n      - name: Print firewall logs\n        if: always()\n        continue-on-error: true\n        env:\n          AWF_LOGS_DIR: /tmp/gh-aw/sandbox/firewall/logs\n        run: |\n          # Fix permissions on firewall logs so they can be uploaded as artifacts\n          # AWF runs with sudo, creating files owned by root\n          sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true\n          # Only run awf logs summary if awf command exists (it may not be installed if workflow failed before install step)\n          if command -v awf &> /dev/null; then\n            awf logs summary | tee -a \"$GITHUB_STEP_SUMMARY\"\n          else\n            echo 'AWF binary not installed, skipping firewall log summary'\n          fi\n      - name: Parse token usage for step summary\n        if: always()\n        continue-on-error: true\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/parse_token_usage.cjs');\n            await main();\n      - name: Write agent output placeholder if missing\n        if: always()\n        run: |\n          if [ ! -f /tmp/gh-aw/agent_output.json ]; then\n            echo '{\"items\":[]}' > /tmp/gh-aw/agent_output.json\n          fi\n      # Upload repo memory as artifacts for push job\n      - name: Upload repo-memory artifact (default)\n        if: always()\n        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1\n        with:\n          name: repo-memory-default\n          path: /tmp/gh-aw/repo-memory/default\n          retention-days: 1\n          if-no-files-found: ignore\n      - name: Upload agent artifacts\n        if: always()\n        continue-on-error: true\n        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1\n        with:\n          name: agent\n          path: |\n            /tmp/gh-aw/aw-prompts/prompt.txt\n            /tmp/gh-aw/sandbox/agent/logs/\n            /tmp/gh-aw/redacted-urls.log\n            /tmp/gh-aw/mcp-logs/\n            /tmp/gh-aw/proxy-logs/\n            !/tmp/gh-aw/proxy-logs/proxy-tls/\n            /tmp/gh-aw/agent_usage.json\n            /tmp/gh-aw/agent-stdio.log\n            /tmp/gh-aw/agent/\n            /tmp/gh-aw/github_rate_limits.jsonl\n            /tmp/gh-aw/safeoutputs.jsonl\n            /tmp/gh-aw/agent_output.json\n            /tmp/gh-aw/aw-*.patch\n            /tmp/gh-aw/aw-*.bundle\n            /tmp/gh-aw/sandbox/firewall/logs/\n            /tmp/gh-aw/sandbox/firewall/audit/\n          if-no-files-found: ignore\n\n  conclusion:\n    needs:\n      - activation\n      - agent\n      - detection\n      - push_repo_memory\n      - safe_outputs\n    if: >\n      always() && (needs.agent.result != 'skipped' || needs.activation.outputs.lockdown_check_failed == 'true' ||\n      needs.activation.outputs.stale_lock_file_failed == 'true')\n    runs-on: ubuntu-slim\n    permissions:\n      contents: write\n      discussions: write\n      issues: write\n      pull-requests: write\n    concurrency:\n      group: \"gh-aw-conclusion-repo-assist\"\n      cancel-in-progress: false\n    outputs:\n      incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }}\n      noop_message: ${{ steps.noop.outputs.noop_message }}\n      tools_reported: ${{ steps.missing_tool.outputs.tools_reported }}\n      total_count: ${{ steps.missing_tool.outputs.total_count }}\n    steps:\n      - name: Setup Scripts\n        id: setup\n        uses: github/gh-aw-actions/setup@ba90f2186d7ad780ec640f364005fa24e797b360 # v0.68.3\n        with:\n          destination: ${{ runner.temp }}/gh-aw/actions\n          job-name: ${{ github.job }}\n          trace-id: ${{ needs.activation.outputs.setup-trace-id }}\n      - name: Download agent output artifact\n        id: download-agent-output\n        continue-on-error: true\n        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1\n        with:\n          name: agent\n          path: /tmp/gh-aw/\n      - name: Setup agent output environment variable\n        id: setup-agent-output-env\n        if: steps.download-agent-output.outcome == 'success'\n        run: |\n          mkdir -p /tmp/gh-aw/\n          find \"/tmp/gh-aw/\" -type f -print\n          echo \"GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json\" >> \"$GITHUB_OUTPUT\"\n      - name: Process no-op messages\n        id: noop\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }}\n          GH_AW_NOOP_MAX: \"1\"\n          GH_AW_WORKFLOW_NAME: \"Repo Assist\"\n          GH_AW_WORKFLOW_SOURCE: \"githubnext/agentics/workflows/repo-assist.md@3de4e604a36b5190a1c7dc4719c7341500ba8a95\"\n          GH_AW_WORKFLOW_SOURCE_URL: \"${{ github.server_url }}/githubnext/agentics/blob/3de4e604a36b5190a1c7dc4719c7341500ba8a95/workflows/repo-assist.md\"\n          GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n          GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}\n          GH_AW_NOOP_REPORT_AS_ISSUE: \"true\"\n        with:\n          github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/handle_noop_message.cjs');\n            await main();\n      - name: Log detection run\n        id: detection_runs\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }}\n          GH_AW_WORKFLOW_NAME: \"Repo Assist\"\n          GH_AW_WORKFLOW_SOURCE: \"githubnext/agentics/workflows/repo-assist.md@3de4e604a36b5190a1c7dc4719c7341500ba8a95\"\n          GH_AW_WORKFLOW_SOURCE_URL: \"${{ github.server_url }}/githubnext/agentics/blob/3de4e604a36b5190a1c7dc4719c7341500ba8a95/workflows/repo-assist.md\"\n          GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n          GH_AW_DETECTION_CONCLUSION: ${{ needs.detection.outputs.detection_conclusion }}\n          GH_AW_DETECTION_REASON: ${{ needs.detection.outputs.detection_reason }}\n        with:\n          github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/handle_detection_runs.cjs');\n            await main();\n      - name: Record missing tool\n        id: missing_tool\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }}\n          GH_AW_MISSING_TOOL_CREATE_ISSUE: \"true\"\n          GH_AW_WORKFLOW_NAME: \"Repo Assist\"\n          GH_AW_WORKFLOW_SOURCE: \"githubnext/agentics/workflows/repo-assist.md@3de4e604a36b5190a1c7dc4719c7341500ba8a95\"\n          GH_AW_WORKFLOW_SOURCE_URL: \"${{ github.server_url }}/githubnext/agentics/blob/3de4e604a36b5190a1c7dc4719c7341500ba8a95/workflows/repo-assist.md\"\n        with:\n          github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/missing_tool.cjs');\n            await main();\n      - name: Record incomplete\n        id: report_incomplete\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }}\n          GH_AW_REPORT_INCOMPLETE_CREATE_ISSUE: \"true\"\n          GH_AW_WORKFLOW_NAME: \"Repo Assist\"\n          GH_AW_WORKFLOW_SOURCE: \"githubnext/agentics/workflows/repo-assist.md@3de4e604a36b5190a1c7dc4719c7341500ba8a95\"\n          GH_AW_WORKFLOW_SOURCE_URL: \"${{ github.server_url }}/githubnext/agentics/blob/3de4e604a36b5190a1c7dc4719c7341500ba8a95/workflows/repo-assist.md\"\n        with:\n          github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/report_incomplete_handler.cjs');\n            await main();\n      - name: Handle agent failure\n        id: handle_agent_failure\n        if: always()\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }}\n          GH_AW_WORKFLOW_NAME: \"Repo Assist\"\n          GH_AW_WORKFLOW_SOURCE: \"githubnext/agentics/workflows/repo-assist.md@3de4e604a36b5190a1c7dc4719c7341500ba8a95\"\n          GH_AW_WORKFLOW_SOURCE_URL: \"${{ github.server_url }}/githubnext/agentics/blob/3de4e604a36b5190a1c7dc4719c7341500ba8a95/workflows/repo-assist.md\"\n          GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n          GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}\n          GH_AW_WORKFLOW_ID: \"repo-assist\"\n          GH_AW_ENGINE_ID: \"copilot\"\n          GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}\n          GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}\n          GH_AW_INFERENCE_ACCESS_ERROR: ${{ needs.agent.outputs.inference_access_error }}\n          GH_AW_MCP_POLICY_ERROR: ${{ needs.agent.outputs.mcp_policy_error }}\n          GH_AW_AGENTIC_ENGINE_TIMEOUT: ${{ needs.agent.outputs.agentic_engine_timeout }}\n          GH_AW_MODEL_NOT_SUPPORTED_ERROR: ${{ needs.agent.outputs.model_not_supported_error }}\n          GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}\n          GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}\n          GH_AW_LOCKDOWN_CHECK_FAILED: ${{ needs.activation.outputs.lockdown_check_failed }}\n          GH_AW_STALE_LOCK_FILE_FAILED: ${{ needs.activation.outputs.stale_lock_file_failed }}\n          GH_AW_SAFE_OUTPUT_MESSAGES: \"{\\\"footer\\\":\\\"\\\\u003e Generated by 🌈 {workflow_name}, see [workflow run]({run_url}). [Learn more](https://github.com/githubnext/agentics/blob/main/docs/repo-assist.md).\\\",\\\"runStarted\\\":\\\"{workflow_name} is processing {event_type}, see [workflow run]({run_url})...\\\",\\\"runSuccess\\\":\\\"✓ {workflow_name} completed successfully, see [workflow run]({run_url}).\\\",\\\"runFailure\\\":\\\"✗ {workflow_name} encountered {status}, see [workflow run]({run_url}).\\\"}\"\n          GH_AW_PUSH_REPO_MEMORY_RESULT: ${{ needs.push_repo_memory.result }}\n          GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }}\n          GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }}\n          GH_AW_REPO_MEMORY_PATCH_SIZE_EXCEEDED_default: ${{ needs.push_repo_memory.outputs.patch_size_exceeded_default }}\n          GH_AW_GROUP_REPORTS: \"false\"\n          GH_AW_FAILURE_REPORT_AS_ISSUE: \"true\"\n          GH_AW_TIMEOUT_MINUTES: \"60\"\n        with:\n          github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/handle_agent_failure.cjs');\n            await main();\n      - name: Update reaction comment with completion status\n        id: conclusion\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }}\n          GH_AW_COMMENT_ID: ${{ needs.activation.outputs.comment_id }}\n          GH_AW_COMMENT_REPO: ${{ needs.activation.outputs.comment_repo }}\n          GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}\n          GH_AW_WORKFLOW_NAME: \"Repo Assist\"\n          GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}\n          GH_AW_DETECTION_CONCLUSION: ${{ needs.detection.outputs.detection_conclusion }}\n          GH_AW_DETECTION_REASON: ${{ needs.detection.outputs.detection_reason }}\n          GH_AW_SAFE_OUTPUT_MESSAGES: \"{\\\"footer\\\":\\\"\\\\u003e Generated by 🌈 {workflow_name}, see [workflow run]({run_url}). [Learn more](https://github.com/githubnext/agentics/blob/main/docs/repo-assist.md).\\\",\\\"runStarted\\\":\\\"{workflow_name} is processing {event_type}, see [workflow run]({run_url})...\\\",\\\"runSuccess\\\":\\\"✓ {workflow_name} completed successfully, see [workflow run]({run_url}).\\\",\\\"runFailure\\\":\\\"✗ {workflow_name} encountered {status}, see [workflow run]({run_url}).\\\"}\"\n        with:\n          github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/notify_comment_error.cjs');\n            await main();\n\n  detection:\n    needs:\n      - activation\n      - agent\n    if: >\n      always() && needs.agent.result != 'skipped' && (needs.agent.outputs.output_types != '' || needs.agent.outputs.has_patch == 'true')\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n    outputs:\n      detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }}\n      detection_reason: ${{ steps.detection_conclusion.outputs.reason }}\n      detection_success: ${{ steps.detection_conclusion.outputs.success }}\n    steps:\n      - name: Setup Scripts\n        id: setup\n        uses: github/gh-aw-actions/setup@ba90f2186d7ad780ec640f364005fa24e797b360 # v0.68.3\n        with:\n          destination: ${{ runner.temp }}/gh-aw/actions\n          job-name: ${{ github.job }}\n          trace-id: ${{ needs.activation.outputs.setup-trace-id }}\n      - name: Download agent output artifact\n        id: download-agent-output\n        continue-on-error: true\n        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1\n        with:\n          name: agent\n          path: /tmp/gh-aw/\n      - name: Setup agent output environment variable\n        id: setup-agent-output-env\n        if: steps.download-agent-output.outcome == 'success'\n        run: |\n          mkdir -p /tmp/gh-aw/\n          find \"/tmp/gh-aw/\" -type f -print\n          echo \"GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json\" >> \"$GITHUB_OUTPUT\"\n      - name: Checkout repository for patch context\n        if: needs.agent.outputs.has_patch == 'true'\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          persist-credentials: false\n      # --- Threat Detection ---\n      - name: Clean stale firewall files from agent artifact\n        run: |\n          rm -rf /tmp/gh-aw/sandbox/firewall/logs\n          rm -rf /tmp/gh-aw/sandbox/firewall/audit\n      - name: Download container images\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/download_docker_images.sh\" ghcr.io/github/gh-aw-firewall/agent:0.25.20@sha256:9161f2415a3306a344aca34dd671ee69f122317e0a512e66dc64c94b9c508682 ghcr.io/github/gh-aw-firewall/api-proxy:0.25.20@sha256:6971639e381e82e45134bcd333181f456df3a52cd6f818a3e3d6de068ff91519 ghcr.io/github/gh-aw-firewall/squid:0.25.20@sha256:5411d903f73ee597e6a084971c2adef3eb0bd405910df3ed7bf5e3d6bd58a236\n      - name: Check if detection needed\n        id: detection_guard\n        if: always()\n        env:\n          OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }}\n          HAS_PATCH: ${{ needs.agent.outputs.has_patch }}\n        run: |\n          if [[ -n \"$OUTPUT_TYPES\" || \"$HAS_PATCH\" == \"true\" ]]; then\n            echo \"run_detection=true\" >> \"$GITHUB_OUTPUT\"\n            echo \"Detection will run: output_types=$OUTPUT_TYPES, has_patch=$HAS_PATCH\"\n          else\n            echo \"run_detection=false\" >> \"$GITHUB_OUTPUT\"\n            echo \"Detection skipped: no agent outputs or patches to analyze\"\n          fi\n      - name: Clear MCP configuration for detection\n        if: always() && steps.detection_guard.outputs.run_detection == 'true'\n        run: |\n          rm -f /tmp/gh-aw/mcp-config/mcp-servers.json\n          rm -f /home/runner/.copilot/mcp-config.json\n          rm -f \"$GITHUB_WORKSPACE/.gemini/settings.json\"\n      - name: Prepare threat detection files\n        if: always() && steps.detection_guard.outputs.run_detection == 'true'\n        run: |\n          mkdir -p /tmp/gh-aw/threat-detection/aw-prompts\n          cp /tmp/gh-aw/aw-prompts/prompt.txt /tmp/gh-aw/threat-detection/aw-prompts/prompt.txt 2>/dev/null || true\n          cp /tmp/gh-aw/agent_output.json /tmp/gh-aw/threat-detection/agent_output.json 2>/dev/null || true\n          for f in /tmp/gh-aw/aw-*.patch; do\n            [ -f \"$f\" ] && cp \"$f\" /tmp/gh-aw/threat-detection/ 2>/dev/null || true\n          done\n          for f in /tmp/gh-aw/aw-*.bundle; do\n            [ -f \"$f\" ] && cp \"$f\" /tmp/gh-aw/threat-detection/ 2>/dev/null || true\n          done\n          echo \"Prepared threat detection files:\"\n          ls -la /tmp/gh-aw/threat-detection/ 2>/dev/null || true\n      - name: Setup threat detection\n        if: always() && steps.detection_guard.outputs.run_detection == 'true'\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          WORKFLOW_NAME: \"Repo Assist\"\n          WORKFLOW_DESCRIPTION: \"A friendly repository assistant that runs 2 times a day to support contributors and maintainers.\\nCan also be triggered on-demand via '/repo-assist <instructions>' to perform specific tasks.\\n- Labels and triages open issues\\n- Comments helpfully on open issues to unblock contributors and onboard newcomers\\n- Identifies issues that can be fixed and creates draft pull requests with fixes\\n- Improves performance, testing, and code quality via PRs\\n- Makes engineering investments: dependency updates, CI improvements, tooling\\n- Updates its own PRs when CI fails or merge conflicts arise\\n- Nudges stale PRs waiting for author response\\n- Takes the repository forward with proactive improvements\\n- Maintains a persistent memory of work done and what remains\\nAlways polite, constructive, and mindful of the project's goals.\"\n          HAS_PATCH: ${{ needs.agent.outputs.has_patch }}\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/setup_threat_detection.cjs');\n            await main();\n      - name: Ensure threat-detection directory and log\n        if: always() && steps.detection_guard.outputs.run_detection == 'true'\n        run: |\n          mkdir -p /tmp/gh-aw/threat-detection\n          touch /tmp/gh-aw/threat-detection/detection.log\n      - name: Install GitHub Copilot CLI\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/install_copilot_cli.sh\" 1.0.21\n        env:\n          GH_HOST: github.com\n      - name: Install AWF binary\n        run: bash \"${RUNNER_TEMP}/gh-aw/actions/install_awf_binary.sh\" v0.25.20\n      - name: Execute GitHub Copilot CLI\n        if: always() && steps.detection_guard.outputs.run_detection == 'true'\n        id: detection_agentic_execution\n        # Copilot CLI tool arguments (sorted):\n        timeout-minutes: 20\n        run: |\n          set -o pipefail\n          touch /tmp/gh-aw/agent-step-summary.md\n          (umask 177 && touch /tmp/gh-aw/threat-detection/detection.log)\n          # shellcheck disable=SC1003\n          sudo -E awf --container-workdir \"${GITHUB_WORKSPACE}\" --mount \"${RUNNER_TEMP}/gh-aw:${RUNNER_TEMP}/gh-aw:ro\" --mount \"${RUNNER_TEMP}/gh-aw:/host${RUNNER_TEMP}/gh-aw:ro\" --env-all --exclude-env COPILOT_GITHUB_TOKEN --allow-domains api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,github.com,host.docker.internal,telemetry.enterprise.githubcopilot.com --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --audit-dir /tmp/gh-aw/sandbox/firewall/audit --enable-host-access --image-tag 0.25.20 --skip-pull --enable-api-proxy \\\n            -- /bin/bash -c 'node ${RUNNER_TEMP}/gh-aw/actions/copilot_driver.cjs /usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --disable-builtin-mcps --no-ask-user --allow-all-tools --add-dir \"${GITHUB_WORKSPACE}\" --prompt \"$(cat /tmp/gh-aw/aw-prompts/prompt.txt)\"' 2>&1 | tee -a /tmp/gh-aw/threat-detection/detection.log\n        env:\n          COPILOT_AGENT_RUNNER_TYPE: STANDALONE\n          COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}\n          COPILOT_MODEL: ${{ vars.GH_AW_MODEL_DETECTION_COPILOT || '' }}\n          GH_AW_PHASE: detection\n          GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt\n          GH_AW_VERSION: v0.68.3\n          GITHUB_API_URL: ${{ github.api_url }}\n          GITHUB_AW: true\n          GITHUB_HEAD_REF: ${{ github.head_ref }}\n          GITHUB_REF_NAME: ${{ github.ref_name }}\n          GITHUB_SERVER_URL: ${{ github.server_url }}\n          GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md\n          GITHUB_WORKSPACE: ${{ github.workspace }}\n          GIT_AUTHOR_EMAIL: github-actions[bot]@users.noreply.github.com\n          GIT_AUTHOR_NAME: github-actions[bot]\n          GIT_COMMITTER_EMAIL: github-actions[bot]@users.noreply.github.com\n          GIT_COMMITTER_NAME: github-actions[bot]\n          XDG_CONFIG_HOME: /home/runner\n      - name: Upload threat detection log\n        if: always() && steps.detection_guard.outputs.run_detection == 'true'\n        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1\n        with:\n          name: detection\n          path: /tmp/gh-aw/threat-detection/detection.log\n          if-no-files-found: ignore\n      - name: Parse and conclude threat detection\n        id: detection_conclusion\n        if: always()\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          RUN_DETECTION: ${{ steps.detection_guard.outputs.run_detection }}\n          GH_AW_DETECTION_CONTINUE_ON_ERROR: \"true\"\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/parse_threat_detection_results.cjs');\n            await main();\n\n  pre_activation:\n    if: \"(github.event_name == 'issues' || github.event_name == 'issue_comment' || github.event_name == 'pull_request' || github.event_name == 'pull_request_review_comment' || github.event_name == 'discussion' || github.event_name == 'discussion_comment') && (github.event_name == 'issues' && (startsWith(github.event.issue.body, '/repo-assist ') || startsWith(github.event.issue.body, '/repo-assist\\n') || github.event.issue.body == '/repo-assist') || github.event_name == 'issue_comment' && (startsWith(github.event.comment.body, '/repo-assist ') || startsWith(github.event.comment.body, '/repo-assist\\n') || github.event.comment.body == '/repo-assist') && github.event.issue.pull_request == null || github.event_name == 'issue_comment' && (startsWith(github.event.comment.body, '/repo-assist ') || startsWith(github.event.comment.body, '/repo-assist\\n') || github.event.comment.body == '/repo-assist') && github.event.issue.pull_request != null || github.event_name == 'pull_request_review_comment' && (startsWith(github.event.comment.body, '/repo-assist ') || startsWith(github.event.comment.body, '/repo-assist\\n') || github.event.comment.body == '/repo-assist') || github.event_name == 'pull_request' && (startsWith(github.event.pull_request.body, '/repo-assist ') || startsWith(github.event.pull_request.body, '/repo-assist\\n') || github.event.pull_request.body == '/repo-assist') || github.event_name == 'discussion' && (startsWith(github.event.discussion.body, '/repo-assist ') || startsWith(github.event.discussion.body, '/repo-assist\\n') || github.event.discussion.body == '/repo-assist') || github.event_name == 'discussion_comment' && (startsWith(github.event.comment.body, '/repo-assist ') || startsWith(github.event.comment.body, '/repo-assist\\n') || github.event.comment.body == '/repo-assist')) || (!(github.event_name == 'issues')) && (!(github.event_name == 'issue_comment')) && (!(github.event_name == 'pull_request')) && (!(github.event_name == 'pull_request_review_comment')) && (!(github.event_name == 'discussion')) && (!(github.event_name == 'discussion_comment'))\"\n    runs-on: ubuntu-slim\n    outputs:\n      activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }}\n      matched_command: ${{ steps.check_command_position.outputs.matched_command }}\n      setup-trace-id: ${{ steps.setup.outputs.trace-id }}\n    steps:\n      - name: Setup Scripts\n        id: setup\n        uses: github/gh-aw-actions/setup@ba90f2186d7ad780ec640f364005fa24e797b360 # v0.68.3\n        with:\n          destination: ${{ runner.temp }}/gh-aw/actions\n          job-name: ${{ github.job }}\n      - name: Check team membership for command workflow\n        id: check_membership\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_REQUIRED_ROLES: \"admin,maintainer,write\"\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/check_membership.cjs');\n            await main();\n      - name: Check command position\n        id: check_command_position\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_COMMANDS: \"[\\\"repo-assist\\\"]\"\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/check_command_position.cjs');\n            await main();\n\n  push_repo_memory:\n    needs:\n      - activation\n      - agent\n      - detection\n    if: >\n      always() && (!cancelled()) && (needs.detection.result == 'success' || needs.detection.result == 'skipped') &&\n      needs.agent.result != 'skipped'\n    runs-on: ubuntu-slim\n    permissions:\n      contents: write\n    concurrency:\n      group: \"push-repo-memory-${{ github.repository }}|memory/repo-assist\"\n      cancel-in-progress: false\n    outputs:\n      patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }}\n      validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }}\n      validation_failed_default: ${{ steps.push_repo_memory_default.outputs.validation_failed }}\n    steps:\n      - name: Setup Scripts\n        id: setup\n        uses: github/gh-aw-actions/setup@ba90f2186d7ad780ec640f364005fa24e797b360 # v0.68.3\n        with:\n          destination: ${{ runner.temp }}/gh-aw/actions\n          job-name: ${{ github.job }}\n          trace-id: ${{ needs.activation.outputs.setup-trace-id }}\n      - name: Checkout repository\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          persist-credentials: false\n          sparse-checkout: .\n      - name: Configure Git credentials\n        env:\n          REPO_NAME: ${{ github.repository }}\n          SERVER_URL: ${{ github.server_url }}\n          GITHUB_TOKEN: ${{ github.token }}\n        run: |\n          git config --global user.email \"github-actions[bot]@users.noreply.github.com\"\n          git config --global user.name \"github-actions[bot]\"\n          git config --global am.keepcr true\n          # Re-authenticate git with GitHub token\n          SERVER_URL_STRIPPED=\"${SERVER_URL#https://}\"\n          git remote set-url origin \"https://x-access-token:${GITHUB_TOKEN}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git\"\n          echo \"Git configured with standard GitHub Actions identity\"\n      - name: Download repo-memory artifact (default)\n        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1\n        continue-on-error: true\n        with:\n          name: repo-memory-default\n          path: /tmp/gh-aw/repo-memory/default\n      - name: Push repo-memory changes (default)\n        id: push_repo_memory_default\n        if: always()\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_TOKEN: ${{ github.token }}\n          GITHUB_RUN_ID: ${{ github.run_id }}\n          GITHUB_SERVER_URL: ${{ github.server_url }}\n          ARTIFACT_DIR: /tmp/gh-aw/repo-memory/default\n          MEMORY_ID: default\n          TARGET_REPO: ${{ github.repository }}\n          BRANCH_NAME: memory/repo-assist\n          MAX_FILE_SIZE: 10240\n          MAX_FILE_COUNT: 100\n          MAX_PATCH_SIZE: 10240\n          ALLOWED_EXTENSIONS: '[]'\n        with:\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/push_repo_memory.cjs');\n            await main();\n\n  safe_outputs:\n    needs:\n      - activation\n      - agent\n      - detection\n    if: (!cancelled()) && needs.agent.result != 'skipped' && needs.detection.result == 'success'\n    runs-on: ubuntu-slim\n    permissions:\n      contents: write\n      discussions: write\n      issues: write\n      pull-requests: write\n    timeout-minutes: 15\n    env:\n      GH_AW_CALLER_WORKFLOW_ID: \"${{ github.repository }}/repo-assist\"\n      GH_AW_DETECTION_CONCLUSION: ${{ needs.detection.outputs.detection_conclusion }}\n      GH_AW_DETECTION_REASON: ${{ needs.detection.outputs.detection_reason }}\n      GH_AW_EFFECTIVE_TOKENS: ${{ needs.agent.outputs.effective_tokens }}\n      GH_AW_ENGINE_ID: \"copilot\"\n      GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }}\n      GH_AW_SAFE_OUTPUT_MESSAGES: \"{\\\"footer\\\":\\\"\\\\u003e Generated by 🌈 {workflow_name}, see [workflow run]({run_url}). [Learn more](https://github.com/githubnext/agentics/blob/main/docs/repo-assist.md).\\\",\\\"runStarted\\\":\\\"{workflow_name} is processing {event_type}, see [workflow run]({run_url})...\\\",\\\"runSuccess\\\":\\\"✓ {workflow_name} completed successfully, see [workflow run]({run_url}).\\\",\\\"runFailure\\\":\\\"✗ {workflow_name} encountered {status}, see [workflow run]({run_url}).\\\"}\"\n      GH_AW_WORKFLOW_ID: \"repo-assist\"\n      GH_AW_WORKFLOW_NAME: \"Repo Assist\"\n      GH_AW_WORKFLOW_SOURCE: \"githubnext/agentics/workflows/repo-assist.md@3de4e604a36b5190a1c7dc4719c7341500ba8a95\"\n      GH_AW_WORKFLOW_SOURCE_URL: \"${{ github.server_url }}/githubnext/agentics/blob/3de4e604a36b5190a1c7dc4719c7341500ba8a95/workflows/repo-assist.md\"\n    outputs:\n      code_push_failure_count: ${{ steps.process_safe_outputs.outputs.code_push_failure_count }}\n      code_push_failure_errors: ${{ steps.process_safe_outputs.outputs.code_push_failure_errors }}\n      comment_id: ${{ steps.process_safe_outputs.outputs.comment_id }}\n      comment_url: ${{ steps.process_safe_outputs.outputs.comment_url }}\n      create_discussion_error_count: ${{ steps.process_safe_outputs.outputs.create_discussion_error_count }}\n      create_discussion_errors: ${{ steps.process_safe_outputs.outputs.create_discussion_errors }}\n      created_issue_number: ${{ steps.process_safe_outputs.outputs.created_issue_number }}\n      created_issue_url: ${{ steps.process_safe_outputs.outputs.created_issue_url }}\n      created_pr_number: ${{ steps.process_safe_outputs.outputs.created_pr_number }}\n      created_pr_url: ${{ steps.process_safe_outputs.outputs.created_pr_url }}\n      process_safe_outputs_processed_count: ${{ steps.process_safe_outputs.outputs.processed_count }}\n      process_safe_outputs_temporary_id_map: ${{ steps.process_safe_outputs.outputs.temporary_id_map }}\n      push_commit_sha: ${{ steps.process_safe_outputs.outputs.push_commit_sha }}\n      push_commit_url: ${{ steps.process_safe_outputs.outputs.push_commit_url }}\n    steps:\n      - name: Setup Scripts\n        id: setup\n        uses: github/gh-aw-actions/setup@ba90f2186d7ad780ec640f364005fa24e797b360 # v0.68.3\n        with:\n          destination: ${{ runner.temp }}/gh-aw/actions\n          job-name: ${{ github.job }}\n          trace-id: ${{ needs.activation.outputs.setup-trace-id }}\n      - name: Download agent output artifact\n        id: download-agent-output\n        continue-on-error: true\n        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1\n        with:\n          name: agent\n          path: /tmp/gh-aw/\n      - name: Setup agent output environment variable\n        id: setup-agent-output-env\n        if: steps.download-agent-output.outcome == 'success'\n        run: |\n          mkdir -p /tmp/gh-aw/\n          find \"/tmp/gh-aw/\" -type f -print\n          echo \"GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json\" >> \"$GITHUB_OUTPUT\"\n      - name: Download patch artifact\n        continue-on-error: true\n        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1\n        with:\n          name: agent\n          path: /tmp/gh-aw/\n      - name: Checkout repository\n        if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') || (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'push_to_pull_request_branch')\n        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2\n        with:\n          ref: ${{ github.base_ref || github.event.pull_request.base.ref || github.ref_name || github.event.repository.default_branch }}\n          token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n          persist-credentials: false\n          fetch-depth: 1\n      - name: Configure Git credentials\n        if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') || (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'push_to_pull_request_branch')\n        env:\n          REPO_NAME: ${{ github.repository }}\n          SERVER_URL: ${{ github.server_url }}\n          GIT_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n        run: |\n          git config --global user.email \"github-actions[bot]@users.noreply.github.com\"\n          git config --global user.name \"github-actions[bot]\"\n          git config --global am.keepcr true\n          # Re-authenticate git with GitHub token\n          SERVER_URL_STRIPPED=\"${SERVER_URL#https://}\"\n          git remote set-url origin \"https://x-access-token:${GIT_TOKEN}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git\"\n          echo \"Git configured with standard GitHub Actions identity\"\n      - name: Configure GH_HOST for enterprise compatibility\n        id: ghes-host-config\n        shell: bash\n        run: |\n          # Derive GH_HOST from GITHUB_SERVER_URL so the gh CLI targets the correct\n          # GitHub instance (GHES/GHEC). On github.com this is a harmless no-op.\n          GH_HOST=\"${GITHUB_SERVER_URL#https://}\"\n          GH_HOST=\"${GH_HOST#http://}\"\n          echo \"GH_HOST=${GH_HOST}\" >> \"$GITHUB_ENV\"\n      - name: Process Safe Outputs\n        id: process_safe_outputs\n        uses: actions/github-script@373c709c69115d41ff229c7e5df9f8788daa9553 # v9\n        env:\n          GH_AW_AGENT_OUTPUT: ${{ steps.setup-agent-output-env.outputs.GH_AW_AGENT_OUTPUT }}\n          GH_AW_ALLOWED_DOMAINS: \"*.gradle-enterprise.cloud,*.pythonhosted.org,*.vsblob.vsassets.io,adoptium.net,anaconda.org,api.adoptium.net,api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.foojay.io,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.npms.io,api.nuget.org,api.snapcraft.io,archive.apache.org,archive.ubuntu.com,azure.archive.ubuntu.com,azuresearch-usnc.nuget.org,azuresearch-ussc.nuget.org,binstar.org,bootstrap.pypa.io,builds.dotnet.microsoft.com,bun.sh,cdn.azul.com,cdn.jsdelivr.net,central.sonatype.com,ci.dot.net,conda.anaconda.org,conda.binstar.org,crates.io,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,dc.services.visualstudio.com,deb.nodesource.com,deno.land,develocity.apache.org,dist.nuget.org,dl.google.com,dlcdn.apache.org,dot.net,dotnet.microsoft.com,dotnetcli.blob.core.windows.net,download.eclipse.org,download.java.net,download.oracle.com,downloads.gradle-dn.com,esm.sh,files.pythonhosted.org,ge.spockframework.org,get.pnpm.io,github.com,googleapis.deno.dev,googlechromelabs.github.io,gradle.org,host.docker.internal,index.crates.io,jcenter.bintray.com,jdk.java.net,json-schema.org,json.schemastore.org,jsr.io,keyserver.ubuntu.com,maven-central.storage-download.googleapis.com,maven.apache.org,maven.google.com,maven.oracle.com,maven.pkg.github.com,nodejs.org,npm.pkg.github.com,npmjs.com,npmjs.org,nuget.org,nuget.pkg.github.com,nugetregistryv2prod.blob.core.windows.net,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,oneocsp.microsoft.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,pip.pypa.io,pkgs.dev.azure.com,plugins-artifacts.gradle.org,plugins.gradle.org,ppa.launchpad.net,pypi.org,pypi.python.org,raw.githubusercontent.com,registry.bower.io,registry.npmjs.com,registry.npmjs.org,registry.yarnpkg.com,repo.anaconda.com,repo.continuum.io,repo.gradle.org,repo.grails.org,repo.maven.apache.org,repo.spring.io,repo.yarnpkg.com,repo1.maven.org,repository.apache.org,s.symcb.com,s.symcd.com,scans-in.gradle.com,security.ubuntu.com,services.gradle.org,sh.rustup.rs,skimdb.npmjs.com,static.crates.io,static.rust-lang.org,storage.googleapis.com,telemetry.enterprise.githubcopilot.com,telemetry.vercel.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com,www.googleapis.com,www.java.com,www.microsoft.com,www.npmjs.com,www.npmjs.org,yarnpkg.com\"\n          GITHUB_SERVER_URL: ${{ github.server_url }}\n          GITHUB_API_URL: ${{ github.api_url }}\n          GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: \"{\\\"add_comment\\\":{\\\"hide_older_comments\\\":true,\\\"max\\\":10,\\\"target\\\":\\\"*\\\"},\\\"add_labels\\\":{\\\"allowed\\\":[\\\"bug\\\",\\\"enhancement\\\",\\\"help wanted\\\",\\\"good first issue\\\",\\\"spam\\\",\\\"off topic\\\",\\\"documentation\\\",\\\"question\\\",\\\"duplicate\\\",\\\"wontfix\\\",\\\"needs triage\\\",\\\"needs investigation\\\",\\\"breaking change\\\",\\\"performance\\\",\\\"security\\\",\\\"refactor\\\"],\\\"max\\\":30,\\\"target\\\":\\\"*\\\"},\\\"create_issue\\\":{\\\"labels\\\":[\\\"automation\\\",\\\"repo-assist\\\"],\\\"max\\\":4,\\\"title_prefix\\\":\\\"[Repo Assist] \\\"},\\\"create_pull_request\\\":{\\\"draft\\\":true,\\\"labels\\\":[\\\"automation\\\",\\\"repo-assist\\\"],\\\"max\\\":4,\\\"max_patch_size\\\":1024,\\\"protected_files\\\":[\\\"package.json\\\",\\\"bun.lockb\\\",\\\"bunfig.toml\\\",\\\"deno.json\\\",\\\"deno.jsonc\\\",\\\"deno.lock\\\",\\\"global.json\\\",\\\"NuGet.Config\\\",\\\"Directory.Packages.props\\\",\\\"mix.exs\\\",\\\"mix.lock\\\",\\\"go.mod\\\",\\\"go.sum\\\",\\\"stack.yaml\\\",\\\"stack.yaml.lock\\\",\\\"pom.xml\\\",\\\"build.gradle\\\",\\\"build.gradle.kts\\\",\\\"settings.gradle\\\",\\\"settings.gradle.kts\\\",\\\"gradle.properties\\\",\\\"package-lock.json\\\",\\\"yarn.lock\\\",\\\"pnpm-lock.yaml\\\",\\\"npm-shrinkwrap.json\\\",\\\"requirements.txt\\\",\\\"Pipfile\\\",\\\"Pipfile.lock\\\",\\\"pyproject.toml\\\",\\\"setup.py\\\",\\\"setup.cfg\\\",\\\"Gemfile\\\",\\\"Gemfile.lock\\\",\\\"uv.lock\\\",\\\"CODEOWNERS\\\",\\\"AGENTS.md\\\"],\\\"protected_files_policy\\\":\\\"fallback-to-issue\\\",\\\"protected_path_prefixes\\\":[\\\".github/\\\",\\\".agents/\\\"],\\\"title_prefix\\\":\\\"[Repo Assist] \\\"},\\\"create_report_incomplete_issue\\\":{},\\\"missing_data\\\":{},\\\"missing_tool\\\":{},\\\"noop\\\":{\\\"max\\\":1,\\\"report-as-issue\\\":\\\"true\\\"},\\\"push_to_pull_request_branch\\\":{\\\"if_no_changes\\\":\\\"warn\\\",\\\"max\\\":4,\\\"max_patch_size\\\":1024,\\\"protected_files\\\":[\\\"package.json\\\",\\\"bun.lockb\\\",\\\"bunfig.toml\\\",\\\"deno.json\\\",\\\"deno.jsonc\\\",\\\"deno.lock\\\",\\\"global.json\\\",\\\"NuGet.Config\\\",\\\"Directory.Packages.props\\\",\\\"mix.exs\\\",\\\"mix.lock\\\",\\\"go.mod\\\",\\\"go.sum\\\",\\\"stack.yaml\\\",\\\"stack.yaml.lock\\\",\\\"pom.xml\\\",\\\"build.gradle\\\",\\\"build.gradle.kts\\\",\\\"settings.gradle\\\",\\\"settings.gradle.kts\\\",\\\"gradle.properties\\\",\\\"package-lock.json\\\",\\\"yarn.lock\\\",\\\"pnpm-lock.yaml\\\",\\\"npm-shrinkwrap.json\\\",\\\"requirements.txt\\\",\\\"Pipfile\\\",\\\"Pipfile.lock\\\",\\\"pyproject.toml\\\",\\\"setup.py\\\",\\\"setup.cfg\\\",\\\"Gemfile\\\",\\\"Gemfile.lock\\\",\\\"uv.lock\\\",\\\"CODEOWNERS\\\",\\\"AGENTS.md\\\"],\\\"protected_files_policy\\\":\\\"fallback-to-issue\\\",\\\"protected_path_prefixes\\\":[\\\".github/\\\",\\\".agents/\\\"],\\\"target\\\":\\\"*\\\",\\\"title_prefix\\\":\\\"[Repo Assist] \\\"},\\\"remove_labels\\\":{\\\"allowed\\\":[\\\"bug\\\",\\\"enhancement\\\",\\\"help wanted\\\",\\\"good first issue\\\",\\\"spam\\\",\\\"off topic\\\",\\\"documentation\\\",\\\"question\\\",\\\"duplicate\\\",\\\"wontfix\\\",\\\"needs triage\\\",\\\"needs investigation\\\",\\\"breaking change\\\",\\\"performance\\\",\\\"security\\\",\\\"refactor\\\"],\\\"max\\\":5,\\\"target\\\":\\\"*\\\"},\\\"report_incomplete\\\":{},\\\"update_issue\\\":{\\\"allow_body\\\":true,\\\"max\\\":1,\\\"target\\\":\\\"*\\\",\\\"title_prefix\\\":\\\"[Repo Assist] \\\"}}\"\n          GH_AW_CI_TRIGGER_TOKEN: ${{ secrets.GH_AW_CI_TRIGGER_TOKEN }}\n        with:\n          github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}\n          script: |\n            const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');\n            setupGlobals(core, github, context, exec, io, getOctokit);\n            const { main } = require('${{ runner.temp }}/gh-aw/actions/safe_output_handler_manager.cjs');\n            await main();\n      - name: Upload Safe Outputs Items\n        if: always()\n        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1\n        with:\n          name: safe-outputs-items\n          path: |\n            /tmp/gh-aw/safe-output-items.jsonl\n            /tmp/gh-aw/temporary-id-map.json\n          if-no-files-found: ignore\n\n"
  },
  {
    "path": ".github/workflows/repo-assist.md",
    "content": "---\ndescription: |\n  A friendly repository assistant that runs 2 times a day to support contributors and maintainers.\n  Can also be triggered on-demand via '/repo-assist <instructions>' to perform specific tasks.\n  - Labels and triages open issues\n  - Comments helpfully on open issues to unblock contributors and onboard newcomers\n  - Identifies issues that can be fixed and creates draft pull requests with fixes\n  - Improves performance, testing, and code quality via PRs\n  - Makes engineering investments: dependency updates, CI improvements, tooling\n  - Updates its own PRs when CI fails or merge conflicts arise\n  - Nudges stale PRs waiting for author response\n  - Takes the repository forward with proactive improvements\n  - Maintains a persistent memory of work done and what remains\n  Always polite, constructive, and mindful of the project's goals.\n\non:\n  schedule: daily\n  workflow_dispatch:\n  slash_command:\n    name: repo-assist\n  reaction: \"eyes\"\n\ntimeout-minutes: 60\n\npermissions: read-all\n\nnetwork:\n  allowed:\n  - defaults\n  - dotnet\n  - node\n  - python\n  - rust\n  - java\n\ncheckout:\n  fetch: [\"*\"]     # fetch all remote branches to allow working on PR branches\n  fetch-depth: 0   # fetch full history\n\ntools:\n  web-fetch:\n  github:\n    toolsets: [all]\n    allowed-repos: all\n    min-integrity: none # This workflow is allowed to examine and comment on any issues or PRs\n  bash: true\n  repo-memory: true\n\nsafe-outputs:\n  messages:\n    footer: \"> Generated by 🌈 {workflow_name}, see [workflow run]({run_url}). [Learn more](https://github.com/githubnext/agentics/blob/main/docs/repo-assist.md).\"\n    run-started: \"{workflow_name} is processing {event_type}, see [workflow run]({run_url})...\"\n    run-success: \"✓ {workflow_name} completed successfully, see [workflow run]({run_url}).\"\n    run-failure: \"✗ {workflow_name} encountered {status}, see [workflow run]({run_url}).\"\n  add-comment:\n    max: 10\n    target: \"*\"\n    hide-older-comments: true\n  create-pull-request:\n    draft: true\n    title-prefix: \"[Repo Assist] \"\n    labels: [automation, repo-assist]\n    protected-files: fallback-to-issue\n    max: 4\n  push-to-pull-request-branch:\n    target: \"*\"\n    title-prefix: \"[Repo Assist] \"\n    max: 4\n    protected-files: fallback-to-issue\n  create-issue:\n    title-prefix: \"[Repo Assist] \"\n    labels: [automation, repo-assist]\n    max: 4\n  update-issue:\n    target: \"*\"\n    title-prefix: \"[Repo Assist] \"\n    max: 1\n  add-labels:\n    allowed: [bug, enhancement, \"help wanted\", \"good first issue\", \"spam\", \"off topic\", documentation, question, duplicate, wontfix, \"needs triage\", \"needs investigation\", \"breaking change\", performance, security, refactor]\n    max: 30\n    target: \"*\"\n  remove-labels:\n    allowed: [bug, enhancement, \"help wanted\", \"good first issue\", \"spam\", \"off topic\", documentation, question, duplicate, wontfix, \"needs triage\", \"needs investigation\", \"breaking change\", performance, security, refactor]\n    max: 5\n    target: \"*\"\n\nsteps:\n  - name: Fetch repo data for task weighting\n    env:\n      GH_TOKEN: ${{ github.token }}\n    run: |\n      mkdir -p /tmp/gh-aw\n\n      # Fetch open issues with labels (up to 500)\n      gh issue list --state open --limit 500 --json number,labels > /tmp/gh-aw/issues.json\n\n      # Fetch open PRs with titles (up to 200)\n      gh pr list --state open --limit 200 --json number,title > /tmp/gh-aw/prs.json\n\n      # Compute task weights and select two tasks for this run\n      python3 - << 'EOF'\n      import json, random, os\n\n      with open('/tmp/gh-aw/issues.json') as f:\n          issues = json.load(f)\n      with open('/tmp/gh-aw/prs.json') as f:\n          prs = json.load(f)\n\n      open_issues     = len(issues)\n      unlabelled      = sum(1 for i in issues if not i.get('labels'))\n      repo_assist_prs = sum(1 for p in prs if p['title'].startswith('[Repo Assist]'))\n      other_prs       = sum(1 for p in prs if not p['title'].startswith('[Repo Assist]'))\n\n      task_names = {\n          1:  'Issue Labelling',\n          2:  'Issue Investigation and Comment',\n          3:  'Issue Investigation and Fix',\n          4:  'Engineering Investments',\n          5:  'Coding Improvements',\n          6:  'Maintain Repo Assist PRs',\n          7:  'Stale PR Nudges',\n          8:  'Performance Improvements',\n          9:  'Testing Improvements',\n          10: 'Take the Repository Forward',\n      }\n\n      weights = {\n          1:  1   + 3 * unlabelled,\n          2:  3   + 1 * open_issues,\n          3:  3   + 0.7 * open_issues,\n          4:  5   + 0.2 * open_issues,\n          5:  5   + 0.1 * open_issues,\n          6:  float(repo_assist_prs),\n          7:  0.1 * other_prs,\n          8:  3   + 0.05 * open_issues,\n          9:  3   + 0.05 * open_issues,\n          10: 3   + 0.05 * open_issues,\n      }\n\n      # Seed with run ID for reproducibility within a run\n      run_id = int(os.environ.get('GITHUB_RUN_ID', '0'))\n      rng = random.Random(run_id)\n\n      task_ids     = list(weights.keys())\n      task_weights = [weights[t] for t in task_ids]\n\n      # Weighted sample without replacement (pick 2 distinct tasks)\n      chosen, seen = [], set()\n      for t in rng.choices(task_ids, weights=task_weights, k=30):\n          if t not in seen:\n              seen.add(t)\n              chosen.append(t)\n          if len(chosen) == 2:\n              break\n\n      print('=== Repo Assist Task Selection ===')\n      print(f'Open issues       : {open_issues}')\n      print(f'Unlabelled issues : {unlabelled}')\n      print(f'Repo Assist PRs   : {repo_assist_prs}')\n      print(f'Other open PRs    : {other_prs}')\n      print()\n      print('Task weights:')\n      for t, w in weights.items():\n          tag = ' <-- SELECTED' if t in chosen else ''\n          print(f'  Task {t:2d} ({task_names[t]}): weight {w:6.1f}{tag}')\n      print()\n      print(f'Selected tasks for this run: Task {chosen[0]} ({task_names[chosen[0]]}) and Task {chosen[1]} ({task_names[chosen[1]]})')\n\n      result = {\n          'open_issues': open_issues, 'unlabelled_issues': unlabelled,\n          'repo_assist_prs': repo_assist_prs, 'other_prs': other_prs,\n          'task_names': task_names,\n          'weights': {str(k): round(v, 2) for k, v in weights.items()},\n          'selected_tasks': chosen,\n      }\n      with open('/tmp/gh-aw/task_selection.json', 'w') as f:\n          json.dump(result, f, indent=2)\n      EOF\n\nsource: githubnext/agentics/workflows/repo-assist.md@3de4e604a36b5190a1c7dc4719c7341500ba8a95\n---\n\n# Repo Assist\n\n## Command Mode\n\nTake heed of **instructions**: \"${{ steps.sanitized.outputs.text }}\"\n\nIf these are non-empty (not \"\"), then you have been triggered via `/repo-assist <instructions>`. Follow the user's instructions instead of the normal scheduled workflow. Focus exclusively on those instructions. Apply all the same guidelines (read AGENTS.md, run formatters/linters/tests, be polite, use AI disclosure). Skip the weighted task selection and Task 11 reporting, and instead directly do what the user requested. If no specific instructions were provided (empty or blank), proceed with the normal scheduled workflow below.\n\nThen exit  -  do not run the normal workflow after completing the instructions.\n\n## Non-Command Mode\n\nYou are Repo Assist for `${{ github.repository }}`. Your job is to support human contributors, help onboard newcomers, identify improvements, and fix bugs by creating pull requests. You never merge pull requests yourself; you leave that decision to the human maintainers.\n\nAlways be:\n\n- **Polite and encouraging**: Every contributor deserves respect. Use warm, inclusive language.\n- **Concise**: Keep comments focused and actionable. Avoid walls of text.\n- **Mindful of project values**: Prioritize **stability**, **correctness**, and **minimal dependencies**. Do not introduce new dependencies without clear justification.\n- **Transparent about your nature**: Always clearly identify yourself as Repo Assist, an automated AI assistant. Never pretend to be a human maintainer.\n- **Restrained**: When in doubt, do nothing. It is always better to stay silent than to post a redundant, unhelpful, or spammy comment. Human maintainers' attention is precious  -  do not waste it.\n\n## Memory\n\nUse persistent repo memory to track:\n\n- issues already commented on (with timestamps to detect new human activity)\n- fix attempts and outcomes, improvement ideas already submitted, a short to-do list\n- a **backlog cursor** so each run continues where the previous one left off\n- previously checked off items (checked off by maintainer) in the Monthly Activity Summary to maintain an accurate pending actions list for maintainers\n\nRead memory at the **start** of every run; update it at the **end**.\n\n**Important**: Memory may not be 100% accurate. Issues may have been created, closed, or commented on; PRs may have been created, merged, commented on, or closed since the last run. Always verify memory against current repository state — reviewing recent activity since your last run is wise before acting on stale assumptions.\n\n**Memory backlog tracking**: Your memory may contain notes about issues or PRs that still need attention (e.g., \"issues #384, #336 have labels but no comments\"). These are **action items for you**, not just informational notes. Each run, check your memory's `notes` field and other tracking fields for any explicitly flagged backlog work, and prioritise acting on it.\n\n## Workflow\n\nEach run, the deterministic pre-step collects live repo data (open issue count, unlabelled issue count, open Repo Assist PRs, other open PRs), computes a **weighted probability** for each task, and selects **two tasks** for this run using a seeded random draw. The weights and selected tasks are printed in the workflow logs. You will find the selection in `/tmp/gh-aw/task_selection.json`.\n\n**Read the task selection**: at the start of your run, read `/tmp/gh-aw/task_selection.json` and confirm the two selected tasks in your opening reasoning. Execute **those two tasks** (plus the mandatory Task 11). If there's really nothing to do for a selected task, do not force yourself to do it - try any other different task instead that looks most useful.\n\nThe weighting scheme naturally adapts to repo state:\n\n- When unlabelled issues pile up, Task 1 (labelling) dominates.\n- When there are many open issues, Tasks 2 and 3 (commenting and fixing) get more weight.\n- As the backlog clears, Tasks 4–10 (engineering, improvements, nudges, forward progress) draw more evenly.\n\n**Repeat-run mode**: When invoked via `gh aw run repo-assist --repeat`, runs occur every 5–10 minutes. Each run is independent — do not skip a run. Always check memory to avoid duplicate work across runs.\n\n**Progress Imperative**: Your primary purpose is to make forward progress on the repository. A \"no action taken\" outcome should be rare and only occur when every open issue has been addressed, all labelling is complete, and there are genuinely no improvements, fixes, or triage actions possible. If your memory flags backlog items, **act on them now** rather than deferring.\n\nAlways do Task 11 (Update Monthly Activity Summary Issue) every run. In all comments and PR descriptions, identify yourself as \"Repo Assist\". When engaging with first-time contributors, welcome them warmly and point them to README and CONTRIBUTING — this is good default behaviour regardless of which tasks are selected.\n\n### Task 1: Issue Labelling\n\nProcess as many unlabelled issues and PRs as possible each run. Resume from memory's backlog cursor.\n\nFor each item, apply the best-fitting labels from: `bug`, `enhancement`, `help wanted`, `good first issue`, `documentation`, `question`, `duplicate`, `wontfix`, `spam`, `off topic`, `needs triage`, `needs investigation`, `breaking change`, `performance`, `security`, `refactor`. Remove misapplied labels. Apply multiple where appropriate; skip any you're not confident about. After labelling, post a brief comment if you have something genuinely useful to add.\n\nUpdate memory with labels applied and cursor position.\n\n### Task 2: Issue Investigation and Comment\n\n1. List open issues sorted by creation date ascending (oldest first). Resume from your memory's backlog cursor; reset when you reach the end.\n2. **Prioritise issues that have never received a Repo Assist comment.** Read the issue comments and check memory's `comments_made` field. Engage on an issue only if you have something insightful, accurate, helpful, and constructive to say. Expect to engage substantively on 1–3 issues per run; you may scan many more to find good candidates. Only re-engage on already-commented issues if new human comments have appeared since your last comment.\n3. Respond based on type: bugs → investigate the code and suggest a root cause or workaround; feature requests → discuss feasibility and implementation approach; questions → answer concisely with references to relevant code; onboarding → point to README/CONTRIBUTING. Never post vague acknowledgements, restatements, or follow-ups to your own comments.\n4. Begin every comment with: `🤖 *This is an automated response from Repo Assist.*`\n5. Update memory with comments made and the new cursor position.\n\n### Task 3: Issue Investigation and Fix\n\n**Only attempt fixes you are confident about.** It is fine to work on issues you have previously commented on.\n\n1. Review issues labelled `bug`, `help wanted`, or `good first issue`, plus any identified as fixable during investigation.\n2. For each fixable issue:\n   a. Check memory — skip if you've already tried and the attempt is still open. Never create duplicate PRs.\n   b. Create a fresh branch off the default branch of the repository: `repo-assist/fix-issue-<N>-<desc>`.\n   c. Implement a minimal, surgical fix. Do not refactor unrelated code.\n   d. **Build and test (required)**: do not create a PR if the build fails or tests fail due to your changes. If tests fail due to infrastructure, create the PR but document it.\n   e. Add a test for the bug if feasible; re-run tests.\n   f. Create a draft PR with: AI disclosure, `Closes #N`, root cause, fix rationale, trade-offs, and a Test Status section showing build/test outcome.\n   g. Post a single brief comment on the issue linking to the PR.\n3. Update memory with fix attempts and outcomes.\n\n### Task 4: Engineering Investments\n\nImprove the engineering foundations of the repository. Consider:\n\n- **Dependency updates**: Check for outdated dependencies. Prefer minor/patch updates; propose major bumps only with clear benefit. **Bundle Dependabot PRs**: If multiple open Dependabot PRs exist, create a single bundled PR applying all compatible updates. Reference the original PRs so maintainers can close them after merging.\n- **CI improvements**: Speed up CI pipelines, fix flaky tests, improve caching, upgrade actions.\n- **Tooling and SDK versions**: Update runtime versions, linters, formatters.\n- **Build system**: Simplify or modernise the build configuration.\n\nFor any change: create a fresh branch `repo-assist/eng-<desc>-<date>`, implement the change, build and test, then create a draft PR with AI disclosure and Test Status section. Update memory with what was checked and when.\n\n### Task 5: Coding Improvements\n\nStudy the codebase and make clearly beneficial, low-risk improvements. **Be highly selective — only propose changes with obvious value.**\n\nGood candidates: code clarity and readability, removing dead code, API usability, documentation gaps, reducing duplication.\n\nCheck memory for already-submitted ideas; do not re-propose them. Create a fresh branch `repo-assist/improve-<desc>` off the default branch of the repository, implement the improvement, build and test (same requirements as Task 3), then create a draft PR with AI disclosure, rationale, and Test Status section. If not ready to implement, file an issue instead. Update memory.\n\n### Task 6: Maintain Repo Assist PRs\n\n1. List all open PRs with the `[Repo Assist]` title prefix.\n2. For each PR: fix CI failures caused by your changes by pushing updates; resolve merge conflicts. If you've retried multiple times without success, comment and leave for human review.\n3. Do not push updates for infrastructure-only failures — comment instead.\n4. Update memory.\n\n### Task 7: Stale PR Nudges\n\n1. List open non-Repo-Assist PRs not updated in 14+ days.\n2. For each (check memory — skip if already nudged): if the PR is waiting on the author, post a single polite comment asking if they need help or want to hand off. Do not comment if the PR is waiting on a maintainer.\n3. **Maximum 3 nudges per run.** Update memory.\n\n### Task 8: Performance Improvements\n\nIdentify and implement meaningful performance improvements. Good candidates: algorithmic improvements, unnecessary work elimination, caching opportunities, memory usage reductions, startup time. Only propose changes with a clear, measurable benefit. Create a fresh branch, implement and benchmark where possible, build and test, then create a draft PR with AI disclosure, rationale, and Test Status section. Update memory.\n\n### Task 9: Testing Improvements\n\nImprove the quality and coverage of the test suite. Good candidates: missing tests for existing functionality, flaky or brittle tests, slow tests that can be sped up, test infrastructure improvements, better assertions. Avoid adding low-value tests just to inflate coverage. Create a fresh branch, implement improvements, build and test, then create a draft PR. Update memory.\n\n### Task 10: Take the Repository Forward\n\nProactively move the repository forward. Use your judgement to identify the most valuable thing to do  -  implement a backlog feature, investigate a difficult bug, draft a plan or proposal, or chart out future work. This work may span multiple runs; check your memory for anything in progress and continue it before starting something new. Record progress and next steps in memory at the end of each run.\n\n### Task 11: Update Monthly Activity Summary Issue (ALWAYS DO THIS TASK IN ADDITION TO OTHERS)\n\nMaintain a single open issue titled `[Repo Assist] Monthly Activity {YYYY}-{MM}` as a rolling summary of all Repo Assist activity for the current month.\n\n1. Search for an open `[Repo Assist] Monthly Activity` issue with label `repo-assist`. If it's for the current month, update it. If for a previous month, close it and create a new one. Read any maintainer comments  -  they may contain instructions; note them in memory.\n2. **Issue body format**  -  use **exactly** this structure:\n\n   ```markdown\n   🤖 *Repo Assist here  -  I'm an automated AI assistant for this repository.*\n\n   ## Activity for <Month Year>\n\n   ## Suggested Actions for Maintainer\n\n   **Comprehensive list** of all pending actions requiring maintainer attention (excludes items already actioned and checked off).\n   - Reread the issue you're updating before you update it  -  there may be new checkbox adjustments since your last update that require you to adjust the suggested actions.\n   - List **all** the comments, PRs, and issues that need attention\n   - Exclude **all** items that have either\n     a. previously been checked off by the user in previous editions of the Monthly Activity Summary, or\n     b. the items linked are closed/merged\n   - Use memory to keep track items checked off by user.\n   - Be concise  -  one line per item., repeating the format lines as necessary:\n\n   * [ ] **Review PR** #<number>: <summary>  -  [Review](<link>)\n   * [ ] **Check comment** #<number>: Repo Assist commented  -  verify guidance is helpful  -  [View](<link>)\n   * [ ] **Merge PR** #<number>: <reason>  -  [Review](<link>)\n   * [ ] **Close issue** #<number>: <reason>  -  [View](<link>)\n   * [ ] **Close PR** #<number>: <reason>  -  [View](<link>)\n   * [ ] **Define goal**: <suggestion>  -  [Related issue](<link>)\n\n   *(If no actions needed, state \"No suggested actions at this time.\")*\n\n   ## Future Work for Repo Assist\n\n   {Very briefly list future work for Repo Assist}\n\n   *(If nothing pending, skip this section.)*\n\n   ## Run History\n\n   ### <YYYY-MM-DD HH:MM UTC>  -  [Run](<https://github.com/<repo>/actions/runs/<run-id>>)\n   - 💬 Commented on #<number>: <short description>\n   - 🔧 Created PR #<number>: <short description>\n   - 🏷️ Labelled #<number> with `<label>`\n   - 📝 Created issue #<number>: <short description>\n\n   ### <YYYY-MM-DD HH:MM UTC>  -  [Run](<https://github.com/<repo>/actions/runs/<run-id>>)\n   - 🔄 Updated PR #<number>: <short description>\n   - 💬 Commented on PR #<number>: <short description>\n   ```\n\n3. **Format enforcement (MANDATORY)**:\n   - Always use the exact format above. If the existing body uses a different format, rewrite it entirely.\n   - **Suggested Actions comes first**, immediately after the month heading, so maintainers see the action list without scrolling.\n   - **Run History is in reverse chronological order**  -  prepend each new run's entry at the top of the Run History section so the most recent activity appears first.\n   - **Each run heading includes the date, time (UTC), and a link** to the GitHub Actions run: `### YYYY-MM-DD HH:MM UTC  -  [Run](https://github.com/<repo>/actions/runs/<run-id>)`. Use `${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}` for the current run's link.\n   - **Actively remove completed items** from \"Suggested Actions\"  -  do not tick them `[x]`; delete the line when actioned. The checklist contains only pending items.\n   - Use `* [ ]` checkboxes in \"Suggested Actions\". Never use plain bullets there.\n4. **Comprehensive suggested actions**: The \"Suggested Actions for Maintainer\" section must be a **complete list** of all pending items requiring maintainer attention, including:\n   - All open Repo Assist PRs needing review or merge\n   - **All Repo Assist comments** that haven't been acknowledged by a maintainer (use \"Check comment\" for each)\n   - Issues that should be closed (duplicates, resolved, etc.)\n   - PRs that should be closed (stale, superseded, etc.)\n   - Any strategic suggestions (goals, priorities)\n   Use repo memory and the activity log to compile this list. Include direct links for every item. Keep entries to one line each.\n5. Do not update the activity issue if nothing was done in the current run. However, if you conclude \"nothing to do\", first verify this by checking: (a) Are there any open issues without a Repo Assist comment? (b) Are there issues in your memory flagged for attention? (c) Are there any bugs that could be investigated or fixed? If any of these are true, go back and do that work instead of concluding with no action.\n\n## Guidelines\n\n- **No breaking changes** without maintainer approval via a tracked issue.\n- **No new dependencies** without discussion in an issue first.\n- **Small, focused PRs**  -  one concern per PR.\n- **Read AGENTS.md first**: before starting work on any pull request, read the repository's `AGENTS.md` file (if present) to understand project-specific conventions, coding standards, and contribution requirements.\n- **Build, format, lint, and test before every PR**: run any code formatting, linting, and testing checks configured in the repository. Build failure, lint errors, or test failures caused by your changes → do not create the PR. Infrastructure failures → create the PR but document in the Test Status section.\n- **Respect existing style**  -  match code formatting and naming conventions.\n- **AI transparency**: every comment, PR, and issue must include a Repo Assist disclosure with 🤖.\n- **Anti-spam**: no repeated or follow-up comments to yourself in a single run; re-engage only when new human comments have appeared.\n- **Systematic**: use the backlog cursor to process oldest issues first over successive runs. Do not stop early.\n- **Release preparation**: use your judgement on each run to assess whether a release is warranted (significant unreleased changes, changelog out of date). If so, create a draft release PR on your own initiative — there is no dedicated task for this.\n- **Quality over quantity**: noise erodes trust. Do nothing rather than add low-value output.\n- **Bias toward action**: While avoiding spam, actively seek ways to contribute value within the two selected tasks. A \"no action\" run should be genuinely exceptional.\n"
  },
  {
    "path": ".gitignore",
    "content": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore\n\n# User-specific files\n*.rsuser\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n*.userprefs\n\n# Build results\n[Dd]ebug/\n[Dd]ebugPublic/\n[Rr]elease/\n[Rr]eleases/\nx64/\nx86/\n[Aa][Rr][Mm]/\n[Aa][Rr][Mm]64/\nbld/\n[Bb]in/\n[Oo]bj/\n[Ll]og/\n\n# Visual Studio 2015/2017 cache/options directory\n.vs/\n# Uncomment if you have tasks that create the project's static files in wwwroot\n#wwwroot/\n\n# Visual Studio 2017 auto generated files\nGenerated\\ Files/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n# NUNIT\n*.VisualState.xml\nTestResult.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS/\n[Rr]eleasePS/\ndlldata.c\n\n# Benchmark Results\nBenchmarkDotNet.Artifacts/\n\n# .NET Core\nproject.lock.json\nproject.fragment.lock.json\nartifacts/\n\n# StyleCop\nStyleCopReport.xml\n\n# Files built by Visual Studio\n*_i.c\n*_p.c\n*_h.h\n*.ilk\n*.meta\n*.obj\n*.iobj\n*.pch\n*.pdb\n*.ipdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*_wpftmp.csproj\n*.log\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.svclog\n*.scc\n\n# Chutzpah Test files\n_Chutzpah*\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opendb\n*.opensdf\n*.sdf\n*.cachefile\n*.VC.db\n*.VC.VC.opendb\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n*.sap\n\n# Visual Studio Trace Files\n*.e2e\n\n# TFS 2012 Local Workspace\n$tf/\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n*.DotSettings.user\n\n# JustCode is a .NET coding add-in\n.JustCode\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# AxoCover is a Code Coverage Tool\n.axoCover/*\n!.axoCover/settings.json\n\n# Visual Studio code coverage results\n*.coverage\n*.coveragexml\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\nnCrunchTemp_*\n\n# MightyMoose\n*.mm.*\nAutoTest.Net/\n\n# Web workbench (sass)\n.sass-cache/\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.[Pp]ublish.xml\n*.azurePubxml\n# Note: Comment the next line if you want to checkin your web deploy settings,\n# but database connection strings (with potential passwords) will be unencrypted\n*.pubxml\n*.publishproj\n\n# Microsoft Azure Web App publish settings. Comment the next line if you want to\n# checkin your Azure Web App publish settings, but sensitive information contained\n# in these scripts will be unencrypted\nPublishScripts/\n\n# NuGet Packages\n*.nupkg\n# The packages folder can be ignored because of Package Restore\n**/[Pp]ackages/*\n# except build/, which is used as an MSBuild target.\n!**/[Pp]ackages/build/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**/[Pp]ackages/repositories.config\n# NuGet v3's project.json files produces more ignorable files\n*.nuget.props\n*.nuget.targets\n\n# Microsoft Azure Build Output\ncsx/\n*.build.csdef\n\n# Microsoft Azure Emulator\necf/\nrcf/\n\n# Windows Store app package directories and files\nAppPackages/\nBundleArtifacts/\nPackage.StoreAssociation.xml\n_pkginfo.txt\n*.appx\n\n# Visual Studio cache files\n# files ending in .cache can be ignored\n*.[Cc]ache\n# but keep track of directories ending in .cache\n!?*.[Cc]ache/\n\n# Others\nClientBin/\n~$*\n*~\n*.dbmdl\n*.dbproj.schemaview\n*.jfm\n*.pfx\n*.publishsettings\norleans.codegen.cs\n\n# Including strong name files can present a security risk\n# (https://github.com/github/gitignore/pull/2483#issue-259490424)\n#*.snk\n\n# Since there are multiple workflows, uncomment next line to ignore bower_components\n# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)\n#bower_components/\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file\n# to a newer Visual Studio version. Backup files are not needed,\n# because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\nServiceFabricBackup/\n*.rptproj.bak\n\n# SQL Server files\n*.mdf\n*.ldf\n*.ndf\n\n# Business Intelligence projects\n*.rdl.data\n*.bim.layout\n*.bim_*.settings\n*.rptproj.rsuser\n*- Backup*.rdl\n\n# Microsoft Fakes\nFakesAssemblies/\n\n# GhostDoc plugin setting file\n*.GhostDoc.xml\n\n# Node.js Tools for Visual Studio\n.ntvs_analysis.dat\nnode_modules/\n\n# Visual Studio 6 build log\n*.plg\n\n# Visual Studio 6 workspace options file\n*.opt\n\n# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)\n*.vbw\n\n# Visual Studio LightSwitch build output\n**/*.HTMLClient/GeneratedArtifacts\n**/*.DesktopClient/GeneratedArtifacts\n**/*.DesktopClient/ModelManifest.xml\n**/*.Server/GeneratedArtifacts\n**/*.Server/ModelManifest.xml\n_Pvt_Extensions\n\n# Paket dependency manager\n.paket/paket.exe\npaket-files/\n.paket/\n\n# FAKE - F# Make\n.fake/\n\n# JetBrains Rider\n.idea/\n*.sln.iml\n\n# CodeRush personal settings\n.cr/personal\n\n# Python Tools for Visual Studio (PTVS)\n__pycache__/\n*.pyc\n\n# Cake - Uncomment if you are using it\n# tools/**\n# !tools/packages.config\n\n# Tabs Studio\n*.tss\n\n# Telerik's JustMock configuration file\n*.jmconfig\n\n# BizTalk build output\n*.btp.cs\n*.btm.cs\n*.odx.cs\n*.xsd.cs\n\n# OpenCover UI analysis results\nOpenCover/\n\n# Azure Stream Analytics local run output\nASALocalRun/\n\n# MSBuild Binary and Structured Log\n*.binlog\n\n# NVidia Nsight GPU debugger configuration file\n*.nvuser\n\n# MFractors (Xamarin productivity tool) working folder\n.mfractor/\n\n# Local History for Visual Studio\n.localhistory/\n\n# BeatPulse healthcheck temp database\nhealthchecksdb\n\n.ionide"
  },
  {
    "path": "AGENTS.md",
    "content": "## Git Policy\n\n- **NEVER commit or push unless the user explicitly asks you to.** Only create commits when directly requested.\n\n## Build, Test & Lint Commands\n\n- **Build**: `dotnet fake build -t Build` (Release configuration)\n- **Format Check**: `dotnet fake build -t CheckFormat` (validates Fantomas formatting)\n- **Format**: `dotnet fake build -t Format` (applies Fantomas formatting)\n- **All Tests**: `dotnet fake build -t RunTests` (builds + starts test server + runs all tests)\n- **Unit Tests Only**: `dotnet build && dotnet tests/SwaggerProvider.Tests/bin/Release/net10.0/SwaggerProvider.Tests.dll`\n- **Provider Tests (Integration)**:\n  1. Build test server: `dotnet build tests/Swashbuckle.WebApi.Server/Swashbuckle.WebApi.Server.fsproj -c Release`\n  2. Start server in background: `dotnet tests/Swashbuckle.WebApi.Server/bin/Release/net10.0/Swashbuckle.WebApi.Server.dll`\n  3. Build tests: `dotnet build SwaggerProvider.TestsAndDocs.sln -c Release`\n  4. Run tests: `dotnet tests/SwaggerProvider.ProviderTests/bin/Release/net10.0/SwaggerProvider.ProviderTests.dll`\n- **Single Test**: Run via xunit runner: `dotnet [assembly] [filter]`\n\n## Code Style Guidelines\n\n**Language**: F# (net10.0 target framework)\n\n**Imports & Namespaces**:\n\n- `namespace [Module]` at file start; no `open` statements at module level\n- Use `module [Name]` for nested modules\n- Open dependencies after namespace declaration (e.g., `open Xunit`, `open FsUnitTyped`)\n- Fully qualify internal modules: `SwaggerProvider.Internal.v2.Parser`, `SwaggerProvider.Internal.v3.Compilers`\n\n**Formatting** (via Fantomas, EditorConfig enforced):\n\n- 4-space indents, max 150 char line length\n- `fsharp_max_function_binding_width=10`, `fsharp_max_infix_operator_expression=70`\n- No space before parameter/lowercase invocation\n- Multiline block brackets on same column, Stroustrup style enabled\n- Bar before discriminated union declarations, max 3 blank lines\n\n**Naming Conventions**:\n\n- PascalCase for classes, types, modules, public members\n- camelCase for local/private bindings, parameters\n- Suffix test functions with `Tests` or use attributes like `[<Theory>]`, `[<Fact>]`\n\n**Type Annotations**:\n\n- Explicit return types for public functions (recommended)\n- Use type inference for local bindings when obvious\n- Generic type parameters: `'a`, `'b` (single quote prefix)\n\n**Error Handling**:\n\n- Use `Result<'T, 'Error>` or `Option<'T>` for fallible operations\n- `failwith` or `failwithf` for errors in type providers and compilers\n- Task-based async for I/O: `task { }` expressions in tests\n- Match failures with `| _ -> ...` or pattern guards with `when`\n\n**File Organization**:\n\n- Tests use Xunit attributes: `[<Theory>]`, `[<Fact>]`, `[<MemberData>]`\n- Design-time providers in `src/SwaggerProvider.DesignTime/`, runtime in `src/SwaggerProvider.Runtime/`\n- Test schemas organized by OpenAPI version: `tests/.../Schemas/{v2,v3}/`\n\n## Key Patterns\n\n- Type Providers use `ProvidedApiClientBase` and compiler pipeline (DefinitionCompiler, OperationCompiler)\n- SSRF protection enabled by default; disable with `SsrfProtection=false` static parameter\n- Target net10.0; use implicit async/await (task expressions)\n"
  },
  {
    "path": "LICENSE.txt",
    "content": "This is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.\n\nIn jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to <http://unlicense.org/>\n"
  },
  {
    "path": "README.md",
    "content": "# SwaggerProvider\n\n[![NuGet Version](https://badgen.net/nuget/v/SwaggerProvider)](https://www.nuget.org/packages/SwaggerProvider)\n[![NuGet Downloads](https://badgen.net/nuget/dt/SwaggerProvider)](https://www.nuget.org/packages/SwaggerProvider)\n[![License: Unlicense](https://img.shields.io/badge/license-Unlicense-blue.svg)](http://unlicense.org/)\n\n**SwaggerProvider** is an F# library of generative [Type Providers](https://learn.microsoft.com/en-us/dotnet/fsharp/tutorials/type-providers/) that auto-generate strongly-typed HTTP client code from [OpenAPI 3.0](https://swagger.io/specification/) and [Swagger 2.0](https://swagger.io/specification/v2/) schemas — no code generation step required.\n\n📚 **Full documentation:** <https://fsprojects.github.io/SwaggerProvider/>\n\n## Quick Start\n\n```fsharp\n#r \"nuget: SwaggerProvider\"\nopen SwaggerProvider\n\nlet [<Literal>] Schema = \"https://petstore.swagger.io/v2/swagger.json\"\ntype PetStore = OpenApiClientProvider<Schema>\n\nlet client = PetStore.Client()\nclient.GetInventory() |> Async.AwaitTask |> Async.RunSynchronously\n```\n\n## Features\n\n- **Compile-Time Types** — generated at compile time directly from live or local schema files, no separate codegen step needed\n- Supports **OpenAPI 3.0** and **Swagger 2.0** schemas in JSON and YAML formats\n- **Works Everywhere** — F# scripts, .NET projects, and F# Interactive with full IntelliSense and type-checking\n- **SSRF Protection** — blocks HTTP and private IP addresses by default to prevent server-side request forgery attacks\n- **CancellationToken Support** — every generated method accepts an optional CancellationToken for cancelling long-running requests\n- **Fully Customizable** — bring your own HttpClient, DelegatingHandler, or override JSON serialization\n\n## Installation\n\n```bash\ndotnet add package SwaggerProvider\n```\n\n## Key Parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `Schema` | *(required)* | URL or file path to the OpenAPI/Swagger schema |\n| `SsrfProtection` | `true` | Block HTTP and private IPs to prevent SSRF attacks |\n| `PreferNullable` | `false` | Use `Nullable<_>` instead of `Option<_>` for optional fields |\n| `PreferAsync` | `false` | Generate `Async<'T>` instead of `Task<'T>` |\n| `IgnoreControllerPrefix` | `true` | Generate a single client class for all operations |\n| `IgnoreOperationId` | `false` | Generate method names from paths instead of operation IDs |\n| `IgnoreParseErrors` | `false` | Continue generation even when the parser reports schema warnings |\n\nSee the [full documentation](https://fsprojects.github.io/SwaggerProvider/) for more details and examples.\n\n## Maintainer(s)\n\n- [@sergey-tihon](https://github.com/sergey-tihon)\n\nThe default maintainer account for projects under \"fsprojects\" is [@fsprojectsgit](https://github.com/fsprojectsgit) — F# Community Project Incubation Space.\n"
  },
  {
    "path": "SwaggerProvider.TestsAndDocs.sln",
    "content": "﻿\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 16\r\nVisualStudioVersion = 16.0.28621.142\r\nMinimumVisualStudioVersion = 10.0.40219.1\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \".paket\", \".paket\", \"{63297B98-5CED-492C-A5B7-A5B4F73CF142}\"\r\n\tProjectSection(SolutionItems) = preProject\r\n\t\tpaket.dependencies = paket.dependencies\r\n\t\tpaket.lock = paket.lock\r\n\tEndProjectSection\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"docs\", \"docs\", \"{A6A6AF7D-D6E3-442D-9B1E-58CC91879BE1}\"\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"tools\", \"tools\", \"{83F16175-43B1-4C90-A1EE-8E351C33435D}\"\r\n\tProjectSection(SolutionItems) = preProject\r\n\t\tdocs\\tools\\generate.fsx = docs\\tools\\generate.fsx\r\n\t\tdocs\\tools\\templates\\template.cshtml = docs\\tools\\templates\\template.cshtml\r\n\tEndProjectSection\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"content\", \"content\", \"{8E6D5255-776D-4B61-85F9-73C37AA1FB9A}\"\r\n\tProjectSection(SolutionItems) = preProject\r\n\t\tdocs\\content\\index.fsx = docs\\content\\index.fsx\r\n\t\tdocs\\content\\tutorial.fsx = docs\\content\\tutorial.fsx\r\n\tEndProjectSection\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"tests\", \"tests\", \"{ED8079DD-2B06-4030-9F0F-DC548F98E1C4}\"\r\nEndProject\r\nProject(\"{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}\") = \"SwaggerProvider.ProviderTests\", \"tests\\SwaggerProvider.ProviderTests\\SwaggerProvider.ProviderTests.fsproj\", \"{F26DFAA6-CB19-46EB-9FBD-F4A4DC46C3F5}\"\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"src\", \"src\", \"{1D6B2F7D-FC4A-499B-B3D1-42A09F42AAAF}\"\r\nEndProject\r\nProject(\"{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}\") = \"SwaggerProvider.Runtime\", \"src\\SwaggerProvider.Runtime\\SwaggerProvider.Runtime.fsproj\", \"{DC3E73AF-5B15-45AD-B3C5-B3707DCB0F81}\"\r\nEndProject\r\nProject(\"{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}\") = \"SwaggerProvider.DesignTime\", \"src\\SwaggerProvider.DesignTime\\SwaggerProvider.DesignTime.fsproj\", \"{0598B4A4-3017-493E-8A64-293EAB4CFB95}\"\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Solution Items\", \"Solution Items\", \"{CD49F31A-952B-4153-AB76-690091FCE484}\"\r\n\tProjectSection(SolutionItems) = preProject\r\n\t\tglobal.json = global.json\r\n\tEndProjectSection\r\nEndProject\r\nGlobal\r\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\r\n\t\tDebug|Any CPU = Debug|Any CPU\r\n\t\tRelease|Any CPU = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n\t\t{F26DFAA6-CB19-46EB-9FBD-F4A4DC46C3F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{F26DFAA6-CB19-46EB-9FBD-F4A4DC46C3F5}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{F26DFAA6-CB19-46EB-9FBD-F4A4DC46C3F5}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{F26DFAA6-CB19-46EB-9FBD-F4A4DC46C3F5}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{DC3E73AF-5B15-45AD-B3C5-B3707DCB0F81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{DC3E73AF-5B15-45AD-B3C5-B3707DCB0F81}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{DC3E73AF-5B15-45AD-B3C5-B3707DCB0F81}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{DC3E73AF-5B15-45AD-B3C5-B3707DCB0F81}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{0598B4A4-3017-493E-8A64-293EAB4CFB95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{0598B4A4-3017-493E-8A64-293EAB4CFB95}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{0598B4A4-3017-493E-8A64-293EAB4CFB95}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{0598B4A4-3017-493E-8A64-293EAB4CFB95}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(SolutionProperties) = preSolution\r\n\t\tHideSolutionNode = FALSE\r\n\tEndGlobalSection\r\n\tGlobalSection(NestedProjects) = preSolution\r\n\t\t{83F16175-43B1-4C90-A1EE-8E351C33435D} = {A6A6AF7D-D6E3-442D-9B1E-58CC91879BE1}\r\n\t\t{8E6D5255-776D-4B61-85F9-73C37AA1FB9A} = {A6A6AF7D-D6E3-442D-9B1E-58CC91879BE1}\r\n\t\t{F26DFAA6-CB19-46EB-9FBD-F4A4DC46C3F5} = {ED8079DD-2B06-4030-9F0F-DC548F98E1C4}\r\n\t\t{DC3E73AF-5B15-45AD-B3C5-B3707DCB0F81} = {1D6B2F7D-FC4A-499B-B3D1-42A09F42AAAF}\r\n\t\t{0598B4A4-3017-493E-8A64-293EAB4CFB95} = {1D6B2F7D-FC4A-499B-B3D1-42A09F42AAAF}\r\n\tEndGlobalSection\r\n\tGlobalSection(ExtensibilityGlobals) = postSolution\r\n\t\tSolutionGuid = {F2D1B446-5EE2-4DDF-83A6-831E733173F4}\r\n\tEndGlobalSection\r\nEndGlobal\r\n"
  },
  {
    "path": "SwaggerProvider.sln",
    "content": "﻿\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 16\r\nVisualStudioVersion = 16.0.28621.142\r\nMinimumVisualStudioVersion = 10.0.40219.1\r\nProject(\"{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}\") = \"SwaggerProvider.Runtime\", \"src\\SwaggerProvider.Runtime\\SwaggerProvider.Runtime.fsproj\", \"{AD0B2860-9373-4BD9-906D-6D19F2F7DEE9}\"\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \".paket\", \".paket\", \"{04303D28-4592-430A-B4A6-892105A95B22}\"\r\n\tProjectSection(SolutionItems) = preProject\r\n\t\tpaket.dependencies = paket.dependencies\r\n\t\tpaket.lock = paket.lock\r\n\tEndProjectSection\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"src\", \"src\", \"{727FB2BE-A8C5-4537-9C87-7083346E2865}\"\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"tests\", \"tests\", \"{3A51AC71-D3EF-46DE-A7F0-E2B46370C6EE}\"\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Solution Files\", \"Solution Files\", \"{302BCCA4-51B8-475C-9131-548CDC824026}\"\r\n\tProjectSection(SolutionItems) = preProject\r\n\t\t.editorconfig = .editorconfig\r\n\t\tbuild.fsx = build.fsx\r\n\t\tglobal.json = global.json\r\n\t\tREADME.md = README.md\r\n\t\tdocs\\RELEASE_NOTES.md = docs\\RELEASE_NOTES.md\r\n\tEndProjectSection\r\nEndProject\r\nProject(\"{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}\") = \"SwaggerProvider.DesignTime\", \"src\\SwaggerProvider.DesignTime\\SwaggerProvider.DesignTime.fsproj\", \"{DBE9AA3E-AB4C-4FE3-915B-886CC6E6A88D}\"\r\nEndProject\r\nProject(\"{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}\") = \"SwaggerProvider.Tests\", \"tests\\SwaggerProvider.Tests\\SwaggerProvider.Tests.fsproj\", \"{358F1AB1-0F38-4D7D-B022-24F4E9EB5673}\"\r\nEndProject\r\nProject(\"{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}\") = \"Swashbuckle.WebApi.Server\", \"tests\\Swashbuckle.WebApi.Server\\Swashbuckle.WebApi.Server.fsproj\", \"{112C445E-959B-4193-836A-78F36FB9F36E}\"\r\nEndProject\r\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \".github\", \".github\", \"{BA115E77-63E4-4D9C-AB91-F8FAAD2218D3}\"\r\n\tProjectSection(SolutionItems) = preProject\r\n\t\t.github\\workflows\\dotnetcore.yml = .github\\workflows\\dotnetcore.yml\r\n\tEndProjectSection\r\nEndProject\r\nGlobal\r\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\r\n\t\tDebug|Any CPU = Debug|Any CPU\r\n\t\tRelease|Any CPU = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\r\n\t\t{AD0B2860-9373-4BD9-906D-6D19F2F7DEE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{AD0B2860-9373-4BD9-906D-6D19F2F7DEE9}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{AD0B2860-9373-4BD9-906D-6D19F2F7DEE9}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{AD0B2860-9373-4BD9-906D-6D19F2F7DEE9}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{DBE9AA3E-AB4C-4FE3-915B-886CC6E6A88D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{DBE9AA3E-AB4C-4FE3-915B-886CC6E6A88D}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{DBE9AA3E-AB4C-4FE3-915B-886CC6E6A88D}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{DBE9AA3E-AB4C-4FE3-915B-886CC6E6A88D}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{358F1AB1-0F38-4D7D-B022-24F4E9EB5673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{358F1AB1-0F38-4D7D-B022-24F4E9EB5673}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{358F1AB1-0F38-4D7D-B022-24F4E9EB5673}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{358F1AB1-0F38-4D7D-B022-24F4E9EB5673}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\t\t{112C445E-959B-4193-836A-78F36FB9F36E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r\n\t\t{112C445E-959B-4193-836A-78F36FB9F36E}.Debug|Any CPU.Build.0 = Debug|Any CPU\r\n\t\t{112C445E-959B-4193-836A-78F36FB9F36E}.Release|Any CPU.ActiveCfg = Release|Any CPU\r\n\t\t{112C445E-959B-4193-836A-78F36FB9F36E}.Release|Any CPU.Build.0 = Release|Any CPU\r\n\tEndGlobalSection\r\n\tGlobalSection(SolutionProperties) = preSolution\r\n\t\tHideSolutionNode = FALSE\r\n\tEndGlobalSection\r\n\tGlobalSection(NestedProjects) = preSolution\r\n\t\t{AD0B2860-9373-4BD9-906D-6D19F2F7DEE9} = {727FB2BE-A8C5-4537-9C87-7083346E2865}\r\n\t\t{DBE9AA3E-AB4C-4FE3-915B-886CC6E6A88D} = {727FB2BE-A8C5-4537-9C87-7083346E2865}\r\n\t\t{358F1AB1-0F38-4D7D-B022-24F4E9EB5673} = {3A51AC71-D3EF-46DE-A7F0-E2B46370C6EE}\r\n\t\t{112C445E-959B-4193-836A-78F36FB9F36E} = {3A51AC71-D3EF-46DE-A7F0-E2B46370C6EE}\r\n\tEndGlobalSection\r\n\tGlobalSection(ExtensibilityGlobals) = postSolution\r\n\t\tSolutionGuid = {D1661E43-518D-450C-BB1F-43C008B97BB6}\r\n\tEndGlobalSection\r\nEndGlobal\r\n"
  },
  {
    "path": "build.cmd",
    "content": "@echo off\ndotnet tool restore\ndotnet paket restore\ndotnet fsi build.fsx %*\n"
  },
  {
    "path": "build.fsx",
    "content": "#r \"nuget: Fake.Core.Target\"\n#r \"nuget: Fake.Core.Process\"\n#r \"nuget: Fake.Core.ReleaseNotes\"\n#r \"nuget: Fake.IO.FileSystem\"\n#r \"nuget: Fake.DotNet.Cli\"\n#r \"nuget: Fake.DotNet.AssemblyInfoFile\"\n#r \"nuget: Fake.DotNet.Paket\"\n#r \"nuget: Fake.Tools.Git\"\n\n// Boilerplate - https://github.com/fsprojects/FAKE/issues/2719#issuecomment-1470687052\nSystem.Environment.GetCommandLineArgs()\n|> Array.skip 2 // skip fsi.exe; build.fsx\n|> Array.toList\n|> Fake.Core.Context.FakeExecutionContext.Create false __SOURCE_FILE__\n|> Fake.Core.Context.RuntimeContext.Fake\n|> Fake.Core.Context.setExecutionContext\n\nopen Fake\nopen Fake.Core.TargetOperators\nopen Fake.Core\nopen Fake.IO\nopen Fake.IO.FileSystemOperators\nopen Fake.IO.Globbing.Operators\nopen Fake.DotNet\nopen Fake.Tools\nopen System.IO\n\nTarget.initEnvironment()\n\n// --------------------------------------------------------------------------------------\n\n// Longer description of the project\n// (used as a description for NuGet package; line breaks are automatically cleaned up)\nlet description = \"F# Type Provider for Swagger & Open API\"\n\n// Git configuration (used for publishing documentation in gh-pages branch)\n// The profile where the project is posted\nlet gitOwner = \"fsprojects\"\n// The name of the project on GitHub\nlet gitName = \"SwaggerProvider\"\n\n// --------------------------------------------------------------------------------------\n\n// Read additional information from the release notes document\nlet release = ReleaseNotes.load \"docs/RELEASE_NOTES.md\"\n\n// Generate assembly info files with the right version & up-to-date information\nTarget.create \"AssemblyInfo\" (fun _ ->\n    let fileName = \"src/Common/AssemblyInfo.fs\"\n\n    AssemblyInfoFile.createFSharp\n        fileName\n        [ AssemblyInfo.Title gitName\n          AssemblyInfo.Product gitName\n          AssemblyInfo.Description description\n          AssemblyInfo.Version release.AssemblyVersion\n          AssemblyInfo.FileVersion release.AssemblyVersion ])\n\n// --------------------------------------------------------------------------------------\n// Clean build results\n\nTarget.create \"Clean\" (fun _ ->\n    !!\"**/**/bin/\" |> Shell.cleanDirs\n    //!! \"**/**/obj/\" |> Shell.cleanDirs\n\n    Shell.cleanDirs [ \"bin\"; \"temp\" ]\n\n    try\n        File.Delete(\"swaggerlog\")\n    with _ ->\n        ())\n\nTarget.create \"CleanDocs\" (fun _ -> Shell.cleanDirs [ \"docs/output\" ])\n\n// --------------------------------------------------------------------------------------\n// Build library & test project\n\nlet dotnet cmd args =\n    let result = DotNet.exec id cmd args\n\n    if not result.OK then\n        failwithf \"Failed: %A\" result.Errors\n\nTarget.create \"Build\" (fun _ -> dotnet \"build\" \"SwaggerProvider.sln -c Release\")\n\nlet webApiInputStream = StreamRef.Empty\n\nTarget.create \"StartServer\" (fun _ ->\n    Target.activateFinal \"StopServer\"\n\n    CreateProcess.fromRawCommandLine \"dotnet\" \"tests/Swashbuckle.WebApi.Server/bin/Release/net10.0/Swashbuckle.WebApi.Server.dll\"\n    |> CreateProcess.withStandardInput(CreatePipe webApiInputStream)\n    |> Proc.start\n    |> ignore\n\n    // We need delay to guarantee that server is bootstrapped\n    System.Threading.Thread.Sleep(2000))\n\nTarget.createFinal \"StopServer\" (fun _ ->\n    // Write something to input stream to stop server\n    try\n        webApiInputStream.Value.Write([| 0uy |], 0, 1)\n    with e ->\n        printfn \"%s\" e.Message\n//Process.killAllByName \"dotnet\"\n)\n\nTarget.create \"BuildTests\" (fun _ ->\n    // Explicit restore ensures project.assets.json has all target frameworks before the build.\n    // Without this, the inner-build restores triggered by Paket.Restore.targets may overwrite\n    // the assets file with only one TFM, causing NETSDK1005 for the other TFM.\n    dotnet \"restore\" \"SwaggerProvider.TestsAndDocs.sln\"\n    dotnet \"build\" \"SwaggerProvider.TestsAndDocs.sln -c Release --no-restore\")\n\n// --------------------------------------------------------------------------------------\n// Run the unit tests using test runner\n\nlet runTests assembly =\n    dotnet $\"{assembly}\" \"\"\n\nTarget.create \"RunUnitTests\" (fun _ -> runTests \"tests/SwaggerProvider.Tests/bin/Release/net10.0/SwaggerProvider.Tests.dll\")\n\nTarget.create \"RunIntegrationTests\" (fun _ -> runTests \"tests/SwaggerProvider.ProviderTests/bin/Release/net10.0/SwaggerProvider.ProviderTests.dll\")\n\nTarget.create \"RunTests\" ignore\n\n// --------------------------------------------------------------------------------------\n// Build a NuGet package\n\nTarget.create \"NuGet\" (fun _ ->\n    Paket.pack(fun p ->\n        { p with\n            ToolType = ToolType.CreateLocalTool()\n            OutputPath = \"bin\"\n            Version = release.NugetVersion\n            ReleaseNotes = String.toLines release.Notes }))\n\nTarget.create \"PublishNuget\" (fun _ ->\n    Paket.push(fun p ->\n        { p with\n            ToolType = ToolType.CreateLocalTool()\n            WorkingDir = \"bin\" }))\n\n// --------------------------------------------------------------------------------------\n// Generate the documentation\n\nTarget.create \"BrowseDocs\" (fun _ ->\n    CreateProcess.fromRawCommandLine \"npm\" \"run docs:dev --prefix docs\"\n    |> (Proc.run >> ignore))\n\n// --------------------------------------------------------------------------------------\n// Release Scripts\n\nTarget.create \"Release\" (fun _ ->\n    // not fully converted from  FAKE 4\n\n    // StageAll \"\"\n    // Git.Commit.Commit \"\" (sprintf \"Bump version to %s\" release.NugetVersion)\n    // Branches.push \"\"\n\n    // Branches.tag \"\" release.NugetVersion\n    // Branches.pushTag \"\" \"origin\" release.NugetVersion\n\n    // // release on github\n    // createClient (getBuildParamOrDefault \"github-user\" \"\") (getBuildParamOrDefault \"github-pw\" \"\")\n    // |> createDraft gitOwner gitName release.NugetVersion (release.SemVer.PreRelease <> None) release.Notes\n    // // TODO: |> uploadFile \"PATH_TO_FILE\"\n    // |> releaseDraft\n    // |> Async.RunSynchronously\n\n    // using simplified FAKE 5 release for now\n\n    Git.Staging.stageAll \"\"\n    Git.Commit.exec \"\" (sprintf \"Bump version to %s\" release.NugetVersion)\n    Git.Branches.push \"\"\n\n    Git.Branches.tag \"\" release.NugetVersion\n    Git.Branches.pushTag \"\" \"origin\" release.NugetVersion)\n\nTarget.create \"BuildPackage\" ignore\n\nlet sourceFiles =\n    !!\"**/*.fs\" ++ \"**/*.fsx\"\n    -- \"packages/**/*.*\"\n    -- \"paket-files/**/*.*\"\n    -- \".fake/**/*.*\"\n    -- \"**/obj/**/*.*\"\n    -- \"**/AssemblyInfo.fs\"\n\nTarget.create \"Format\" (fun _ ->\n    let result =\n        sourceFiles\n        |> Seq.map(sprintf \"\\\"%s\\\"\")\n        |> String.concat \" \"\n        |> DotNet.exec id \"fantomas\"\n\n    if not result.OK then\n        printfn \"Errors while formatting all files: %A\" result.Messages)\n\nTarget.create \"CheckFormat\" (fun _ ->\n    let result =\n        sourceFiles\n        |> Seq.map(sprintf \"\\\"%s\\\"\")\n        |> String.concat \" \"\n        |> sprintf \"%s --check\"\n        |> DotNet.exec id \"fantomas\"\n\n    if result.ExitCode = 0 then\n        Trace.log \"No files need formatting\"\n    elif result.ExitCode = 99 then\n        failwith \"Some files need formatting, run `dotnet fake build -t Format` to format them\"\n    else\n        Trace.logf \"Errors while formatting: %A\" result.Errors\n        failwith \"Unknown errors while formatting\")\n\n// --------------------------------------------------------------------------------------\n// Run all targets by default. Invoke 'build <Target>' to override\n\nTarget.create \"All\" ignore\n\n// https://github.com/fsharp/FAKE/issues/2283\nlet skipTests = Environment.environVarAsBoolOrDefault \"skipTests\" false\n\n\n\"Clean\"\n==> \"AssemblyInfo\"\n==> \"CheckFormat\"\n==> \"Build\"\n==> \"RunUnitTests\"\n==> \"StartServer\"\n==> \"BuildTests\"\n=?> (\"RunIntegrationTests\", not skipTests)\n==> \"StopServer\"\n==> \"RunTests\"\n==> \"NuGet\"\n==> \"All\"\n==> \"BuildPackage\"\n==> \"PublishNuget\"\n==> \"Release\"\n\nTarget.runOrDefault \"BuildPackage\"\n"
  },
  {
    "path": "build.sh",
    "content": "#!/bin/bash\nif test \"$OS\" = \"Windows_NT\"\nthen\n  cmd /C build.cmd\nelse\n  dotnet tool restore\n  dotnet paket restore\n  dotnet fsi build.fsx $@\nfi\n"
  },
  {
    "path": "docs/.gitignore",
    "content": "node_modules/\n.vitepress/cache/\n.vitepress/dist/\n"
  },
  {
    "path": "docs/.vitepress/config.mts",
    "content": "import { defineConfig } from \"vitepress\";\n\nexport default defineConfig({\n  base: \"/SwaggerProvider/\",\n  title: \"SwaggerProvider\",\n  description: \"F# OpenAPI Type Provider\",\n  head: [\n    [\"link\", { rel: \"icon\", href: \"/files/img/logo.png\" }],\n    [\n      \"link\",\n      {\n        rel: \"stylesheet\",\n        href: \"https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500&display=swap\",\n      },\n    ],\n  ],\n  themeConfig: {\n    logo: \"/files/img/logo.png\",\n    nav: [\n      { text: \"Home\", link: \"/\" },\n      { text: \"NuGet\", link: \"https://www.nuget.org/packages/SwaggerProvider\" },\n      { text: \"GitHub\", link: \"https://github.com/fsprojects/SwaggerProvider\" },\n    ],\n    sidebar: [\n      {\n        text: \"Documentation\",\n        items: [\n          { text: \"Getting Started\", link: \"/getting-started\" },\n          { text: \"OpenApiClientProvider\", link: \"/OpenApiClientProvider\" },\n          { text: \"Customization\", link: \"/Customization\" },\n          { text: \"Release Notes\", link: \"/RELEASE_NOTES\" },\n        ],\n      },\n    ],\n    socialLinks: [\n      { icon: \"github\", link: \"https://github.com/fsprojects/SwaggerProvider\" },\n    ],\n    search: {\n      provider: \"local\",\n    },\n  },\n});\n"
  },
  {
    "path": "docs/.vitepress/theme/custom.css",
    "content": ":root {\n  --vp-font-family-mono: \"Fira Code\", monospace;\n}\n\n.VPHero .image-container .image-bg {\n  background-image: linear-gradient(135deg, #00c9a7 0%, #1cb5e0 50%, #00d4aa 100%);\n  border-radius: 50%;\n  filter: blur(68px);\n  opacity: 0.6;\n}\n\n@supports (font-variation-settings: normal) {\n  :root {\n    --vp-font-family-mono: \"Fira Code\", monospace;\n  }\n}\n"
  },
  {
    "path": "docs/.vitepress/theme/index.ts",
    "content": "import DefaultTheme from 'vitepress/theme'\nimport './custom.css'\n\nexport default DefaultTheme\n"
  },
  {
    "path": "docs/Customization.md",
    "content": "# Customization\n\nOpenAPI and Swagger type providers generate one or several API client types (depending on the value of `IgnoreControllerPrefix`).\nEach provided API client is a subclass of `ProvidedApiClientBase`, so you can control and customize HTTP calls.\n\n```fsharp\ntype ProvidedApiClientBase(httpClient: HttpClient) =\n    member val HttpClient = httpClient with get, set\n\n    abstract member Serialize: obj -> string\n    abstract member Deserialize: string * Type -> obj\n```\n\nThe snippet shows only the most important parts of `ProvidedApiClientBase`.\nThe full source includes default `Serialize` and `Deserialize` implementations built on [System.Text.Json](https://learn.microsoft.com/en-us/dotnet/api/system.text.json?view=net-10.0).\n\n**Key features:**\n1. You can provide your own `HttpClient` instance during API client construction and fully control request execution (if you do not provide one, the type provider creates a default instance).\n2. `Serialize` and `Deserialize` are abstract methods. If the default `JsonSerializerOptions` do not fit your needs, override them and configure `System.Text.Json` as required.\n\n## Request interception\n\nSince you control `HttpClient`, you can use [outgoing request middleware](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/http-requests#outgoing-request-middleware), implement your own `DelegatingHandler`, and intercept all HTTP requests generated by the provided API client.\n\n```fsharp {highlight:['8-13','18-20']}\nopen System\nopen System.Net.Http\nopen SwaggerProvider\n\nlet [<Literal>] Schema = \"https://petstore.swagger.io/v2/swagger.json\"\ntype PetStore = OpenApiClientProvider<Schema, PreferAsync=true>\n\ntype LoggingHandler(messageHandler) =\n    inherit DelegatingHandler(messageHandler)\n    override __.SendAsync(request, cancellationToken) =\n        // Put a breakpoint here if you want to debug HTTP calls\n        printfn \"[%A]: %A\" request.Method request.RequestUri\n        base.SendAsync(request, cancellationToken)\n\n[<EntryPoint>]\nlet main argv =\n    let baseAddress = Uri(\"https://petstore.swagger.io/v2/\")\n    let handler1 = new HttpClientHandler (UseCookies = false)\n    let handler2 = new LoggingHandler(handler1)\n    use httpClient = new HttpClient(handler2, true, BaseAddress=baseAddress)\n    let client = PetStore.Client(httpClient)\n    async {\n        let pet = PetStore.Pet(Id = Some(24L), Name = \"Shani\")\n        do! client.AddPet(pet)\n        let! myPet = client.GetPetById(24L)\n        printfn \"Waw, my name is %A\" myPet.Name\n    }\n    |> Async.RunSynchronously\n    0\n```\n\n## Authentication\n\nAuthentication is a special case of request interception.\nYour custom `DelegatingHandler` is fully responsible for authentication data management (attach an authorization header, add authentication cookies, invalidate tokens, etc.).\n\n```fsharp {highlight:['4-6']}\ntype AuthHandler(messageHandler) =\n    inherit DelegatingHandler(messageHandler)\n    override __.SendAsync(request, cancellationToken) =\n        // Invalidate your token if it expired\n        request.Headers.Authorization <-\n            Headers.AuthenticationHeaderValue(\"Bearer\", \"Your OAuth token\");\n        base.SendAsync(request, cancellationToken)\n```\n\nIf your token does not require invalidation, you can use `HttpClient.DefaultRequestHeaders` to add the `Authorization` header to all requests.\n\n```fsharp {highlight:['4-5']}\nlet baseAddress = Uri(\"https://petstore.swagger.io/v2/\")\nlet handler = new HttpClientHandler (UseCookies = false)\nuse httpClient = new HttpClient(handler, true, BaseAddress=baseAddress)\nhttpClient.DefaultRequestHeaders.Authorization <-\n    Headers.AuthenticationHeaderValue(\"Bearer\", \"Your OAuth token\")\nlet client = PetStore.Client(httpClient)\n```\n\n## Serialization\n\nSerialization is also flexible.\nDefine your own API client type as a subclass of the generated API client and override `Serialize` and `Deserialize`.\n\n::: info\nThe serializer is configurable but not replaceable! The Type provider emits types with [JsonPropertyNameAttribute](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.serialization.jsonpropertynameattribute?view=net-10.0) on properties for seamless serialization.\n:::\n\n```fsharp {highlight:['20-28', '33-34']}\nopen System\nopen SwaggerProvider\nopen System.Text.Json\nopen System.Text.Json.Serialization\n\nlet [<Literal>] Schema = \"https://petstore.swagger.io/v2/swagger.json\"\ntype PetStore = OpenApiClientProvider<Schema, PreferAsync=true>\n\nlet jsonSerializerSettings =\n    // nuget: System.Text.Json\n    let settings = JsonSerializerOptions(\n                    //PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower,\n                    // ...\n                    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull\n    ) \n    // nuget: FSharp.SystemTextJson\n    JsonFSharpOptions.Default().AddToJsonSerializerOptions settings\n    settings\n\ntype MyApiClient() =\n    // inherit from provided API client\n    inherit PetStore.Client()\n\n    // Override default implementation of Serialize & Deserialize\n    override __.Serialize(value:obj): string =\n        JsonSerializer.Serialize(value, jsonSerializerSettings)\n    override __.Deserialize(value, retTy:Type): obj =\n        JsonSerializer.Deserialize(value, retTy, jsonSerializerSettings)\n\n\n[<EntryPoint>]\nlet main argv =\n    // Instantiate your API client\n    let client = MyApiClient()\n    async {\n        let pet = PetStore.Pet(Id = Some(24L), Name = \"Shani\")\n        do! client.AddPet(pet)\n        let! myPet = client.GetPetById(24L)\n        printfn \"Waw, my name is %A\" myPet.Name\n    }\n    |> Async.RunSynchronously\n    0\n\n```\n"
  },
  {
    "path": "docs/OpenApiClientProvider.md",
    "content": "# OpenAPI Client Provider\n\nOpenApiClientProvider is a generative F# Type Provider, built on top of [Microsoft.OpenApi.Readers](https://www.nuget.org/packages/Microsoft.OpenApi.Readers/) schema parser that supports 3.0 and 2.0 schema formats.\n\n```fsharp\nopen SwaggerProvider\n\nlet [<Literal>] Schema = \"https://petstore.swagger.io/v2/swagger.json\"\ntype PetStore = OpenApiClientProvider<Schema>\nlet client = PetStore.Client()\n```\n\n## Parameters\n\n`OpenApiClientProvider` supports the following configuration parameters\n\n| Parameter | Description |\n|-----------|-------------|\n| `Schema` | Url or Path to Swagger schema file. |\n| `IgnoreOperationId` | Do not use `operationsId` and generate method names using `path` only. Default value `false`. |\n| `IgnoreControllerPrefix` | Do not parse `operationsId` as `<controllerName>_<methodName>` and generate one client class for all operations. Default value `true`. |\n| `PreferNullable` | Provide `Nullable<_>` for not required properties, instead of `Option<_>`. Defaults value `false`. |\n| `PreferAsync` | Generate async actions of type `Async<'T>` instead of `Task<'T>`. Defaults value `false`. |\n| `SsrfProtection` | Enable SSRF protection (blocks HTTP and localhost). Set to `false` for development/testing. Default value `true`. |\n| `IgnoreParseErrors` | Continue generating the provider even when the OpenAPI parser reports validation errors (e.g. vendor extensions or non-strictly-compliant schemas). Warnings are printed to stderr. Default value `false`. |\n\nMore configuration scenarios are described in [Customization section](/Customization)\n\n## Security (SSRF Protection)\n\nBy default, SwaggerProvider blocks HTTP URLs and localhost/private IP addresses to prevent [SSRF attacks](https://owasp.org/www-community/attacks/Server_Side_Request_Forgery). \n\nFor **development and testing** with local servers, disable SSRF protection:\n\n```fsharp\n// Development: Allow HTTP and localhost\ntype LocalApi = OpenApiClientProvider<\"http://localhost:5000/swagger.json\", SsrfProtection=false>\n\n// Production: HTTPS with SSRF protection (default)\ntype ProdApi = OpenApiClientProvider<\"https://api.example.com/swagger.json\">\n```\n\n**Warning:** Never set `SsrfProtection=false` in production code.\n\n## Non-Strictly-Compliant Schemas (IgnoreParseErrors)\n\nSome OpenAPI schemas generated by tools such as [NSwag](https://github.com/RicoSuter/NSwag) may include extensions or properties that are technically invalid (e.g. `nullable: true` at the parameter level). By default, SwaggerProvider aborts with an error when the Microsoft.OpenApi parser reports such validation errors.\n\nSet `IgnoreParseErrors=true` to continue generating the type provider despite these errors. Validation warnings are printed to stderr so they remain visible:\n\n```fsharp\n// NSwag-generated schema with non-standard nullable annotations\ntype MyApi = OpenApiClientProvider<\"https://example.com/swagger.json\", IgnoreParseErrors=true>\n```\n\n**Note:** Only use `IgnoreParseErrors=true` when you trust the schema source. Suppressing errors may hide genuine schema problems that could affect the generated client.\n\n## CancellationToken Support\n\nEvery generated method automatically includes an optional `cancellationToken: CancellationToken` parameter (defaults to `CancellationToken.None`). This allows you to cancel long-running HTTP requests:\n\n```fsharp\nopen System\nopen System.Threading\nopen SwaggerProvider\n\nlet [<Literal>] Schema = \"https://petstore.swagger.io/v2/swagger.json\"\ntype PetStore = OpenApiClientProvider<Schema>\n\nlet client = PetStore.Client()\n\ntask {\n    // Cancel after 5 seconds\n    use cts = new CancellationTokenSource(TimeSpan.FromSeconds(5.0))\n    let! pet = client.GetPetById(42L, cancellationToken = cts.Token)\n    printfn $\"Pet: {pet}\"\n}\n|> _.Result\n```\n\n## Sample\n\n```fsharp\nopen System\nopen System.Net.Http\nopen SwaggerProvider\n\nlet [<Literal>] Schema = \"https://petstore.swagger.io/v2/swagger.json\"\n// By default provided methods return Task<'a>\n// and use Option<'a> for optional params\ntype PetStore = OpenApiClientProvider<Schema>\n\n[<EntryPoint>]\nlet main argv =\n    // `UseCookies = false` is required if you use Cookie Parameters\n    let handler = new HttpClientHandler(UseCookies = false)\n    // `BaseAddress` uri should end with '/' because TP generates relative URIs\n    let baseUri = Uri(\"https://petstore.swagger.io/v2/\")\n    use httpClient = new HttpClient(handler, true, BaseAddress = baseUri)\n    // You can provide your instance of `HttpClient` to the provided API client\n    // or change it any time at runtime using `client.HttpClient` property\n    let client = PetStore.Client(httpClient)\n\n    task {\n        // Create a new instance of the provided type and add to store\n        let pet = PetStore.Pet(Id = Some(24L), Name = \"Shani\")\n        do! client.AddPet(pet)\n\n        // Request data back and deserialize to the provided type\n        let! myPet = client.GetPetById(24L)\n        printfn \"Waw, my name is %A\" myPet.Name\n    }\n    |> Async.AwaitTask\n    |> Async.RunSynchronously\n    0\n```\n"
  },
  {
    "path": "docs/RELEASE_NOTES.md",
    "content": "#### 4.0.0-beta02 - April 18, 2026\n\n- fix: preserve declared properties when schema has both `properties` and `additionalProperties` (#383)\n- refactor: `CallAsync` returns `HttpResponseMessage` internally for cleaner response handling (#385)\n- eng: remove stale YamlDotNet dependency (removed with v2 parser in #377) (#386)\n- test: extend OperationCompiler unit tests (+12 tests for asAsync mode, DELETE/PUT, header params) (#380)\n- test: add coverage for cookie params, text/plain response, and default response (+6 tests) (#386)\n- docs: update homepage README for v4.0 (remove SwaggerClientProvider references, update targets) (#379)\n- docs: improve VitePress site — fix badges, flatten nav, dark theme, add features table (#382)\n- ci: bump actions/configure-pages 5→6, deploy-pages 4→5, setup-node 4→6, upload-artifact 7.0.0→7.0.1\n\n#### 4.0.0-beta01 - April 14, 2026\n\n- BREAKING: remove SwaggerClientProvider and v2 compiler, simplify folder structure (#377)\n- BREAKING: wrap optional scalar reference types in Option\\<T\\> (#122) (#357)\n- feat: resolve oneOf/anyOf with single $ref to referenced type (#375)\n- fix: publish portable PDB debug symbols to NuGet package (#361)\n- perf: cache MethodInfo for asyncCast/taskCast to avoid repeated reflection (#374)\n- perf: cache property name/metadata lookups in getPropertyValues (#373)\n- perf: cache reflection lookups and avoid double seq materialisation (#378)\n- docs: improve README with license badge, overview, quick start, and features table (#360)\n- test: add DefinitionPath.Parse unit tests and PreferNullable coverage (#370)\n- test: extend RuntimeHelpers unit-test coverage (#363)\n- eng: add Dependabot for GitHub Actions + v3 OperationCompiler unit tests (#364)\n- ci: bump actions/checkout, actions/cache, actions/setup-dotnet, actions/upload-artifact, actions/github-script, github/gh-aw-actions\n\n#### 3.2.0 - April 6, 2026\n\n- feat: add CancellationToken support to OpenApiClientProvider generated methods (closes #212) (#336)\n- fix: map `format:date` to `DateOnly` on .NET 6+ targets (closes #240) (#321)\n- fix: throw OpenApiException for undocumented HTTP error codes (#354)\n- improve: enrich XML documentation for generated API methods (#349)\n- improve: add allowed enum values to generated property XmlDoc comments (#353)\n- perf: reduce DLL-emit time for large schemas (shared ToString helper + Dictionary lookup) (#356)\n- perf: update FSharp.TypeProviders.SDK (O(n^2) to O(n) ILMethodDefs) (#355)\n- test: add v3 array/map type-mapping tests and v2 schema compilation tests (#351)\n- test: add $ref primitive-type alias tests for v3 DefinitionCompiler (closes #335) (#342)\n- hk: update TP SDK and OpenApi reader\n\n#### 3.1.0 - Mar 22, 2026\n\n- feat: Add `IgnoreParseErrors` parameter to OpenApiClientProvider (#300)\n- feat: Add `SchemaReaderErrors` property to OpenApiClientProvider (fixes #160) (#327)\n- fix: include response body in OpenApiException message (closes #250) (#324)\n- fix: unwrap F# `Option<T>` in \\`toParam\\` for header/path/cookie parameters (closes #140) (#322)\n- fix: 2xx response handling in v2 and v3 OperationCompilers (#313)\n- fix: `$0` in path parameter values treated as regex back-reference (#310)\n- fix: Option types in form data not being unwrapped (issue #214) (#298)\n- perf: avoid redundant cache invalidation timers in GetOrAdd (#318)\n- perf: increase type provider cache timeout from 30s to 5 minutes (#329)\n- hk: update FSharp.TypeProviders.SDK (enum custom attribute bug fix) (#330)\n- test: add v3 DefinitionCompiler type-mapping unit tests (#331)\n- test: add UniqueNameGenerator unit tests (#319)\n- test: add unit tests for RuntimeHelpers module (#295)\n- ci: add concurrency group to CI workflow to cancel redundant builds (#309)\n\n#### 3.0.0 - Mar 1, 2026\n\n- feat: Microsoft.OpenApi v2.x with OpenAPI v3.1 Support\n- feat: Server-Side Request Forgery (SSRF) protection for IP V4 (#271) and V6 (#272)\n- feat: handle text/plain payload types (#276)\n- fix: removed dependency on Microsoft.OpenApi.Readers\n- fix: error messages when `operationId` is not provided (minimal api) (#277)\n- feat: include TP config information in cache key (#283)\n- feat: add windows-latest ci (#282)\n- feat: Handle allOf with single reference (#284)\n- fix: nullable date deserialization for OpenAPI v3 schemas (#287)\n- docs: the Serialization documentation to mention use of System.Text.Json rather than Newtonsoft.Json (#288)\n- docs: Remove note about TaskBuilder.fs from the OpenApiClientProvider docs (#285)\n- feat: Set the \"Accept\" request header to the specified type (#290)\n- feat: Specify a Content-Type header on stream type requests when the payload type is known (#292)\n- hk: dependencies update\n\n#### 2.3.2 - Oct 11, 2025\n\n- Added support for `text/*` media type (#270) by @spaasis\n\n#### 2.3.1 - May 13, 2025\n\n- Performance improvement: ProvidedTypes update to the most recent version (#267)\n\n#### 2.3.0 - May 10, 2025\n\n- Added .NET 8 runtime, updated Microsoft.OpenApi (#265)\n\n#### 2.2.3 - Mar 11, 2025\n\n- Update ProvidedTypes.fs to latest version of FSharp.TypeProvider.SDK (#262)\n\n#### 2.2.2 - Jan 23, 2025\n\n- Improvement of design-time error handling (#259)\n\n#### 2.2.1 - Jan 16, 2025\n\n- Added allOf properties to the schema definition (#256)\n- Update TypeProvider SDK (#257)\n\n#### 2.2.0 - Jan 6, 2025\n\n- hk: build with .NET 9\n- hk: Dependencies update\n\n#### 2.1.3 - Sep 8, 2024\n\n- hk: Dependencies update\n\n#### 2.1.2 - Jun 3, 2024\n\n- fix: Support DateTime/DateTimeOffset as required query parameter, using round-trip format (#244)\n- hk: Dependencies update\n\n#### 2.1.1 - Apr 8, 2024\n\n- Minor dependency updates\n\n#### 2.1.0 - Mar 14, 2024\n\n- Build and test with .NET 8.0\n\n#### 2.0.1 - Mar 12, 2024\n\n- fix: update ProvidedTypes.fs (#235)\n- FSharp.Data utilities update (#238)\n- Updated custom serialization example to SwaggerProvider 2.0 (#239)\n\n#### 2.0.0 - Nov 08, 2023\n\n- F# 6 task{} instead of async{} under thee hood - [#200](https://github.com/fsprojects/SwaggerProvider/pull/200)\n- BREAKING: `ProvidedApiClientBase.CallAsync` returns `task` instead of `async`\n- BREAKING: `task` CE wrap all exceptions in `AggregateException` (with `OpenApiException` inside)\n- Model enums as `string`, `int32` or `boolean` (Fixed [#186](https://github.com/fsprojects/SwaggerProvider/issues/186) )\n- Add `Accept` header to all request (Fixed [#196](https://github.com/fsprojects/SwaggerProvider/issues/196))\n- Supported requests with `octet-stream` body content [#203](https://github.com/fsprojects/SwaggerProvider/pull/203)\n- Added missing properties to OpenApiException [#222](https://github.com/fsprojects/SwaggerProvider/pull/222)\n- Changed raise to calling Reraise() extension method to preserve the call stack [#230](https://github.com/fsprojects/SwaggerProvider/pull/230)\n- Microsoft.OpenApi (1.6.10)\n- FSharp.SystemTextJson (1.2.42)\n- Removed the `System.Net.Http` dependency (#221)\n- fix: accept \"default\" as \"ok response\" fallback (#223)\n- Minor performance tweaks (#233)\n\n#### 1.0.2 - Jul 10, 2022\n\n- SharpYaml 2.0.0\n- Format code using Fantomas\n\n#### 1.0.1 - Jun 25, 2022\n\n- Dependencies update\n\n#### 1.0.0 - Apr 17, 2022\n\n- Target .NET 6\n- Microsoft.OpenApi v1.3.1\n- Migration to System.Text.Json [#176](https://github.com/fsprojects/SwaggerProvider/pull/176)\n- Fix for 'FS3033: Payload is not supported' [#181](https://github.com/fsprojects/SwaggerProvider/issues/181)\n- Drop `net46` support\n- Dependencies update\n\n#### 0.12.1 - Apr 9, 2022\n\n- Correctly serialize Guid [] as query parameter [#192](https://github.com/fsprojects/SwaggerProvider/pull/192)\n\n#### 0.12.0 - Dec 22, 2020\n\n- OpenApiProvider: Dictionary support [#174](https://github.com/fsprojects/SwaggerProvider/pull/174)\n\n#### 0.11.0 - Dec 13, 2020\n\n- Relative path fix [#171](https://github.com/fsprojects/SwaggerProvider/pull/171)\n- DateTime formatted as round-trip [#170](https://github.com/fsprojects/SwaggerProvider/pull/170)\n\n#### 0.10.7 - July 15, 2020\n\n- Avoid NullReferenceException on rare case that response is nothing. [#162](https://github.com/fsprojects/SwaggerProvider/pull/162)\n- Dependencies update\n\n#### 0.10.6 - June 8, 2020\n\n- WebException handling [#161](https://github.com/fsprojects/SwaggerProvider/pull/161)\n\n#### 0.10.5 - June 4, 2020\n\n- Cache, yet one more fix... [#158](https://github.com/fsprojects/SwaggerProvider/pull/158)\n\n#### 0.10.4 - May 31, 2020\n\n- Cache fix part 2 [#155](https://github.com/fsprojects/SwaggerProvider/pull/155)\n\n#### 0.10.3 - May 30, 2020\n\n- Fixed caching [#153](https://github.com/fsprojects/SwaggerProvider/pull/153)\n- Dependencies update [#154](https://github.com/fsprojects/SwaggerProvider/pull/154)\n\n#### 0.10.2 - April 5, 2020\n\n- Caching update [#144](https://github.com/fsprojects/SwaggerProvider/pull/144)\n- Better autocomplete in IDEs\n\n#### 0.10.1 - April 5, 2020\n\n- Dependencies update [#143](https://github.com/fsprojects/SwaggerProvider/pull/143)\n\n#### 0.10.0 - December 8, 2019\n\n- OpenApiClientProvider\n- .NET Core 3.1 support\n\n#### 0.10.0-beta13 - December 8, 2019\n\n- UUID/Guid support [#138](https://github.com/fsprojects/SwaggerProvider/issues/138)\n\n#### 0.10.0-beta12 - November 19, 2019\n\n- Fixed null reference for schemas without Components definitions\n\n#### 0.10.0-beta11 - November 10, 2019\n\n- Delete method incorrectly cased [#120](https://github.com/fsprojects/SwaggerProvider/issues/120)\n- File handling - upload/download files as `IO.Stream` [#131](https://github.com/fsprojects/SwaggerProvider/pull/131)\n- DateTimeOffset as a default `date-time` type [#133](https://github.com/fsprojects/SwaggerProvider/pull/133)\n- Custom OpenApiException instead of HttpRequestException [134](https://github.com/fsprojects/SwaggerProvider/pull/134)\n\n#### 0.10.0-beta10 - November 6, 2019\n\n- Support REST convention with pluralized entities in mode with IgnoreOperationId=true [#121](https://github.com/fsprojects/SwaggerProvider/pull/121)\n- Fixed null refs in optional headers [#123](https://github.com/fsprojects/SwaggerProvider/pull/123)\n\n#### 0.10.0-beta09 - November 5, 2019\n\n- TP parameter names are unified [#129](https://github.com/fsprojects/SwaggerProvider/pull/129)\n\n#### 0.10.0-beta08 - November 3, 2019\n\n- Migration to new Type Provider SDK [#88](https://github.com/fsprojects/SwaggerProvider/pull/88) [#125](https://github.com/fsprojects/SwaggerProvider/pull/125)\n- SwaggerParser moved to runtime assembly (and exposed as API to library users) - [#90](https://github.com/fsprojects/SwaggerProvider/pull/90)\n- Added runtime dependency on YamlDotNet\n- Removed dependency on FSharp.Data/JsonValue (replaced by JSON.NET)\n- Added full-init constructor for provided types [#91](https://github.com/fsprojects/SwaggerProvider/pull/91)\n- Option/Nullable types for not required properties [#93](https://github.com/fsprojects/SwaggerProvider/pull/93)\n- `Http.fs` is moved to `SwaggerProvider.Runtime.dll` and `nicePascalName` applied to provided types, because FSI cannot load types with special characters in name (like `[` and `]`) - fix for [#94](https://github.com/fsprojects/SwaggerProvider/issues/94)\n- Provide namespaces as nested types [#96](https://github.com/fsprojects/SwaggerProvider/issues/96)\n- Added ability to generate multiple clients (one per controller) This feature is turned off by default and is controlled by `IgnoreControllerPrefix` parameter [#45](https://github.com/fsprojects/SwaggerProvider/issues/45#issuecomment-240554229)\n- Supported parsing of schemas with inheritance in types defined inside operation parameters\n- Added Async & Task-based calls for the Operations [#21](https://github.com/fsprojects/SwaggerProvider/issues/21)\n- Do not reference design-time assembly when install from nuget [#104](https://github.com/fsprojects/SwaggerProvider/pull/104)\n- Migration to `HttpClient`-based communication [#105](https://github.com/fsprojects/SwaggerProvider/pull/105) [#100](https://github.com/fsprojects/SwaggerProvider/issues/100)\n- Fixed null reference in query params [#126](https://github.com/fsprojects/SwaggerProvider/issues/126)\n- OpenApiClientProvider [#117](https://github.com/fsprojects/SwaggerProvider/pull/117)\n\n#### 0.8.2 - January 19, 2017\n\n- Fix probing locations [#97](https://github.com/fsprojects/SwaggerProvider/pull/97)\n\n#### 0.8.1 - August 21, 2017\n\n- Removed caching and dependency on FSharp.Configuration context [#84](https://github.com/fsprojects/SwaggerProvider/issues/84)\n\n#### 0.8.0 - August 8, 2017\n\n- Better support for optional parameters [#82](https://github.com/fsprojects/SwaggerProvider/issues/82)\n\n#### 0.7.1 - June 1, 2017\n\n- Newtonsoft.Json v10.0.2\n\n#### 0.7.0 - May 26, 2017\n\n- Supported Mono 5.0.1.1\n\n#### 0.6.1 - April 15, 2017\n\n- `ToString` is overridden for each generated type [#52](https://github.com/fsprojects/SwaggerProvider/issues/52)\n- Removed reference from `Swagger.Runtime.dll` to `YamlDotNet.dll`\n\n#### 0.6.0 - April 13, 2017\n\n- Supported `allOf` composition with `properties` definition in the same SchemaObject - <https://github.com/fsprojects/SwaggerProvider/issues/72>\n- Supported wrappers around primitive types - <https://github.com/APIs-guru/openapi-directory/issues/98>\n- No runtime dependency on YamlDotNet\n- NuGet dependency on FSharp.Core\n\n#### 0.5.7 - March 12, 2017\n\n- Improved URL construction [#66](https://github.com/fsprojects/SwaggerProvider/pull/66)\n\n#### 0.5.6 - August 31, 2016\n\n- Added NTLM auth for schema request [#50](https://github.com/fsprojects/SwaggerProvider/issues/50)\n\n#### 0.5.5 - August 20, 2016\n\n- Allow to configure protocol together with host name [#41](https://github.com/fsprojects/SwaggerProvider/issues/41)\n\n#### 0.5.4 - August 19, 2016\n\n- FIXED: SwaggerProvider and byte array [#46](https://github.com/fsprojects/SwaggerProvider/issues/46)\n\n#### 0.5.3 - July 10, 2016\n\n- Supported Newtonsoft.Json v9.0.1\n- FIXED: props and fields name collision during quotes compilation [#38](https://github.com/fsprojects/SwaggerProvider/pull/38)\n\n#### 0.5.2 - June 23, 2016\n\n- FIXED: 201 status codes should be used as a return type for operations [#34](https://github.com/fsprojects/SwaggerProvider/issues/34)\n\n#### 0.5.1 - April 30, 2016\n\n- FIXED: Collisions in provided type names [#27](https://github.com/fsprojects/SwaggerProvider/issues/27)\n\n#### 0.5.0 - April 19, 2016\n\n- BREAKING CHANGE: Instance methods for provided operations with configurable `Host`, `Headers` and `modifiable web requests`\n- Configurable operation name (`IgnoreOperationId` parameter)\n- Support of unordered type definitions in schema (for Azure APIs)\n- Allow for custom headers per-request [#22](https://github.com/fsprojects/SwaggerProvider/issues/22)\n- Migration to `FsUnitTyped` + better testing\n\n#### 0.4.0 - April 10, 2016\n\n- Added support of anonymous types generations - <https://github.com/fsprojects/SwaggerProvider/pull/24>\n- Added support of recursively dependent type definitions\n- Added support of `$refs` in DefinitionProperty - <https://github.com/fsprojects/SwaggerProvider/issues/23>\n- Added support of operations without `operationId`\n- Better XML docs\n\n#### 0.3.6 - April 2 2016\n\n- Updated JSON.NET version up to v8.0.3\n- Added support of model composition in path's response schema\n- Added support of composite types like (\"type\": [ \"string\", \"null\" ])\n\n#### 0.3.5 - February 25 2016\n\n- Added ability to override Host property at runtime - <https://github.com/fsprojects/SwaggerProvider/issues/15>\n\n#### 0.3.4 - January 20 2016\n\n- Fixed generation of obsolete provided methods - <https://github.com/fsprojects/FSharp.TypeProviders.StarterPack/issues/70>\n\n#### 0.3.3 - January 18 2016\n\n- Fixed code generation for PetStore schema (Removed deprecated attributes from methods)\n- Updated JSON.NET version up to v8.0.2\n\n#### 0.3.2 - December 23 2015\n\n- Migration to .NET 4.5\n\n#### 0.3.1 - December 23 2015\n\n- Fixed docs and bug in `SwaggerProvider.fsx`\n\n#### 0.3.0 - December 22 2015\n\n- Added support of schemes in YAML format\n\n#### 0.2.0 - December 13 2015\n\n- `AssemblyResolve` handler that resolve location of 3rd party dependencies\n- Added dependencies on `Newtonsoft.Json` NuGet package\n\n#### 0.1.3-beta - December 7 2015\n\n- Bug fixes\n\n#### 0.1.2-beta - November 22 2015\n\n- Fixed bug in the query builder for POST and PUT requests\n- Added tests for PUT & DELETE requests\n\n#### 0.1.1-beta - November 19 2015\n\n- Supported serialization of basic data types for passing in query\n- Fixed bugs in query builder logic\n- Added support of nice names for provided parameters\n- Added support of JSON serialization for properties with nice names\n- Auto Content-Type:application/json header to POST queries when it is supported\n- Fixed bug in float compilation\n- Added communication tests for data transferring to the server\n\n#### 0.1.0-beta - November 17 2015\n\n- Improved speed: Added caching for generated types\n- Improved support of Swashbuckle generated schemas\n- Fixed bug in compilation to IL\n- Fixed bug in POST calls (Content-Length is set to 0)\n- Fixed bug in definition type names beatification\n- Fixed type coerce bug in provided methods\n- Fixed NuGet package\n- Added Swashbuckle.OWIN.API Server with REST API and communication/deserialization tests\n\n#### 0.0.5-alpha - November 16 2015\n\n- Added support of object composition\n\n#### 0.0.4-alpha - November 13 2015\n\n- Added support of Dictionaries\n- Added tests for all samples from Swagger specification\n\n#### 0.0.3-alpha - November 12 2015\n\n- Implemented new Swagger JSON schema parser\n- Added tests for parsing 200+ real-world Swagger schemas\n\n#### 0.0.2-alpha - November 03 2015 (Delegate)\n\n- Added instantiation of Swagger Definitions\n- Added invocation of Swagger Operations\n- Added global HTTP header option to the Swagger Provider constructor\n\n#### 0.0.1-alpha - April 20 2015 (Sergey Tihon)\n\n- Added Swagger Definition and Operations compilation\n- Initial release\n"
  },
  {
    "path": "docs/getting-started.md",
    "content": "# SwaggerProvider\n\n**SwaggerProvider** is an F# generative [Type Provider](https://learn.microsoft.com/en-us/dotnet/fsharp/tutorials/type-providers/) that auto-generates strongly-typed HTTP clients from [OpenAPI 3.0](https://swagger.io/specification/) and [Swagger 2.0](https://swagger.io/specification/v2/) schemas — no code generation step required.\n\nThe single provider, [OpenApiClientProvider](/OpenApiClientProvider), uses [Microsoft.OpenApi.Readers](https://www.nuget.org/packages/Microsoft.OpenApi.Readers/) to parse both OpenAPI and Swagger schemas in `JSON` and `YAML` formats, and works on `net8.0+`.\n\n## Getting Started\n\n### F# Interactive\n\nCreate a new F# script file (e.g. `openapi.fsx`) and paste:\n\n```fsharp\n#r \"nuget: SwaggerProvider\"\n\nopen SwaggerProvider\n\nlet [<Literal>] Schema = \"https://petstore.swagger.io/v2/swagger.json\"\ntype PetStore = OpenApiClientProvider<Schema>\n\nlet client = PetStore.Client()\n\nclient.GetInventory()\n|> Async.AwaitTask\n|> Async.RunSynchronously\n```\n\n### New Project\n\n```bash\ndotnet new console --name apiclient --language F#\ncd apiclient\ndotnet add package SwaggerProvider\n```\n\nReplace the content of `Program.fs` with:\n\n```fsharp\nopen SwaggerProvider\n\nlet [<Literal>] Schema = \"https://petstore.swagger.io/v2/swagger.json\"\ntype PetStore = OpenApiClientProvider<Schema>\n\n[<EntryPoint>]\nlet main argv =\n    let client = PetStore.Client()\n    client.GetInventory()\n    |> Async.AwaitTask\n    |> Async.RunSynchronously\n    |> printfn \"%O\"\n    0\n```\n\nThen build and run:\n\n```bash\ndotnet run\n```\n\nSee [OpenApiClientProvider](/OpenApiClientProvider) for full parameter documentation and [Customization](/Customization) for advanced scenarios.\n"
  },
  {
    "path": "docs/index.md",
    "content": "---\nlayout: home\nhero:\n  name: OpenAPI & Swagger F# Type Provider\n  tagline: Strongly-typed HTTP clients from OpenAPI 3.0 and Swagger 2.0 schemas in JSON and YAML formats.\n  image:\n    src: /files/img/landing.png\n    alt: SwaggerProvider\n  actions:\n    - theme: brand\n      text: Getting Started\n      link: /getting-started\n    - theme: alt\n      text: View on GitHub\n      link: https://github.com/fsprojects/SwaggerProvider\nfeatures:\n  - icon: \"\\u26A1\"\n    title: Compile-Time Types\n    details: Types are generated at compile time directly from live or local schema files — no separate codegen step needed.\n  - icon: \"\\uD83D\\uDD04\"\n    title: OpenAPI 3.0 & Swagger 2.0\n    details: Supports both specifications in JSON and YAML formats via Microsoft.OpenApi.\n  - icon: \"\\uD83D\\uDCE6\"\n    title: Works Everywhere\n    details: Use in F# scripts, .NET projects, and F# Interactive — with full IntelliSense and type-checking.\n  - icon: \"\\uD83D\\uDD12\"\n    title: SSRF Protection\n    details: Blocks HTTP and private IP addresses by default to prevent server-side request forgery attacks.\n  - icon: \"\\u23F3\"\n    title: CancellationToken Support\n    details: Every generated method accepts an optional CancellationToken for cancelling long-running requests.\n  - icon: \"\\uD83D\\uDD27\"\n    title: Fully Customizable\n    details: Bring your own HttpClient, DelegatingHandler, or override JSON serialization.\n---\n"
  },
  {
    "path": "docs/package.json",
    "content": "{\n  \"private\": true,\n  \"scripts\": {\n    \"docs:dev\": \"vitepress dev\",\n    \"docs:build\": \"vitepress build\",\n    \"docs:preview\": \"vitepress preview\"\n  },\n  \"devDependencies\": {\n    \"vitepress\": \"^1.6.3\"\n  }\n}\n"
  },
  {
    "path": "global.json",
    "content": "{\n  \"sdk\": {\n    \"version\": \"10.0.102\",\n    \"rollForward\": \"latestMinor\"\n  }\n}\n"
  },
  {
    "path": "paket.dependencies",
    "content": "version 9.0.2\nsource https://api.nuget.org/v3/index.json\nstorage: none\n\nnuget FSharp.Core ~> 8\nnuget System.Text.Json ~> 8\nnuget FSharp.SystemTextJson\nnuget Microsoft.OpenApi ~> 2 # https://github.com/microsoft/OpenAPI.NET/blob/main/CONTRIBUTING.md#branches-and-support-policy\nnuget Microsoft.OpenApi.YamlReader\nnuget NETStandard.Library.NETFramework\n\n# THis lines are used by Paket to get the latest version of the Type Provider SDK files\ngithub fsprojects/FSharp.TypeProviders.SDK src/ProvidedTypes.fsi\ngithub fsprojects/FSharp.TypeProviders.SDK src/ProvidedTypes.fs\n\ngithub fsprojects/FSharp.Data:main src/FSharp.Data.Runtime.Utilities/Pluralizer.fs\ngithub fsprojects/FSharp.Data:main src/FSharp.Data.Runtime.Utilities/NameUtils.fs\n\ngroup Server\n    source https://api.nuget.org/v3/index.json\n    framework: net10.0\n\n    nuget Microsoft.AspNetCore\n    nuget Microsoft.AspNetCore.Mvc\n    nuget Microsoft.AspNetCore.HttpsPolicy\n    nuget Swashbuckle.AspNetCore\n    nuget Microsoft.OpenApi ~> 2\n    nuget FSharp.Core\n    nuget System.Text.Json\n\n\ngroup Test\n    source https://api.nuget.org/v3/index.json\n    frameworks: net10.0\n\n    nuget FSharp.Compiler.Service\n    nuget FSharp.Core\n\n    nuget Microsoft.NET.Test.Sdk\n    nuget FsUnit.Xunit\n\n    nuget Microsoft.OpenApi ~> 2\n    nuget FSharp.SystemTextJson\n"
  },
  {
    "path": "src/Common/AssemblyInfo.fs",
    "content": "﻿// Auto-Generated by FAKE; do not edit\nnamespace System\nopen System.Reflection\n\n[<assembly: AssemblyTitleAttribute(\"SwaggerProvider\")>]\n[<assembly: AssemblyProductAttribute(\"SwaggerProvider\")>]\n[<assembly: AssemblyDescriptionAttribute(\"F# Type Provider for Swagger & Open API\")>]\n[<assembly: AssemblyVersionAttribute(\"4.0.0\")>]\n[<assembly: AssemblyFileVersionAttribute(\"4.0.0\")>]\ndo ()\n\nmodule internal AssemblyVersionInformation =\n    let [<Literal>] AssemblyTitle = \"SwaggerProvider\"\n    let [<Literal>] AssemblyProduct = \"SwaggerProvider\"\n    let [<Literal>] AssemblyDescription = \"F# Type Provider for Swagger & Open API\"\n    let [<Literal>] AssemblyVersion = \"4.0.0\"\n    let [<Literal>] AssemblyFileVersion = \"4.0.0\"\n"
  },
  {
    "path": "src/SwaggerProvider.DesignTime/Caching.fs",
    "content": "module SwaggerProvider.Caching\n\nopen System\nopen System.Collections.Concurrent\n\n// https://github.com/fsharp/FSharp.Data/blob/master/src/CommonRuntime/IO.fs\n\n#if LOGGING_ENABLED\n\nlet private logLock = obj()\nlet mutable private indentation = 0\n\nlet private appendToLogMultiple logFile lines =\n    lock logLock\n    <| fun () ->\n        let path = __SOURCE_DIRECTORY__ + \"/../../\" + logFile\n        use stream = File.Open(path, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)\n        use writer = new StreamWriter(stream)\n\n        for (line: string) in lines do\n            writer.WriteLine(line.Replace(\"\\r\", null).Replace(\"\\n\", \"\\\\n\"))\n\n        writer.Flush()\n\nlet private appendToLog logFile line =\n    appendToLogMultiple logFile [ line ]\n\nlet internal log str =\n#if TIMESTAMPS_IN_LOG\n    \"[\"\n    + DateTime.Now.TimeOfDay.ToString()\n    + \"] \"\n    + String(' ', indentation * 2)\n    + str\n#else\n    String(' ', indentation * 2) + str\n#endif\n    |> appendToLog \"log.txt\"\n\nlet internal logWithStackTrace(str: string) =\n    let stackTrace =\n        Environment.StackTrace.Split '\\n'\n        |> Seq.skip 3\n        |> Seq.truncate 5\n        |> Seq.map(fun s -> s.TrimEnd())\n        |> Seq.toList\n\n    str :: stackTrace |> appendToLogMultiple \"log.txt\"\n\nopen System.Diagnostics\nopen System.Threading\n\nlet internal logTime category (instance: string) =\n\n    log(sprintf \"%s %s\" category instance)\n    Interlocked.Increment &indentation |> ignore\n\n    let s = Stopwatch()\n    s.Start()\n\n    { new IDisposable with\n        member __.Dispose() =\n            s.Stop()\n            Interlocked.Decrement &indentation |> ignore\n            log(sprintf \"Finished %s [%dms]\" category s.ElapsedMilliseconds)\n            let instance = instance.Replace(\"\\r\", null).Replace(\"\\n\", \"\\\\n\")\n\n            sprintf \"%s|%s|%d\" category instance s.ElapsedMilliseconds\n            |> appendToLog \"log.csv\" }\n\n#else\n\nlet internal dummyDisposable =\n    { new IDisposable with\n        member _.Dispose() = () }\n\nlet inline internal log(_: string) = ()\nlet inline internal logWithStackTrace(_: string) = ()\n\nlet inline internal logTime (_: string) (_: string) =\n    dummyDisposable\n\n#endif\n\n// https://github.com/fsharp/FSharp.Data/blob/master/src/CommonRuntime/Caching.fs\n\ntype ICache<'TKey, 'TValue> =\n    abstract Set: key: 'TKey * value: 'TValue -> unit\n    abstract TryRetrieve: key: 'TKey * ?extendCacheExpiration: bool -> 'TValue option\n    abstract Remove: key: 'TKey -> unit\n    abstract GetOrAdd: key: 'TKey * valueFactory: (unit -> 'TValue) -> 'TValue\n\n/// Creates a cache that uses in-memory collection\nlet createInMemoryCache(expiration: TimeSpan) =\n    let dict = ConcurrentDictionary<'TKey_, 'TValue * DateTime>()\n\n    let rec invalidationFunction key =\n        async {\n            do! Async.Sleep(int expiration.TotalMilliseconds)\n\n            match dict.TryGetValue(key) with\n            | true, (_, timestamp) ->\n                if DateTime.UtcNow - timestamp >= expiration then\n                    match dict.TryRemove(key) with\n                    | true, _ -> log $\"Cache expired: {key}\"\n                    | _ -> ()\n                else\n                    do! invalidationFunction key\n            | _ -> ()\n        }\n\n    { new ICache<_, _> with\n        member _.Set(key, value) =\n            dict[key] <- (value, DateTime.UtcNow)\n            invalidationFunction key |> Async.Start\n\n        member x.TryRetrieve(key, ?extendCacheExpiration) =\n            match dict.TryGetValue(key) with\n            | true, (value, timestamp) when DateTime.UtcNow - timestamp < expiration ->\n                if extendCacheExpiration = Some true then\n                    dict[key] <- (value, DateTime.UtcNow)\n\n                Some value\n            | _ -> None\n\n        member _.Remove(key) =\n            match dict.TryRemove(key) with\n            | true, _ -> log $\"Explicitly removed from cache: {key}\"\n            | _ -> ()\n\n        member _.GetOrAdd(key, valueFactory) =\n            let mutable added = false\n\n            let res, _ =\n                dict.GetOrAdd(\n                    key,\n                    fun _ ->\n                        added <- true\n                        valueFactory(), DateTime.UtcNow\n                )\n\n            if added then\n                invalidationFunction key |> Async.Start\n\n            res }\n"
  },
  {
    "path": "src/SwaggerProvider.DesignTime/DefinitionCompiler.fs",
    "content": "namespace SwaggerProvider.Internal.Compilers\n\nopen System\nopen System.Reflection\nopen ProviderImplementation.ProvidedTypes\nopen UncheckedQuotations\nopen FSharp.Data.Runtime.NameUtils\nopen Swagger.Internal\nopen SwaggerProvider.Internal\nopen Microsoft.FSharp.Quotations\nopen Microsoft.OpenApi\n\ntype DefinitionPath =\n    { Namespace: string list\n      RequestedTypeName: string\n      ProvidedTypeNameCandidate: string }\n\n    static member DefinitionPrefix = \"#/components/schemas/\"\n\n    static member Parse(definition: string) =\n        let nsSeparator = '.'\n\n        if not <| definition.StartsWith DefinitionPath.DefinitionPrefix then\n            failwithf $\"Definition path ('%s{definition}') does not start with %s{DefinitionPath.DefinitionPrefix}\"\n\n        let definitionPath = definition.Substring DefinitionPath.DefinitionPrefix.Length\n\n        let rec getCharInTypeName ind =\n            if ind = definitionPath.Length then\n                ind - 1\n            elif\n                Char.IsLetterOrDigit definitionPath[ind]\n                || definitionPath[ind] = nsSeparator\n            then\n                getCharInTypeName(ind + 1)\n            else\n                ind\n\n        let lastDot = definitionPath.LastIndexOf(nsSeparator, getCharInTypeName 0)\n\n        if lastDot < 0 then\n            { Namespace = []\n              RequestedTypeName = definitionPath\n              ProvidedTypeNameCandidate = nicePascalName definitionPath }\n        else\n            let nsPath =\n                definitionPath.Substring(0, lastDot).Split([| nsSeparator |], StringSplitOptions.RemoveEmptyEntries)\n                |> List.ofArray\n\n            let tyName = definitionPath.Substring(lastDot + 1)\n\n            { Namespace = nsPath\n              RequestedTypeName = tyName\n              ProvidedTypeNameCandidate = nicePascalName tyName }\n\ntype NamespaceEntry =\n    | Reservation\n    | NameAlias\n    | ProvidedType of ProvidedTypeDefinition\n    | Namespace of NamespaceAbstraction\n    | NestedType of ProvidedTypeDefinition * NamespaceAbstraction\n\nand NamespaceAbstraction(name: string) =\n    let providedTys = Collections.Generic.Dictionary<string, NamespaceEntry>()\n\n    let updateReservation opName tyName updateFunc =\n        match providedTys.TryGetValue tyName with\n        | true, Reservation\n        | true, NameAlias -> updateFunc()\n        | false, _ -> failwithf $\"Cannot %s{opName} '%s{tyName}' because name was not reserved\"\n        | _, value -> failwithf $\"Cannot %s{opName} '%s{tyName}' because the slot is used by %A{value}\"\n\n    /// Namespace name\n    member _.Name = name\n\n    /// Generate unique name and reserve it for the type\n    member _.ReserveUniqueName namePref nameSuffix = // TODO: Strange signature - think more\n        let rec findUniq prefix i =\n            let newName = sprintf \"%s%s\" prefix (if i = 0 then \"\" else i.ToString())\n\n            if not <| providedTys.ContainsKey newName then\n                newName\n            else\n                findUniq prefix (i + 1)\n\n        let newName =\n            let pref =\n                if String.IsNullOrWhiteSpace nameSuffix then namePref\n                elif String.IsNullOrWhiteSpace namePref then nameSuffix\n                else $\"%s{namePref}_%s{nameSuffix}\"\n\n            findUniq pref 0\n\n        providedTys.Add(newName, Reservation)\n        newName\n\n    /// Release previously reserved name\n    member _.ReleaseNameReservation tyName =\n        updateReservation \"release the name\" tyName (fun () -> providedTys.Remove tyName |> ignore)\n\n    /// Mark type name as named alias for basic type\n    member _.MarkTypeAsNameAlias tyName =\n        updateReservation \"mark as Alias type\" tyName (fun () -> providedTys[tyName] <- NameAlias)\n\n    /// Associate ProvidedType with reserved type name\n    member _.RegisterType(tyName, ty: Type) =\n        match ty with\n        | :? ProvidedTypeDefinition as ty ->\n            match providedTys.TryGetValue tyName with\n            | true, Reservation -> providedTys[tyName] <- ProvidedType ty\n            | true, Namespace ns -> providedTys[tyName] <- NestedType(ty, ns)\n            | true, ProvidedType pTy when pTy.Name = tyName -> ()\n            | false, _ -> providedTys[tyName] <- ProvidedType ty\n            //failwithf \"Cannot register the type '%s' because name was not reserved\" tyName\n            | _, value -> failwithf $\"Cannot register the type '%s{tyName}' because the slot is used by %A{value}\"\n        | _ -> () // Do nothing, TP should not provide real types\n\n    /// Get or create sub-namespace\n    member _.GetOrCreateNamespace name =\n        match providedTys.TryGetValue name with\n        | true, Namespace ns -> ns\n        | true, NestedType(_, ns) -> ns\n        | true, ProvidedType ty ->\n            let ns = NamespaceAbstraction name\n            providedTys[name] <- NestedType(ty, ns)\n            ns\n        | false, _\n        | true, Reservation ->\n            let ns = NamespaceAbstraction name\n            providedTys[name] <- Namespace ns\n            ns\n        | true, value -> failwithf $\"Name collision, cannot create namespace '%s{name}' because it used by '%A{value}'\"\n\n    /// Resolve DefinitionPath according to current namespace\n    member this.Resolve(dPath: DefinitionPath) =\n        match dPath.Namespace with\n        | [] -> this, this.ReserveUniqueName dPath.RequestedTypeName \"\"\n        | name :: tail ->\n            let ns = this.GetOrCreateNamespace name\n            ns.Resolve { dPath with Namespace = tail }\n\n    /// Create Provided representation of Namespace\n    member _.GetProvidedTypes() =\n        List.ofSeq providedTys\n        |> List.choose(fun kv ->\n            match kv.Value with\n            | Reservation -> failwithf $\"Reservation without type found '%s{kv.Key}'. This is a bug in DefinitionCompiler\"\n            | NameAlias -> None\n            | ProvidedType ty -> Some ty\n            | Namespace ns ->\n                let types = ns.GetProvidedTypes()\n\n                if types.Length = 0 then\n                    None\n                else\n                    let nsTy = ProvidedTypeDefinition(ns.Name, Some typeof<obj>, isErased = false)\n\n                    nsTy.AddMember\n                    <| ProvidedConstructor([], invokeCode = (fun _ -> <@@ () @@>)) // hack\n\n                    nsTy.AddMembers <| types\n                    Some nsTy\n            | NestedType(ty, ns) ->\n                ty.AddMembers <| ns.GetProvidedTypes()\n                Some ty)\n\n/// Object for compiling definitions.\ntype DefinitionCompiler(schema: OpenApiDocument, provideNullable, useDateOnly: bool) as this =\n    let pathToSchema =\n        let dict = Collections.Generic.Dictionary<string, IOpenApiSchema>()\n\n        if not(isNull schema.Components) then\n            for kv in schema.Components.Schemas do\n                dict.Add(DefinitionPath.DefinitionPrefix + kv.Key, kv.Value)\n\n        dict\n\n    let pathToType = Collections.Generic.Dictionary<_, Type>()\n    let nsRoot = NamespaceAbstraction \"Root\"\n    let nsOps = nsRoot.GetOrCreateNamespace \"OperationTypes\"\n\n    // Cached once per DefinitionCompiler instance to avoid repeated reflection lookups\n    // when compiling large schemas with many object types.\n    let objToStringMethod = typeof<obj>.GetMethod(\"ToString\", [||])\n\n    let generateProperty (scope: UniqueNameGenerator) propName ty =\n        let propertyName = scope.MakeUnique <| nicePascalName propName\n\n        let providedField =\n            let fieldName = $\"_%c{Char.ToLower propertyName[0]}%s{propertyName.Substring 1}\"\n\n            ProvidedField(fieldName, ty)\n\n        let providedProperty =\n            ProvidedProperty(\n                propertyName,\n                ty,\n                getterCode =\n                    (function\n                    | [ this ] -> Expr.FieldGetUnchecked(this, providedField)\n                    | _ -> failwith \"invalid property getter params\"),\n                setterCode =\n                    (function\n                    | [ this; v ] -> Expr.FieldSetUnchecked(this, providedField, v)\n                    | _ -> failwith \"invalid property setter params\")\n            )\n\n        if propName <> propertyName then\n            // Override the serialized name by setting a Json-serialization attribute to control the name\n            providedProperty.AddCustomAttribute\n            <| RuntimeHelpers.getPropertyNameAttribute propName\n\n        providedField, providedProperty\n\n    let registerInNsAndInDef tyPath (ns: NamespaceAbstraction) (name, ty: Type) =\n        if not <| pathToType.ContainsKey tyPath then\n            pathToType.Add(tyPath, ty)\n        //else failwithf \"Second time compilation of type definition '%s'. This is a bug in DefinitionCompiler\" tyPath\n\n        match ty with\n        | :? ProvidedTypeDefinition as prTy -> ns.RegisterType(name, prTy)\n        | _ -> ()\n\n    let rec compileByPath(tyPath: string) : Type =\n        match pathToType.TryGetValue tyPath with\n        | true, ty -> ty\n        | false, _ ->\n            match pathToSchema.TryGetValue tyPath with\n            | true, def ->\n                let ns, tyName = tyPath |> DefinitionPath.Parse |> nsRoot.Resolve\n                let ty = compileBySchema ns tyName def true (registerInNsAndInDef tyPath ns) true\n                ty :> Type\n            | false, _ when tyPath.StartsWith DefinitionPath.DefinitionPrefix ->\n                failwithf $\"Cannot find definition '%s{tyPath}' in schema definitions %A{pathToType.Keys |> Seq.toArray}\"\n            | _ -> failwithf $\"Cannot find definition '%s{tyPath}' (references to relative documents are not supported yet)\"\n\n    and compileBySchema (ns: NamespaceAbstraction) tyName (schemaObj: IOpenApiSchema) isRequired registerNew fromByPathCompiler =\n        let compileNewObject() =\n            let inline toSeq x =\n                if isNull x then Seq.empty else x :> seq<_>\n\n            let properties = schemaObj.Properties |> toSeq\n            let allOf = schemaObj.AllOf |> toSeq\n\n            if Seq.isEmpty properties && Seq.isEmpty allOf then\n                if not <| isNull tyName then\n                    ns.MarkTypeAsNameAlias tyName\n\n                typeof<obj>\n            elif isNull tyName then\n                failwithf $\"Swagger provider does not support anonymous types: %A{schemaObj}\"\n            else\n                // Register every ProvidedTypeDefinition\n                let ty = ProvidedTypeDefinition(tyName, Some typeof<obj>, isErased = false)\n                registerNew(tyName, ty :> Type)\n\n                // Combine composite schemas\n                let schemaObjProperties =\n                    let getProps(s: IOpenApiSchema) =\n                        s.Properties |> toSeq\n\n                    match Seq.isEmpty allOf with\n                    | false -> allOf |> Seq.append [ schemaObj ] |> Seq.collect getProps\n                    | true -> getProps schemaObj\n\n\n                let schemaObjRequired =\n                    let getReq(s: IOpenApiSchema) =\n                        s.Required |> toSeq\n\n                    match Seq.isEmpty allOf with\n                    | false -> allOf |> Seq.append [ schemaObj ] |> Seq.collect getReq\n                    | true -> getReq schemaObj\n                    |> Set.ofSeq\n\n                // Helper to check if a schema has the Null type flag (OpenAPI 3.0 nullable)\n                let isSchemaNullable(schema: IOpenApiSchema) =\n                    not(isNull schema)\n                    && schema.Type.HasValue\n                    && schema.Type.Value.HasFlag(JsonSchemaType.Null)\n\n                // Generate fields and properties\n                let schemaObjPropertiesList = List.ofSeq schemaObjProperties\n\n                let members =\n                    let generateProperty = generateProperty(UniqueNameGenerator())\n\n                    schemaObjPropertiesList\n                    |> List.map(fun p ->\n                        let propName, propSchema = p.Key, p.Value\n\n                        if String.IsNullOrEmpty propName then\n                            failwithf $\"Property cannot be created with empty name. TypeName:%A{tyName}; SchemaObj:%A{schemaObj}\"\n\n                        // Check if the property is nullable (OpenAPI 3.0 nullable becomes Null type flag in 3.1)\n                        let isNullable = isSchemaNullable propSchema\n\n                        // A property is \"required\" for type generation if it's in the required list AND not nullable.\n                        // Nullable properties must be wrapped as Option<T>/Nullable<T> to represent null values,\n                        // even if they're in the required list (required + nullable means must be present but can be null).\n                        let isRequired = schemaObjRequired.Contains propName && not isNullable\n\n                        let pTy =\n                            compileBySchema ns (ns.ReserveUniqueName tyName (nicePascalName propName)) propSchema isRequired ns.RegisterType false\n\n                        let pField, pProp = generateProperty propName pTy\n\n                        let enumValuesDoc = XmlDoc.buildEnumDoc propSchema.Enum\n\n                        let propDoc =\n                            match\n                                propSchema.Description\n                                |> Option.ofObj\n                                |> Option.filter(String.IsNullOrWhiteSpace >> not),\n                                enumValuesDoc\n                            with\n                            | None, None -> null\n                            | Some d, None -> d\n                            | None, Some ev -> ev\n                            | Some d, Some ev -> $\"{d}\\n{ev}\"\n\n                        if not(isNull propDoc) then\n                            pProp.AddXmlDoc propDoc\n\n                        pField, pProp)\n\n                // Add fields and properties to type\n                ty.AddMembers\n                <| (members\n                    |> List.collect(fun (f, p) -> [ f :> MemberInfo; p :> MemberInfo ]))\n\n                // Add default constructor\n                ty.AddMember\n                <| ProvidedConstructor([], invokeCode = (fun _ -> <@@ () @@>))\n                // Add full-init constructor\n                let ctorParams, fields =\n                    let required, optional =\n                        List.zip schemaObjPropertiesList members\n                        |> List.partition(fun (x, _) ->\n                            let isNullable = isSchemaNullable x.Value\n                            schemaObjRequired.Contains x.Key && not isNullable)\n\n                    required @ optional\n                    |> List.map(fun (x, (f, p)) ->\n                        let paramName = niceCamelName p.Name\n                        let isNullable = isSchemaNullable x.Value\n\n                        let prParam =\n                            if schemaObjRequired.Contains x.Key && not isNullable then\n                                ProvidedParameter(paramName, f.FieldType)\n                            else\n                                let paramDefaultValue = this.GetDefaultValue f.FieldType\n                                ProvidedParameter(paramName, f.FieldType, false, paramDefaultValue)\n\n                        prParam, f)\n                    |> List.unzip\n\n                ty.AddMember\n                <| ProvidedConstructor(\n                    ctorParams,\n                    invokeCode =\n                        fun args ->\n                            let this, args =\n                                match args with\n                                | x :: xs -> x, xs\n                                | _ -> failwith \"Wrong constructor arguments\"\n\n                            List.zip args fields\n                            |> List.map(fun (arg, f) -> Expr.FieldSetUnchecked(this, f, arg))\n                            |> List.rev\n                            |> List.fold (fun a b -> Expr.Sequential(a, b)) <@@ () @@>\n                )\n\n                // Override `.ToString()`\n                // Delegates to the shared RuntimeHelpers.formatObject helper so that\n                // each generated type's method body is a single static call (O(1) IL).\n                let toStr =\n                    ProvidedMethod(\n                        \"ToString\",\n                        [],\n                        typeof<string>,\n                        isStatic = false,\n                        invokeCode =\n                            fun args ->\n                                let this = args[0]\n                                let thisObj = Expr.Coerce(this, typeof<obj>)\n                                <@@ RuntimeHelpers.formatObject(%%thisObj: obj) @@>\n                    )\n\n                toStr.SetMethodAttrs(MethodAttributes.Public ||| MethodAttributes.Virtual)\n\n                ty.DefineMethodOverride(toStr, objToStringMethod)\n                ty.AddMember <| toStr\n\n                ty :> Type\n\n        let resolvedType =\n            // If schemaObj.Type is missing, but allOf/oneOf/anyOf is present with one subschema, use that\n            if\n                not schemaObj.Type.HasValue\n                && not(isNull schemaObj.AllOf)\n                && schemaObj.AllOf.Count = 1\n            then\n                let firstAllOf = schemaObj.AllOf.[0]\n\n                if not(isNull firstAllOf) && firstAllOf.Type.HasValue then\n                    Some firstAllOf.Type.Value\n                else\n                    None\n            else if\n                not schemaObj.Type.HasValue\n                && not(isNull schemaObj.OneOf)\n                && schemaObj.OneOf.Count = 1\n            then\n                let firstOneOf = schemaObj.OneOf.[0]\n\n                if not(isNull firstOneOf) && firstOneOf.Type.HasValue then\n                    Some firstOneOf.Type.Value\n                else\n                    None\n            else if\n                not schemaObj.Type.HasValue\n                && not(isNull schemaObj.AnyOf)\n                && schemaObj.AnyOf.Count = 1\n            then\n                let firstAnyOf = schemaObj.AnyOf.[0]\n\n                if not(isNull firstAnyOf) && firstAnyOf.Type.HasValue then\n                    Some firstAnyOf.Type.Value\n                else\n                    None\n            else if schemaObj.Type.HasValue then\n                Some schemaObj.Type.Value\n            else\n                None\n\n        // Helper to get full definition path from reference ID\n        let getFullPath(refId: string) =\n            if refId.StartsWith DefinitionPath.DefinitionPrefix then\n                refId\n            else\n                DefinitionPath.DefinitionPrefix + refId\n\n        let tyType =\n            match schemaObj with\n            | null -> failwithf $\"Cannot compile object '%s{tyName}' when schema is 'null'\"\n            | :? OpenApiSchemaReference as schemaRef when\n                not(isNull schemaRef.Reference)\n                && not <| schemaRef.Reference.Id.EndsWith tyName\n                ->\n                ns.ReleaseNameReservation tyName\n                compileByPath <| getFullPath schemaRef.Reference.Id\n            | :? OpenApiSchemaReference as schemaRef when not(isNull schemaRef.Reference) ->\n                let fullPath = getFullPath schemaRef.Reference.Id\n\n                match pathToType.TryGetValue fullPath with\n                | true, ty ->\n                    ns.ReleaseNameReservation tyName\n                    ty\n                | _ -> failwithf $\"Cannot compile object '%s{tyName}' based on unresolved reference '{schemaRef.Reference.Id}'\"\n            // TODO: fail on external references\n            //| _ when schemaObj.Reference <> null && tyName <> schemaObj.Reference.Id ->\n            | _ when\n                resolvedType = Some JsonSchemaType.Object\n                && not(isNull schemaObj.AdditionalProperties)\n                && (schemaObj.Properties |> isNull || schemaObj.Properties.Count = 0)\n                -> // Dictionary (only when no explicit properties are also defined)\n                ns.ReleaseNameReservation tyName\n                let elSchema = schemaObj.AdditionalProperties\n\n                let elTy =\n                    compileBySchema ns (ns.ReserveUniqueName tyName \"Item\") elSchema true ns.RegisterType false\n\n                ProvidedTypeBuilder.MakeGenericType(typedefof<Map<string, obj>>, [ typeof<string>; elTy ])\n            // Handle allOf with single reference (e.g., nullable reference to another type)\n            | _ when\n                not(isNull schemaObj.AllOf)\n                && schemaObj.AllOf.Count = 1\n                && (schemaObj.Properties |> isNull || schemaObj.Properties.Count = 0)\n                ->\n                match schemaObj.AllOf.[0] with\n                | :? OpenApiSchemaReference as schemaRef when not(isNull schemaRef.Reference) ->\n                    ns.ReleaseNameReservation tyName\n                    compileByPath <| getFullPath schemaRef.Reference.Id\n                | _ -> compileNewObject()\n            // Handle oneOf with single reference (resolves to the referenced type)\n            | _ when\n                not(isNull schemaObj.OneOf)\n                && schemaObj.OneOf.Count = 1\n                && (schemaObj.Properties |> isNull || schemaObj.Properties.Count = 0)\n                ->\n                match schemaObj.OneOf.[0] with\n                | :? OpenApiSchemaReference as schemaRef when not(isNull schemaRef.Reference) ->\n                    ns.ReleaseNameReservation tyName\n                    compileByPath <| getFullPath schemaRef.Reference.Id\n                | _ -> compileNewObject()\n            // Handle anyOf with single reference (resolves to the referenced type)\n            | _ when\n                not(isNull schemaObj.AnyOf)\n                && schemaObj.AnyOf.Count = 1\n                && (schemaObj.Properties |> isNull || schemaObj.Properties.Count = 0)\n                ->\n                match schemaObj.AnyOf.[0] with\n                | :? OpenApiSchemaReference as schemaRef when not(isNull schemaRef.Reference) ->\n                    ns.ReleaseNameReservation tyName\n                    compileByPath <| getFullPath schemaRef.Reference.Id\n                | _ -> compileNewObject()\n            | _ when\n                resolvedType.IsNone\n                || resolvedType = Some JsonSchemaType.Object\n                || resolvedType = Some JsonSchemaType.Null\n                || resolvedType = Some(JsonSchemaType.Null ||| JsonSchemaType.Object)\n                ->\n                compileNewObject()\n            | _ ->\n                ns.MarkTypeAsNameAlias tyName\n\n                match resolvedType with\n                | None -> failwithf $\"Schema type is not specified for '%s{tyName}'\"\n                | Some t ->\n                    let (|HasFlag|_|) (flag: JsonSchemaType) (value: JsonSchemaType) =\n                        if value.HasFlag flag then Some() else None\n\n                    match t, schemaObj.Format with\n                    | HasFlag JsonSchemaType.Boolean, _ -> typeof<bool>\n                    | HasFlag JsonSchemaType.Integer, \"int64\" -> typeof<int64>\n                    | HasFlag JsonSchemaType.Integer, _ -> typeof<int32>\n                    | HasFlag JsonSchemaType.Number, \"double\" -> typeof<double>\n                    | HasFlag JsonSchemaType.Number, _ -> typeof<float32>\n                    | HasFlag JsonSchemaType.String, \"byte\" -> typeof<byte>.MakeArrayType 1\n                    | HasFlag JsonSchemaType.String, \"binary\" ->\n                        // for `application/octet-stream` request body\n                        // for `multipart/form-data` : https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#considerations-for-file-uploads\n                        typeof<IO.Stream>\n                    | HasFlag JsonSchemaType.String, \"date\" ->\n                        // Use DateOnly only when the target runtime supports it (.NET 6+).\n                        // We check useDateOnly (derived from cfg.SystemRuntimeAssemblyVersion) rather than\n                        // probing the design-time host process, which may differ from the consumer's runtime.\n                        if useDateOnly then\n                            System.Type.GetType(\"System.DateOnly\")\n                            |> Option.ofObj\n                            |> Option.defaultValue typeof<DateTimeOffset>\n                        else\n                            typeof<DateTimeOffset>\n                    | HasFlag JsonSchemaType.String, \"date-time\" -> typeof<DateTimeOffset>\n                    | HasFlag JsonSchemaType.String, \"time\" ->\n                        // Use TimeOnly only when the target runtime supports it (.NET 6+).\n                        // useDateOnly is true for net6+ targets — TimeOnly was added in the same release.\n                        if useDateOnly then\n                            System.Type.GetType(\"System.TimeOnly\")\n                            |> Option.ofObj\n                            |> Option.defaultValue typeof<string>\n                        else\n                            typeof<string>\n                    | HasFlag JsonSchemaType.String, \"uuid\" -> typeof<Guid>\n                    | HasFlag JsonSchemaType.String, _ -> typeof<string>\n                    | HasFlag JsonSchemaType.Array, _ ->\n                        ns.ReleaseNameReservation tyName\n                        let elSchema = schemaObj.Items\n\n                        let elTy =\n                            compileBySchema ns (ns.ReserveUniqueName tyName \"Item\") elSchema true ns.RegisterType false\n\n                        elTy.MakeArrayType 1\n                    | ty, format -> failwithf $\"Type %s{tyName}(%A{ty},%s{format}) should be caught by other match statement (%A{resolvedType})\"\n\n        if fromByPathCompiler then\n            registerNew(tyName, tyType)\n\n        if isRequired then\n            tyType\n        else if tyType.IsValueType then\n            let baseGenTy =\n                if provideNullable then\n                    typedefof<Nullable<int>>\n                else\n                    typedefof<Option<obj>>\n\n            ProvidedTypeBuilder.MakeGenericType(baseGenTy, [ tyType ])\n        else if\n            not provideNullable\n            && (tyType = typeof<string>\n                || tyType = typeof<IO.Stream>\n                || tyType = typeof<byte>.MakeArrayType(1))\n        then\n            // Scalar reference types (string, Stream, byte[*]) are wrapped in Option<T> when non-required,\n            // unless the caller prefers Nullable semantics — in that case the CLR reference-type nullability\n            // is relied upon directly (Nullable<T> is not valid for reference types).\n            // Collection types (arrays, maps) and provided object types are left unwrapped — they\n            // naturally express absence via null/empty.\n            ProvidedTypeBuilder.MakeGenericType(typedefof<Option<obj>>, [ tyType ])\n        else\n            tyType\n\n    // Precompile types defined in the `definitions` part of the schema\n    do\n        pathToSchema.Keys\n        |> Seq.sort\n        |> Seq.iter(fun key -> compileByPath key |> ignore)\n\n    /// Namespace that represent provided type space\n    member _.Namespace = nsRoot\n\n    /// Method that allow OperationCompiler to resolve object reference, compile basic and anonymous types.\n    member _.CompileTy opName tyUseSuffix ty required =\n        compileBySchema nsOps (nsOps.ReserveUniqueName opName tyUseSuffix) ty required nsOps.RegisterType false\n\n    /// Default value for optional parameters\n    member _.GetDefaultValue _ =\n        // This method is only used for not required types\n        // Reference types, Option<T> and Nullable<T>\n        null\n"
  },
  {
    "path": "src/SwaggerProvider.DesignTime/OperationCompiler.fs",
    "content": "namespace SwaggerProvider.Internal.Compilers\n\nopen System\nopen System.Collections.Generic\nopen System.Net.Http\nopen System.Text.Json\nopen System.Text.RegularExpressions\n\nopen Microsoft.FSharp.Quotations\nopen Microsoft.FSharp.Quotations.ExprShape\nopen Microsoft.OpenApi\nopen ProviderImplementation.ProvidedTypes\nopen FSharp.Data.Runtime.NameUtils\n\nopen SwaggerProvider.Internal\nopen Swagger\nopen Swagger.Internal\n\n// We cannot use record here\n// TP cannot load DTC with OpenApiPathItem/OperationType props (from 3rd party assembly)\n// Probably related to https://github.com/fsprojects/FSharp.TypeProviders.SDK/issues/274\ntype ApiCall = string * IOpenApiPathItem * HttpMethod\n\n[<Struct>]\ntype PayloadType =\n    | NoData\n    | AppJson\n    | AppOctetStream\n    | AppFormUrlEncoded\n    | MultipartFormData\n    | TextPlain\n\n    override x.ToString() =\n        match x with\n        | NoData -> \"noData\"\n        | AppJson -> \"json\"\n        | AppOctetStream -> \"octetStream\"\n        | AppFormUrlEncoded -> \"formUrlEncoded\"\n        | MultipartFormData -> \"formData\"\n        | TextPlain -> \"textPlain\"\n\n    member x.ToMediaType() =\n        match x with\n        | NoData -> null\n        | AppJson -> MediaTypes.ApplicationJson\n        | AppOctetStream -> MediaTypes.ApplicationOctetStream\n        | AppFormUrlEncoded -> MediaTypes.ApplicationFormUrlEncoded\n        | MultipartFormData -> MediaTypes.MultipartFormData\n        | TextPlain -> MediaTypes.TextPlain\n\n    static member Parse =\n        function\n        | \"noData\" -> NoData\n        | \"json\" -> AppJson\n        | \"octetStream\" -> AppOctetStream\n        | \"formUrlEncoded\" -> AppFormUrlEncoded\n        | \"formData\" -> MultipartFormData\n        | \"textPlain\" -> TextPlain\n        | name -> failwithf $\"Payload '%s{name}' is not supported\"\n\n/// Object for compiling operations.\ntype OperationCompiler(schema: OpenApiDocument, defCompiler: DefinitionCompiler, ignoreControllerPrefix, ignoreOperationId, asAsync: bool) =\n    let compileOperation (providedMethodName: string) (apiCall: ApiCall) =\n        let path, pathItem, opTy = apiCall\n        let operation = pathItem.Operations[opTy]\n\n        if String.IsNullOrWhiteSpace providedMethodName then\n            failwithf $\"Operation name could not be empty. See '%s{path}/%A{opTy}'\"\n\n        let unambiguousName(par: IOpenApiParameter) =\n            $\"%s{par.Name}In%A{par.In}\"\n\n        let openApiParameters =\n            [ if not(isNull pathItem.Parameters) then\n                  yield! pathItem.Parameters\n              if not(isNull operation.Parameters) then\n                  yield! operation.Parameters ]\n\n        let (|MediaType|_|) contentType (content: IDictionary<string, OpenApiMediaType>) =\n            if isNull content then\n                None\n            else\n                match content.TryGetValue contentType with\n                | true, mediaTyObj -> Some mediaTyObj\n                | _ -> None\n\n        let (|TextReturn|_|)(input: string) =\n            if input.StartsWith(\"text/\") then Some(input) else None\n\n        let (|TextMediaType|_|)(content: IDictionary<string, OpenApiMediaType>) =\n            if isNull content then\n                None\n            else\n                content.Keys |> Seq.tryPick (|TextReturn|_|)\n\n        let (|NoMediaType|_|)(content: IDictionary<string, OpenApiMediaType>) =\n            if isNull content || content.Count = 0 then Some() else None\n\n        let payloadTy, payloadMime, parameters, ctArgIndex =\n            /// handles de-duplicating Swagger parameter names if the same parameter name\n            /// appears in multiple locations in a given operation definition.\n            let uniqueParamName usedNames (param: IOpenApiParameter) =\n                let name = niceCamelName param.Name\n\n                if usedNames |> Set.contains name then\n                    let fqName = unambiguousName param\n                    Set.add fqName usedNames, fqName\n                else\n                    Set.add name usedNames, name\n\n            let bodyFormatAndParam =\n                if isNull operation.RequestBody then\n                    None\n                else\n                    let formatAndParam (payloadType: PayloadType) schema =\n                        let p =\n                            OpenApiParameter(\n                                In = Nullable<_>(), // In Body parameter indicator\n                                Name = payloadType.ToString(),\n                                Schema = schema,\n                                Required = true //operation.RequestBody.Required\n                            )\n                            :> IOpenApiParameter\n\n                        Some(payloadType, p)\n\n                    match operation.RequestBody.Content with\n                    | MediaType MediaTypes.ApplicationJson mediaTyObj -> formatAndParam AppJson mediaTyObj.Schema\n                    | MediaType MediaTypes.ApplicationOctetStream mediaTyObj -> formatAndParam AppOctetStream mediaTyObj.Schema\n                    | MediaType MediaTypes.MultipartFormData mediaTyObj -> formatAndParam MultipartFormData mediaTyObj.Schema\n                    | MediaType MediaTypes.ApplicationFormUrlEncoded mediaTyObj -> formatAndParam AppFormUrlEncoded mediaTyObj.Schema\n                    | MediaType MediaTypes.TextPlain mediaTyObj -> formatAndParam TextPlain mediaTyObj.Schema\n                    | NoMediaType ->\n                        // Assume that server treat it as `applicationJson`\n                        let defSchema = OpenApiSchema() // todo: we need to test it\n                        formatAndParam NoData defSchema\n                    | _ ->\n                        let keys = operation.RequestBody.Content.Keys |> String.concat \";\"\n\n                        let operationId =\n                            if String.IsNullOrWhiteSpace(operation.OperationId) then\n                                $\"%s{path}/%A{opTy}\"\n                            else\n                                operation.OperationId\n\n                        failwithf $\"Operation '%s{operationId}' does not contain supported media types [%A{keys}]\"\n\n            let payloadTy = bodyFormatAndParam |> Option.map fst |> Option.defaultValue NoData\n\n            let requiredOpenApiParams, optionalOpenApiParams =\n                [ yield! openApiParameters\n                  if bodyFormatAndParam.IsSome then\n                      yield bodyFormatAndParam.Value |> snd ]\n                |> List.distinctBy(fun op -> op.Name, op.In)\n                |> List.partition(_.Required)\n\n            let buildProvidedParameters usedNames (paramList: IOpenApiParameter list) =\n                ((usedNames, []), paramList)\n                ||> List.fold(fun (names, parameters) current ->\n                    let names, paramName = uniqueParamName names current\n\n                    let paramType =\n                        defCompiler.CompileTy providedMethodName paramName current.Schema current.Required\n\n                    let providedParam =\n                        if current.Required then\n                            ProvidedParameter(paramName, paramType)\n                        else\n                            let paramDefaultValue = defCompiler.GetDefaultValue paramType\n                            ProvidedParameter(paramName, paramType, false, paramDefaultValue)\n\n                    (names, providedParam :: parameters))\n                |> fun (finalNames, ps) -> finalNames, List.rev ps\n\n            let namesAfterRequired, requiredProvidedParams =\n                buildProvidedParameters Set.empty requiredOpenApiParams\n\n            let _, optionalProvidedParams =\n                buildProvidedParameters namesAfterRequired optionalOpenApiParams\n\n            let ctArgIndex, parameters =\n                let scope = UniqueNameGenerator()\n\n                (requiredProvidedParams @ optionalProvidedParams)\n                |> List.iter(fun p -> scope.MakeUnique p.Name |> ignore)\n\n                let ctName = scope.MakeUnique \"cancellationToken\"\n\n                let ctParam =\n                    ProvidedParameter(ctName, typeof<Threading.CancellationToken>, false, null)\n                // CT is appended last to preserve existing positional argument calls\n                let ctArgIndex =\n                    List.length requiredProvidedParams\n                    + List.length optionalProvidedParams\n\n                ctArgIndex, requiredProvidedParams @ optionalProvidedParams @ [ ctParam ]\n\n            payloadTy, payloadTy.ToMediaType(), parameters, ctArgIndex\n\n        // find the inner type value\n        let retMimeAndTy =\n            let okResponse =\n                operation.Responses\n                |> Seq.tryFind(fun resp -> resp.Key = \"200\")\n                |> Option.orElseWith(fun () ->\n                    operation.Responses\n                    |> Seq.tryFind(fun resp ->\n                        let (ok, code) = Int32.TryParse(resp.Key)\n                        ok && code >= 200 && code < 300))\n                |> Option.orElseWith(fun () -> operation.Responses |> Seq.tryFind(fun resp -> resp.Key = \"default\"))\n\n            okResponse\n            |> Option.bind(fun kv ->\n                match kv.Value.Content with\n                | MediaType MediaTypes.ApplicationJson mediaTy ->\n                    let ty =\n                        if isNull mediaTy.Schema then\n                            typeof<unit>\n                        else\n                            defCompiler.CompileTy providedMethodName \"Response\" mediaTy.Schema true\n\n                    Some(MediaTypes.ApplicationJson, ty)\n                | MediaType MediaTypes.ApplicationOctetStream mediaTy ->\n                    let ty =\n                        if isNull mediaTy.Schema then\n                            typeof<IO.Stream>\n                        else\n                            defCompiler.CompileTy providedMethodName \"Response\" mediaTy.Schema true\n\n                    Some(MediaTypes.ApplicationOctetStream, ty)\n                | TextMediaType mediaTy -> Some(mediaTy, typeof<string>)\n                | _ -> None)\n\n        let retMime = retMimeAndTy |> Option.map fst |> Option.defaultValue null\n        let retTy = retMimeAndTy |> Option.map snd\n\n        let overallReturnType =\n            let wrapperTy =\n                if asAsync then\n                    typedefof<Async<unit>>\n                else\n                    typedefof<System.Threading.Tasks.Task<unit>>\n\n            let genericTy = retTy |> Option.defaultValue typeof<unit>\n            ProvidedTypeBuilder.MakeGenericType(wrapperTy, [ genericTy ])\n\n        let errorCodes, errorDescriptions =\n            operation.Responses\n            |> Seq.choose(fun x ->\n                let code = x.Key\n\n                if code.StartsWith(\"2\") then\n                    None\n                else\n                    Option.ofObj x.Value.Description\n                    |> Option.map(fun desc -> (code, desc)))\n            |> Seq.toArray\n            |> Array.unzip\n\n        let m =\n            ProvidedMethod(\n                providedMethodName,\n                parameters,\n                overallReturnType,\n                invokeCode =\n                    fun args ->\n                        let this =\n                            Expr.Coerce(args[0], typeof<ProvidedApiClientBase>)\n                            |> Expr.Cast<ProvidedApiClientBase>\n\n                        let httpMethod = opTy.ToString()\n\n                        let headers =\n                            <@\n                                [ if not(isNull payloadMime) then\n                                      \"Content-Type\", payloadMime\n                                  if not(isNull retMime) then\n                                      \"Accept\", retMime ]\n                            @>\n\n                        // Locates parameters matching the arguments\n                        let mutable payloadExp = None\n\n                        // CT is inserted at ctArgIndex. Extract it by position.\n                        let apiArgs, ct =\n                            let allArgs = List.tail args // skip `this`\n                            let ctArg = List.item ctArgIndex allArgs\n\n                            let apiArgs =\n                                allArgs\n                                |> List.indexed\n                                |> List.choose(fun (i, a) -> if i = ctArgIndex then None else Some a)\n\n                            apiArgs, Expr.Cast<Threading.CancellationToken>(ctArg)\n\n                        let parameters =\n                            apiArgs\n                            |> List.choose (function\n                                | ShapeVar sVar as expr ->\n                                    let param =\n                                        openApiParameters\n                                        |> Seq.tryFind(fun x ->\n                                            // pain point: we have to make sure that the set of names we search for here are the same as the set of names generated when we make `parameters` above\n                                            let baseName = niceCamelName x.Name\n                                            baseName = sVar.Name || (unambiguousName x) = sVar.Name)\n\n                                    match param with\n                                    | Some(par) -> Some(par, expr)\n                                    | _ ->\n                                        let payloadType = PayloadType.Parse sVar.Name\n\n                                        match payloadExp with\n                                        | None ->\n                                            payloadExp <- Some(payloadType, Expr.Coerce(expr, typeof<obj>))\n                                            None\n                                        | Some _ ->\n                                            failwithf\n                                                $\"More than one payload parameter is specified: '%A{payloadType}' & '%A{payloadExp.Value |> fst}'\"\n                                | _ -> failwithf $\"Function '%s{providedMethodName}' does not support functions as arguments.\")\n\n                        // Makes argument a string // TODO: Make body an exception\n                        let coerceString exp =\n                            let obj = Expr.Coerce(exp, typeof<obj>) |> Expr.Cast<obj>\n                            <@ let x = (%obj) in RuntimeHelpers.toParam x @>\n\n                        let rec coerceQueryString name expr =\n                            let obj = Expr.Coerce(expr, typeof<obj>)\n                            <@ let o = (%%obj: obj) in RuntimeHelpers.toQueryParams name o (%this) @>\n\n                        // Partitions arguments based on their locations\n                        let path, queryParams, headers =\n                            let path, queryParams, headers, cookies =\n                                ((<@ path @>, <@ [] @>, headers, <@ [] @>), parameters)\n                                ||> List.fold(fun (path, query, headers, cookies) (param: IOpenApiParameter, valueExpr) ->\n                                    if param.In.HasValue then\n                                        let name = param.Name\n\n                                        match param.In.Value with\n                                        | ParameterLocation.Path ->\n                                            let value = coerceString valueExpr\n                                            let pattern = $\"{{%s{name}}}\"\n                                            // Escape $ in the replacement to avoid regex back-reference interpretation ($0, $& etc.)\n                                            let escaped = <@ (%value).Replace(\"$\", \"$$\") @>\n                                            let path' = <@ Regex.Replace(%path, pattern, %escaped) @>\n                                            (path', query, headers, cookies)\n                                        | ParameterLocation.Query ->\n                                            let listValues = coerceQueryString name valueExpr\n                                            let query' = <@ List.append %query %listValues @>\n                                            (path, query', headers, cookies)\n                                        | ParameterLocation.Header ->\n                                            let value = coerceString valueExpr\n                                            let headers' = <@ (name, %value) :: (%headers) @>\n                                            (path, query, headers', cookies)\n                                        | ParameterLocation.Cookie ->\n                                            let value = coerceString valueExpr\n                                            let cookies' = <@ (name, %value) :: (%cookies) @>\n                                            (path, query, headers, cookies')\n                                        | x -> failwithf $\"Unsupported parameter location '%A{x}'\"\n                                    else\n                                        failwithf \"This should not happen, payload expression is already parsed\")\n\n                            let headers' =\n                                <@\n                                    let cookieHeader =\n                                        %cookies\n                                        |> Seq.filter(snd >> isNull >> not)\n                                        |> Seq.map(fun (name, value) -> String.Format(\"{0}={1}\", name, value))\n                                        |> String.concat \";\"\n\n                                    (\"Cookie\", cookieHeader) :: (%headers)\n                                @>\n\n                            (path, queryParams, headers')\n\n\n                        let httpRequestMessage =\n                            <@\n                                let msg = RuntimeHelpers.createHttpRequest httpMethod %path %queryParams\n                                RuntimeHelpers.fillHeaders msg %headers\n                                msg\n                            @>\n\n                        let httpRequestMessageWithPayload =\n                            match payloadExp with\n                            | None -> httpRequestMessage\n                            | Some(NoData, _) -> httpRequestMessage\n                            | Some(AppJson, body) ->\n                                <@\n                                    let valueStr = (%this).Serialize(%%body: obj)\n                                    let msg = %httpRequestMessage\n                                    msg.Content <- RuntimeHelpers.toStringContent(valueStr)\n                                    msg\n                                @>\n                            | Some(AppOctetStream, streamObj) ->\n                                <@\n                                    let stream: obj = %%streamObj\n                                    let msg = %httpRequestMessage\n                                    msg.Content <- RuntimeHelpers.toStreamContent(stream, payloadMime)\n                                    msg\n                                @>\n                            | Some(MultipartFormData, formData) ->\n                                <@\n                                    let data = RuntimeHelpers.getPropertyValues(%%formData: obj)\n                                    let msg = %httpRequestMessage\n                                    msg.Content <- RuntimeHelpers.toMultipartFormDataContent data\n                                    msg\n                                @>\n                            | Some(AppFormUrlEncoded, formUrlEncoded) ->\n                                <@\n                                    let data = RuntimeHelpers.getPropertyValues(%%formUrlEncoded: obj)\n                                    let msg = %httpRequestMessage\n                                    msg.Content <- RuntimeHelpers.toFormUrlEncodedContent(data)\n                                    msg\n                                @>\n                            | Some(TextPlain, textObj) ->\n                                <@\n                                    let text = (%%textObj: obj).ToString()\n                                    let msg = %httpRequestMessage\n                                    msg.Content <- RuntimeHelpers.toTextContent(text)\n                                    msg\n                                @>\n\n                        let action =\n                            <@ (%this).CallAsync(%httpRequestMessageWithPayload, errorCodes, errorDescriptions, %ct) @>\n\n                        let responseObj =\n                            let innerReturnType = defaultArg retTy null\n\n                            <@\n                                let x = %action\n                                let ct = %ct\n\n                                task {\n                                    let! response = x\n                                    let! content = RuntimeHelpers.readContentAsString response.Content ct\n                                    return (%this).Deserialize(content, innerReturnType)\n                                }\n                            @>\n\n                        let responseStream =\n                            <@\n                                let x = %action\n                                let ct = %ct\n\n                                task {\n                                    let! response = x\n                                    let! data = RuntimeHelpers.readContentAsStream response.Content ct\n                                    return data\n                                }\n                            @>\n\n                        let responseString =\n                            <@\n                                let x = %action\n                                let ct = %ct\n\n                                task {\n                                    let! response = x\n                                    let! data = RuntimeHelpers.readContentAsString response.Content ct\n                                    return data\n                                }\n                            @>\n\n                        let responseUnit =\n                            <@\n                                let x = %action\n\n                                task {\n                                    let! _ = x\n                                    return ()\n                                }\n                            @>\n\n                        // if we're an async method, then we can just return the above, coerced to the overallReturnType.\n                        // if we're not async, then run that^ through Async.RunSynchronously before doing the coercion.\n                        if not asAsync then\n                            match retTy with\n                            | None -> responseUnit.Raw\n                            | Some t when t = typeof<IO.Stream> -> <@ %responseStream @>.Raw\n                            | Some t ->\n                                match retMime with\n                                | TextReturn _ -> <@ %responseString @>.Raw\n                                | _ -> Expr.Coerce(<@ RuntimeHelpers.taskCast t %responseObj @>, overallReturnType)\n                        else\n                            let awaitTask t =\n                                <@ Async.AwaitTask(%t) @>\n\n                            match retTy with\n                            | None -> (awaitTask responseUnit).Raw\n                            | Some t when t = typeof<IO.Stream> -> <@ %(awaitTask responseStream) @>.Raw\n                            | Some t ->\n                                match retMime with\n                                | TextReturn _ -> <@ %(awaitTask responseString) @>.Raw\n                                | _ -> Expr.Coerce(<@ RuntimeHelpers.asyncCast t %(awaitTask responseObj) @>, overallReturnType)\n            )\n\n        let xmlDoc =\n            let buildParamDesc(p: IOpenApiParameter) =\n                let enumDoc =\n                    if not(isNull p.Schema) then\n                        XmlDoc.buildEnumDoc p.Schema.Enum\n                    else\n                        None\n\n                match\n                    p.Description\n                    |> Option.ofObj\n                    |> Option.filter(String.IsNullOrWhiteSpace >> not),\n                    enumDoc\n                with\n                | None, None -> null\n                | Some d, None -> d\n                | None, Some ev -> ev\n                | Some d, Some ev -> $\"{d}\\n{ev}\"\n\n            let paramDescriptions =\n                [ for p in openApiParameters -> niceCamelName p.Name, buildParamDesc p\n                  if not(isNull operation.RequestBody) then\n                      yield niceCamelName(payloadTy.ToString()), operation.RequestBody.Description ]\n\n            XmlDoc.buildXmlDoc operation.Summary operation.Description paramDescriptions\n\n        if not(String.IsNullOrEmpty xmlDoc) then\n            m.AddXmlDoc xmlDoc\n\n        if operation.Deprecated then\n            m.AddObsoleteAttribute(\"Operation is deprecated\", false)\n\n        m\n\n    static member GetMethodNameCandidate (apiCall: ApiCall) skipLength ignoreOperationId =\n        let path, pathItem, opTy = apiCall\n        let operation = pathItem.Operations[opTy]\n\n        if ignoreOperationId || String.IsNullOrWhiteSpace(operation.OperationId) then\n            let _, pathParts =\n                (path.Split([| '/' |], StringSplitOptions.RemoveEmptyEntries), (false, []))\n                ||> Array.foldBack(fun x (nextIsArg, pathParts) ->\n                    if x.StartsWith(\"{\") then\n                        (true, pathParts)\n                    else\n                        (false, (if nextIsArg then singularize x else x) :: pathParts))\n\n            String.Join(\"_\", opTy.ToString() :: pathParts)\n        else\n            operation.OperationId.Substring(skipLength)\n        |> nicePascalName\n\n    member _.CompileProvidedClients(ns: NamespaceAbstraction) =\n        let defaultHost =\n            if schema.Servers.Count = 0 then\n                null\n            else\n                schema.Servers[0].Url\n\n        let baseTy = Some typeof<ProvidedApiClientBase>\n        let baseCtor = baseTy.Value.GetConstructors().[0]\n\n        List.ofSeq schema.Paths\n        |> List.collect(fun path ->\n            // if path.Value.UnresolvedReference then\n            //     failwith\n            //         $\"TP does not support unresolved paths / external references. Path '%s{path.Key}' refer to '%s{path.Value.Reference.ReferenceV3}'\"\n\n            let safeSeq s =\n                if isNull s then Seq.empty else s\n\n            List.ofSeq(safeSeq path.Value.Operations)\n            |> List.map(fun kv -> path.Key, path.Value, kv.Key))\n\n        |> List.groupBy(fun (_, pathItem, opTy) ->\n            if ignoreControllerPrefix then\n                String.Empty //\n            else\n                let op = pathItem.Operations[opTy]\n\n                if isNull op.OperationId then\n                    String.Empty\n                else\n                    let ind = op.OperationId.IndexOf(\"_\")\n\n                    if ind <= 0 then\n                        String.Empty\n                    else\n                        op.OperationId.Substring(0, ind))\n        |> List.iter(fun (clientName, operations) ->\n            let tyName = ns.ReserveUniqueName clientName \"Client\"\n\n            let ty =\n                ProvidedTypeDefinition(tyName, baseTy, isErased = false, isSealed = false, hideObjectMethods = true)\n\n            ns.RegisterType(tyName, ty)\n\n            if not <| String.IsNullOrEmpty clientName then\n                ty.AddXmlDoc $\"Client for '%s{clientName}_*' operations\"\n\n            [ ProvidedConstructor(\n                  [ ProvidedParameter(\"httpClient\", typeof<HttpClient>)\n                    ProvidedParameter(\"options\", typeof<JsonSerializerOptions>) ],\n                  invokeCode =\n                      (fun args ->\n                          match args with\n                          | [] -> failwith \"Generated constructors should always pass the instance as the first argument!\"\n                          | _ -> <@@ () @@>),\n                  BaseConstructorCall = fun args -> (baseCtor, args)\n              )\n              ProvidedConstructor(\n                  [ ProvidedParameter(\"httpClient\", typeof<HttpClient>) ],\n                  invokeCode =\n                      (fun args ->\n                          match args with\n                          | [] -> failwith \"Generated constructors should always pass the instance as the first argument!\"\n                          | _ -> <@@ () @@>),\n                  BaseConstructorCall =\n                      fun args ->\n                          let args' = args @ [ <@@ null @@> ]\n                          (baseCtor, args')\n              )\n              ProvidedConstructor(\n                  [ ProvidedParameter(\"options\", typeof<JsonSerializerOptions>) ],\n                  invokeCode = (fun _ -> <@@ () @@>),\n                  BaseConstructorCall =\n                      fun args ->\n                          let httpClient = <@ RuntimeHelpers.getDefaultHttpClient defaultHost @> :> Expr\n\n                          let args' =\n                              match args with\n                              | [ instance; options ] -> [ instance; httpClient; options ]\n                              | _ -> failwithf $\"unexpected arguments received %A{args}\"\n\n                          (baseCtor, args')\n              )\n              ProvidedConstructor(\n                  [],\n                  invokeCode = (fun _ -> <@@ () @@>),\n                  BaseConstructorCall =\n                      fun args ->\n                          let httpClient = <@ RuntimeHelpers.getDefaultHttpClient defaultHost @> :> Expr\n\n                          let args' =\n                              match args with\n                              | [ instance ] -> [ instance; httpClient; <@@ null @@> ]\n                              | _ -> failwithf $\"unexpected arguments received %A{args}\"\n\n                          (baseCtor, args')\n              ) ]\n            |> ty.AddMembers\n\n            let methodNameScope = UniqueNameGenerator()\n\n            operations\n            |> List.map(fun op ->\n                let skipLength =\n                    if String.IsNullOrEmpty clientName then\n                        0\n                    else\n                        clientName.Length + 1\n\n                let name = OperationCompiler.GetMethodNameCandidate op skipLength ignoreOperationId\n                let uniqueName = methodNameScope.MakeUnique name\n                compileOperation uniqueName op)\n            |> ty.AddMembers)\n"
  },
  {
    "path": "src/SwaggerProvider.DesignTime/Properties/launchSettings.json",
    "content": "{\n  \"profiles\": {\n    \"SwaggerProvider.DesignTime\": {\n      \"commandName\": \"Project\"\n    },\n    \"DebugTP\": {\n      \"commandName\": \"Executable\",\n      \"executablePath\": \"C:\\\\Program Files (x86)\\\\Microsoft Visual Studio\\\\2019\\\\Community\\\\Common7\\\\IDE\\\\devenv.exe\",\n      \"commandLineArgs\": \"SwaggerProvider.TestsAndDocs.sln\",\n      \"workingDirectory\": \"Y:\\\\SwaggerProvider\"\n    }\n  }\n}"
  },
  {
    "path": "src/SwaggerProvider.DesignTime/Provider.OpenApiClient.fs",
    "content": "namespace SwaggerProvider\n\nopen System\nopen System.Reflection\nopen Microsoft.OpenApi.Reader\nopen ProviderImplementation.ProvidedTypes\nopen Microsoft.FSharp.Core.CompilerServices\nopen Microsoft.FSharp.Quotations\nopen Microsoft.FSharp.Reflection\nopen Swagger\nopen SwaggerProvider.Internal\nopen SwaggerProvider.Internal.Compilers\n\nmodule OpenApiCache =\n    let providedTypes = Caching.createInMemoryCache(TimeSpan.FromMinutes 5.0)\n\n/// The Open API Provider.\n[<TypeProvider>]\ntype public OpenApiClientTypeProvider(cfg: TypeProviderConfig) as this =\n    inherit\n        TypeProviderForNamespaces(\n            cfg,\n            assemblyReplacementMap = [ (\"SwaggerProvider.DesignTime\", \"SwaggerProvider.Runtime\") ],\n            addDefaultProbingLocation = true\n        )\n\n    let ns = \"SwaggerProvider\"\n    let asm = Assembly.GetExecutingAssembly()\n\n    // check we contain a copy of runtime files, and are not referencing the runtime DLL\n    do assert (typeof<ProvidedApiClientBase>.Assembly.GetName().Name = asm.GetName().Name)\n\n    let buildStringListExpr(items: string list) : Expr =\n        let cases = FSharpType.GetUnionCases typeof<string list>\n        let nilCase = cases |> Array.find(fun c -> c.Name = \"Empty\")\n        let consCase = cases |> Array.find(fun c -> c.Name = \"Cons\")\n        let nil = Expr.NewUnionCase(nilCase, [])\n\n        List.foldBack (fun (s: string) acc -> Expr.NewUnionCase(consCase, [ Expr.Value(s, typeof<string>); acc ])) items nil\n\n    let myParamType =\n        let t =\n            ProvidedTypeDefinition(asm, ns, \"OpenApiClientProvider\", Some typeof<obj>, isErased = false)\n\n        let staticParams =\n            [ ProvidedStaticParameter(\"Schema\", typeof<string>)\n              ProvidedStaticParameter(\"IgnoreOperationId\", typeof<bool>, false)\n              ProvidedStaticParameter(\"IgnoreControllerPrefix\", typeof<bool>, true)\n              ProvidedStaticParameter(\"PreferNullable\", typeof<bool>, false)\n              ProvidedStaticParameter(\"PreferAsync\", typeof<bool>, false)\n              ProvidedStaticParameter(\"SsrfProtection\", typeof<bool>, true)\n              ProvidedStaticParameter(\"IgnoreParseErrors\", typeof<bool>, false) ]\n\n        t.AddXmlDoc\n            \"\"\"<summary>Statically typed OpenAPI provider.</summary>\n               <param name='Schema'>Url or Path to OpenAPI schema file.</param>\n               <param name='IgnoreOperationId'>Do not use `operationsId` and generate method names using `path` only. Default value `false`.</param>\n               <param name='IgnoreControllerPrefix'>Do not parse `operationsId` as `<controllerName>_<methodName>` and generate one client class for all operations. Default value `true`.</param>\n               <param name='PreferNullable'>Provide `Nullable<_>` for not required properties, instead of `Option<_>`. Defaults value `false`.</param>\n               <param name='PreferAsync'>Generate async actions of type `Async<'T>` instead of `Task<'T>`. Defaults value `false`.</param>\n               <param name='SsrfProtection'>Enable SSRF protection (blocks HTTP and localhost). Set to false for development/testing. Default value `true`.</param>\n               <param name='IgnoreParseErrors'>Continue generating the provider even when the OpenAPI parser reports validation errors (e.g. vendor extensions or non-strictly-compliant schemas). Warnings are printed to stderr. Default value `false`.</param>\"\"\"\n\n        t.DefineStaticParameters(\n            staticParams,\n            fun typeName args ->\n                let schemaPathRaw = unbox<string> args.[0]\n                let ignoreOperationId = unbox<bool> args.[1]\n                let ignoreControllerPrefix = unbox<bool> args.[2]\n                let preferNullable = unbox<bool> args.[3]\n                let preferAsync = unbox<bool> args.[4]\n                let ssrfProtection = unbox<bool> args.[5]\n                let ignoreParseErrors = unbox<bool> args.[6]\n\n                // Cache key includes cfg.RuntimeAssembly, cfg.ResolutionFolder, and cfg.SystemRuntimeAssemblyVersion\n                // to differentiate between different TFM builds (same approach as FSharp.Data)\n                // See: https://github.com/fsprojects/FSharp.Data/blob/main/src/FSharp.Data.DesignTime/CommonProviderImplementation/Helpers.fs\n                let cacheKey =\n                    (schemaPathRaw,\n                     ignoreOperationId,\n                     ignoreControllerPrefix,\n                     preferNullable,\n                     preferAsync,\n                     ssrfProtection,\n                     ignoreParseErrors,\n                     cfg.RuntimeAssembly,\n                     cfg.ResolutionFolder,\n                     cfg.SystemRuntimeAssemblyVersion)\n                    |> sprintf \"%A\"\n\n                let addCache() =\n                    lazy\n                        let schemaData =\n                            SchemaReader.readSchemaPath (not ssrfProtection) \"\" cfg.ResolutionFolder schemaPathRaw\n                            |> Async.RunSynchronously\n\n                        let settings = OpenApiReaderSettings()\n                        settings.AddYamlReader()\n\n                        let readResult =\n                            Microsoft.OpenApi.OpenApiDocument.Parse(schemaData, settings = settings)\n\n                        let schema, diagnostic = (readResult.Document, readResult.Diagnostic)\n\n                        if diagnostic.Errors.Count > 0 then\n                            if ignoreParseErrors then\n                                diagnostic.Errors\n                                |> Seq.iter(fun e -> eprintfn \"SwaggerProvider warning: %s @ %s\" e.Message e.Pointer)\n                            else\n                                failwithf\n                                    \"Schema parse errors:\\n%s\"\n                                    (diagnostic.Errors\n                                     |> Seq.map(fun e -> $\"%s{e.Message} @ %s{e.Pointer}\")\n                                     |> String.concat \"\\n\")\n\n                        let parseErrors =\n                            diagnostic.Errors\n                            |> Seq.map(fun e -> $\"%s{e.Message} @ %s{e.Pointer}\")\n                            |> Seq.toList\n\n                        let useDateOnly = cfg.SystemRuntimeAssemblyVersion.Major >= 6\n\n                        let defCompiler = DefinitionCompiler(schema, preferNullable, useDateOnly)\n\n                        let opCompiler =\n                            OperationCompiler(schema, defCompiler, ignoreControllerPrefix, ignoreOperationId, preferAsync)\n\n                        opCompiler.CompileProvidedClients(defCompiler.Namespace)\n                        let tys = defCompiler.Namespace.GetProvidedTypes()\n\n                        let tempAsm = ProvidedAssembly()\n\n                        let ty =\n                            ProvidedTypeDefinition(tempAsm, ns, typeName, Some typeof<obj>, isErased = false, hideObjectMethods = true)\n\n                        ty.AddXmlDoc(\"OpenAPI Provider for \" + schemaPathRaw)\n                        ty.AddMembers tys\n\n                        let errProp =\n                            ProvidedProperty(\n                                \"SchemaReaderErrors\",\n                                typeof<string list>,\n                                isStatic = true,\n                                getterCode = fun _ -> buildStringListExpr parseErrors\n                            )\n\n                        errProp.AddXmlDoc\n                            \"List of OpenAPI parse errors tolerated by this provider instance. Non-empty only when IgnoreParseErrors=true and the schema has validation issues.\"\n\n                        ty.AddMember errProp\n                        tempAsm.AddTypes [ ty ]\n\n                        ty\n\n                try\n                    OpenApiCache.providedTypes.GetOrAdd(cacheKey, addCache).Value\n                with _ ->\n                    OpenApiCache.providedTypes.Remove(cacheKey) |> ignore\n\n                    OpenApiCache.providedTypes.GetOrAdd(cacheKey, addCache).Value\n        )\n\n        t\n\n    do this.AddNamespace(ns, [ myParamType ])\n"
  },
  {
    "path": "src/SwaggerProvider.DesignTime/SwaggerProvider.DesignTime.fsproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Library</OutputType>\n    <TargetFrameworks>netstandard2.0;net10.0</TargetFrameworks>\n    <Optimize>true</Optimize>\n    <Tailcalls>true</Tailcalls>\n    <DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>\n    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>\n    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>\n    <OutputPath>..\\SwaggerProvider.Runtime\\bin\\$(Configuration)\\typeproviders\\fsharp41\\</OutputPath>\n    <!-- This allows the component to execute from 'bin' directory during build -->\n    <ProduceReferenceAssembly>false</ProduceReferenceAssembly>\n    <DebugType>portable</DebugType>\n    <DebugSymbols>true</DebugSymbols>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"..\\..\\paket-files\\fsprojects\\FSharp.Data\\src\\FSharp.Data.Runtime.Utilities\\Pluralizer.fs\">\n      <Paket>True</Paket>\n      <Link>paket-files/Pluralizer.fs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\paket-files\\fsprojects\\FSharp.Data\\src\\FSharp.Data.Runtime.Utilities\\NameUtils.fs\">\n      <Paket>True</Paket>\n      <Link>paket-files/NameUtils.fs</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\paket-files\\fsprojects\\FSharp.TypeProviders.SDK\\src\\ProvidedTypes.fsi\">\n      <Paket>True</Paket>\n      <Link>paket-files/ProvidedTypes.fsi</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\paket-files\\fsprojects\\FSharp.TypeProviders.SDK\\src\\ProvidedTypes.fs\">\n      <Paket>True</Paket>\n      <Link>paket-files/ProvidedTypes.fs</Link>\n    </Compile>\n    <Compile Include=\"..\\SwaggerProvider.Runtime\\ProvidedApiClientBase.fs\">\n      <Link>ProvidedApiClientBase.fs</Link>\n    </Compile>\n    <Compile Include=\"..\\SwaggerProvider.Runtime\\Exception.fs\" />\n    <Compile Include=\"..\\SwaggerProvider.Runtime\\RuntimeHelpers.fs\" />\n    <Compile Include=\"..\\Common\\AssemblyInfo.fs\">\n      <Link>AssemblyInfo.fs</Link>\n    </Compile>\n    <Compile Include=\"Utils.fs\" />\n    <Compile Include=\"DefinitionCompiler.fs\" />\n    <Compile Include=\"OperationCompiler.fs\" />\n    <Compile Include=\"Caching.fs\" />\n    <Compile Include=\"Provider.OpenApiClient.fs\" />\n    <None Include=\"paket.references\" />\n  </ItemGroup>\n  <ItemGroup>\n    <PackageReference Update=\"FSharp.Core\" Version=\"8.0.403\">\n      <!-- This excludes FSharp.Core.xml and FSharp.Core.resources.dll while referencing the right FSharp.Core.dll version -->\n      <ExcludeAssets>runtime;contentFiles</ExcludeAssets>\n    </PackageReference>\n  </ItemGroup>\n  <Import Project=\"..\\..\\.paket\\Paket.Restore.targets\" />\n</Project>\n"
  },
  {
    "path": "src/SwaggerProvider.DesignTime/Utils.fs",
    "content": "namespace SwaggerProvider.Internal\n\nmodule SchemaReader =\n    open System\n    open System.IO\n    open System.Net\n    open System.Net.Http\n    open System.Runtime.InteropServices\n\n    /// Checks if a path starts with relative markers like ../ or ./\n    let private startsWithRelativeMarker(path: string) =\n        let normalized = path.Replace('\\\\', '/')\n        normalized.StartsWith(\"/../\") || normalized.StartsWith(\"/./\")\n\n    /// Determines if a path is truly absolute (not just rooted)\n    /// On Windows: C:\\path is absolute, \\path is rooted (combine with drive), but \\..\\path is relative\n    /// On Unix: /path is absolute, but /../path or /./path are relative\n    let private isTrulyAbsolute(path: string) =\n        if not(Path.IsPathRooted path) then\n            false\n        else\n            let root = Path.GetPathRoot path\n\n            if String.IsNullOrEmpty root then\n                false\n            // On Windows, a truly absolute path has a volume (C:\\, D:\\, etc.)\n            // Paths like \\path or /path are rooted but may be relative if they start with .. or .\n            else if RuntimeInformation.IsOSPlatform(OSPlatform.Windows) then\n                if root.Contains(\":\") then\n                    // Has drive letter, truly absolute\n                    true\n                else\n                    // Rooted but no drive - check if it starts with relative markers\n                    // \\..\\ or /../ are relative, not absolute\n                    not(startsWithRelativeMarker path)\n            else\n                // On Unix, a rooted path is absolute if it starts with /\n                // BUT: if the path starts with /../ or /./, it's relative\n                root = \"/\" && not(startsWithRelativeMarker path)\n\n    let getAbsolutePath (resolutionFolder: string) (schemaPathRaw: string) =\n        if String.IsNullOrWhiteSpace(schemaPathRaw) then\n            invalidArg \"schemaPathRaw\" \"The schema path cannot be null or empty.\"\n\n        let uri = Uri(schemaPathRaw, UriKind.RelativeOrAbsolute)\n\n        if uri.IsAbsoluteUri then\n            schemaPathRaw\n        elif isTrulyAbsolute schemaPathRaw then\n            // Truly absolute path (e.g., C:\\path on Windows, /path on Unix)\n            // On Windows, if path is like \\path without drive, combine with drive from resolutionFolder\n            if\n                RuntimeInformation.IsOSPlatform(OSPlatform.Windows)\n                && not(Path.GetPathRoot(schemaPathRaw).Contains(\":\"))\n            then\n                Path.Combine(Path.GetPathRoot resolutionFolder, schemaPathRaw.Substring 1)\n            else\n                schemaPathRaw\n        else\n            Path.Combine(resolutionFolder, schemaPathRaw)\n\n    /// Validates URL to prevent SSRF attacks\n    /// Pass ignoreSsrfProtection=true to disable validation (for development/testing only)\n    let validateSchemaUrl (ignoreSsrfProtection: bool) (url: Uri) =\n        if ignoreSsrfProtection then\n            () // Skip validation when explicitly disabled\n        else\n            // Only allow HTTPS for security (prevent MITM)\n            if url.Scheme <> \"https\" then\n                failwithf \"Only HTTPS URLs are allowed for remote schemas. Got: %s (set SsrfProtection=false for development)\" url.Scheme\n\n            // Prevent access to private IP ranges (SSRF protection)\n            let host = url.Host.ToLowerInvariant()\n\n            // Block localhost and loopback, and private IP ranges using proper IP address parsing\n            let isIp, ipAddr = IPAddress.TryParse host\n\n            if isIp then\n                // Check address family first to apply family-specific rules\n                match ipAddr.AddressFamily with\n                | Sockets.AddressFamily.InterNetwork ->\n                    // IPv4 validation\n                    let bytes = ipAddr.GetAddressBytes()\n\n                    // Check for IPv4 loopback or unspecified address\n                    if IPAddress.IsLoopback ipAddr || ipAddr.ToString() = \"0.0.0.0\" then\n                        failwithf \"Cannot fetch schemas from localhost/loopback addresses: %s (set SsrfProtection=false for development)\" host\n\n                    // Check for IPv4 private ranges\n                    let isPrivateIPv4 =\n                        match bytes with\n                        // 10.0.0.0/8\n                        | [| 10uy; _; _; _ |] -> true\n                        // 172.16.0.0/12\n                        | [| 172uy; secondByte; _; _ |] when secondByte >= 16uy && secondByte <= 31uy -> true\n                        // 192.168.0.0/16\n                        | [| 192uy; 168uy; _; _ |] -> true\n                        // Link-local 169.254.0.0/16\n                        | [| 169uy; 254uy; _; _ |] -> true\n                        | _ -> false\n\n                    if isPrivateIPv4 then\n                        failwithf \"Cannot fetch schemas from private or link-local IP addresses: %s (set SsrfProtection=false for development)\" host\n\n                | Sockets.AddressFamily.InterNetworkV6 ->\n                    // IPv6 validation\n                    let bytes = ipAddr.GetAddressBytes()\n\n                    // Check for IPv6 private or reserved ranges\n                    let isPrivateIPv6 =\n                        match bytes with\n                        // Loopback (::1)\n                        | [| 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 1uy |] -> true\n                        // Unspecified address (::)\n                        | [| 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy; 0uy |] -> true\n                        // Link-local (fe80::/10) - first byte 0xFE, second byte 0x80-0xBF\n                        | [| 0xFEuy; secondByte; _; _; _; _; _; _; _; _; _; _; _; _; _; _ |] when secondByte >= 0x80uy && secondByte <= 0xBFuy -> true\n                        // Unique Local Unicast (fc00::/7) - first byte 0xFC or 0xFD\n                        | [| 0xFCuy; _; _; _; _; _; _; _; _; _; _; _; _; _; _; _ |] -> true\n                        | [| 0xFDuy; _; _; _; _; _; _; _; _; _; _; _; _; _; _; _ |] -> true\n                        // Multicast (ff00::/8) - first byte 0xFF\n                        | [| 0xFFuy; _; _; _; _; _; _; _; _; _; _; _; _; _; _; _ |] -> true\n                        | _ -> false\n\n                    if isPrivateIPv6 then\n                        failwithf \"Cannot fetch schemas from private or loopback IPv6 addresses: %s (set SsrfProtection=false for development)\" host\n\n                | _ ->\n                    // Unsupported address family\n                    failwithf \"Cannot fetch schemas from unsupported IP address type: %s (set SsrfProtection=false for development)\" host\n            // Block localhost by hostname\n            else if host = \"localhost\" then\n                failwithf \"Cannot fetch schemas from localhost/loopback addresses: %s (set SsrfProtection=false for development)\" host\n\n    let validateContentType (ignoreSsrfProtection: bool) (contentType: Headers.MediaTypeHeaderValue) =\n        // Skip validation if SSRF protection is disabled\n        if ignoreSsrfProtection || isNull contentType then\n            ()\n        else\n            let mediaType = contentType.MediaType.ToLowerInvariant()\n\n            // Allow only Content-Types that are valid for OpenAPI/Swagger schema files\n            // This prevents SSRF attacks where an attacker tries to make the provider\n            // fetch and process non-schema files (HTML, images, binaries, etc.)\n            let isValidSchemaContentType =\n                // JSON formats\n                mediaType = \"application/json\"\n                || mediaType.StartsWith \"application/json;\"\n                // YAML formats\n                || mediaType = \"application/yaml\"\n                || mediaType = \"application/x-yaml\"\n                || mediaType = \"text/yaml\"\n                || mediaType = \"text/x-yaml\"\n                || mediaType.StartsWith \"application/yaml;\"\n                || mediaType.StartsWith \"application/x-yaml;\"\n                || mediaType.StartsWith \"text/yaml;\"\n                || mediaType.StartsWith \"text/x-yaml;\"\n                // Plain text (sometimes used for YAML)\n                || mediaType = \"text/plain\"\n                || mediaType.StartsWith \"text/plain;\"\n                // Generic binary (fallback for misconfigured servers)\n                || mediaType = \"application/octet-stream\"\n                || mediaType.StartsWith \"application/octet-stream;\"\n\n            if not isValidSchemaContentType then\n                failwithf\n                    \"Invalid Content-Type for schema: %s. Expected JSON or YAML content types only. This protects against SSRF attacks. Set SsrfProtection=false to disable this validation.\"\n                    mediaType\n\n    /// Sends a GET request to the given URL with optional custom headers and returns the response body.\n    /// Validates the Content-Type to prevent processing non-schema responses (unless SSRF protection is off).\n    let private fetchUrlContent (ignoreSsrfProtection: bool) (headersStr: string) (resolvedPath: string) =\n        async {\n            let headers =\n                headersStr.Split '|'\n                |> Seq.choose(fun x ->\n                    let pair = x.Split([| '=' |], 2)\n\n                    if (pair.Length = 2) then\n                        Some(pair[0].Trim(), pair[1].Trim())\n                    else\n                        None)\n\n            use request = new HttpRequestMessage(HttpMethod.Get, resolvedPath)\n\n            for name, value in headers do\n                request.Headers.TryAddWithoutValidation(name, value) |> ignore\n\n            // SECURITY: Disable default credentials to prevent credential leakage (always enforced)\n            // SECURITY: Prevent redirect-based SSRF bypasses when SSRF protection is enabled.\n            use handler =\n                new HttpClientHandler(UseDefaultCredentials = false, AllowAutoRedirect = ignoreSsrfProtection)\n\n            use client = new HttpClient(handler, Timeout = TimeSpan.FromSeconds 60.0)\n\n            let! res =\n                async {\n                    use! response = client.SendAsync request |> Async.AwaitTask\n\n                    // Validate Content-Type to ensure we're parsing the correct format\n                    validateContentType ignoreSsrfProtection response.Content.Headers.ContentType\n\n                    return! response.Content.ReadAsStringAsync() |> Async.AwaitTask\n                }\n                |> Async.Catch\n\n            match res with\n            | Choice1Of2 x -> return x\n            | Choice2Of2(:? Swagger.OpenApiException as ex) when not <| isNull ex.Content ->\n                let! content = ex.Content.ReadAsStringAsync() |> Async.AwaitTask\n\n                return\n                    if String.IsNullOrEmpty content then\n                        ex.Reraise()\n                    else\n                        content\n            | Choice2Of2(:? WebException as wex) when not <| isNull wex.Response ->\n                use stream = wex.Response.GetResponseStream()\n                use reader = new StreamReader(stream)\n                let err = reader.ReadToEnd()\n\n                return\n                    if String.IsNullOrEmpty err then\n                        wex.Reraise()\n                    else\n                        err.ToString()\n            | Choice2Of2 e -> return e.Reraise()\n        }\n\n    let readSchemaPath (ignoreSsrfProtection: bool) (headersStr: string) (resolutionFolder: string) (schemaPathRaw: string) =\n        async {\n            // Resolve the schema path to absolute path first\n            let resolvedPath = getAbsolutePath resolutionFolder schemaPathRaw\n\n            // Check if this is a local file path (not a remote URL)\n            // First try to treat it as a local file path (absolute or relative)\n            let possibleFilePath =\n                try\n                    if Path.IsPathRooted resolvedPath then\n                        // Already a rooted path - normalize it to handle .. and . components\n                        // This is important on Windows where paths like D:\\foo\\..\\bar need normalization\n                        let normalized = Path.GetFullPath resolvedPath\n                        if File.Exists normalized then Some normalized else None\n                    else\n                        // Try to resolve relative paths (e.g., paths with ../ or from __SOURCE_DIRECTORY__)\n                        let resolved = Path.GetFullPath resolvedPath\n                        if File.Exists resolved then Some resolved else None\n                with _ ->\n                    None\n\n            match possibleFilePath with\n            | Some filePath ->\n                // Handle local file - read from disk\n                try\n                    return File.ReadAllText filePath\n                with\n                | :? FileNotFoundException -> return failwithf \"Schema file not found: %s\" filePath\n                | ex -> return failwithf \"Error reading schema file '%s': %s\" filePath ex.Message\n            | None ->\n                // Handle as remote URL (HTTP/HTTPS)\n                // First check if this looks like a local file path (Windows or Unix)\n                // On Windows, paths like D:\\path are parsed as URIs with scheme \"D\", so we need special handling\n                let looksLikeWindowsPath =\n                    resolvedPath.Length >= 2\n                    && Char.IsLetter(resolvedPath.[0])\n                    && resolvedPath.[1] = ':'\n\n                let looksLikeUnixAbsolutePath = resolvedPath.StartsWith(\"/\")\n\n                // If it looks like a local file path, treat it as such (file not found)\n                if\n                    looksLikeWindowsPath\n                    || looksLikeUnixAbsolutePath\n                    || not(resolvedPath.Contains(\"://\"))\n                then\n                    // If we reach here with a local file that wasn't found, report the error\n                    return failwithf \"Schema file not found: %s\" resolvedPath\n                else\n                    // Handle remote URL (HTTP/HTTPS)\n                    let uri = Uri resolvedPath\n\n                    match uri.Scheme with\n                    | \"https\" ->\n                        // Validate URL to prevent SSRF (unless explicitly disabled)\n                        validateSchemaUrl ignoreSsrfProtection uri\n                        return! fetchUrlContent ignoreSsrfProtection headersStr resolvedPath\n\n                    | \"http\" ->\n                        // HTTP is allowed only when SSRF protection is explicitly disabled (development/testing mode)\n                        if not ignoreSsrfProtection then\n                            return\n                                failwithf\n                                    \"HTTP URLs are not supported for security reasons. Use HTTPS or set SsrfProtection=false for development: %s\"\n                                    resolvedPath\n                        else\n                            // Development mode: allow HTTP\n                            validateSchemaUrl ignoreSsrfProtection uri\n                            return! fetchUrlContent ignoreSsrfProtection headersStr resolvedPath\n\n                    | _ ->\n                        // SECURITY: Reject unknown URL schemes to prevent SSRF attacks via file://, ftp://, etc.\n                        return\n                            failwithf\n                                \"Unsupported URL scheme in schema path: '%s'. Only HTTPS is supported for remote schemas (HTTP requires SsrfProtection=false). For local files, ensure the path is absolute or relative to the resolution folder.\"\n                                resolvedPath\n        }\n\nmodule XmlDoc =\n    open System\n    open System.Collections.Generic\n    open System.Text.Json\n    open System.Text.Json.Nodes\n\n    let private escapeXml(s: string) =\n        s.Replace(\"&\", \"&amp;\").Replace(\"<\", \"&lt;\").Replace(\">\", \"&gt;\")\n\n    let private formatEnumValue(v: JsonNode) =\n        if isNull v then\n            \"null\"\n        else\n            match v with\n            | :? JsonValue as jv ->\n                match jv.GetValueKind() with\n                | JsonValueKind.String -> jv.GetValue<string>()\n                | JsonValueKind.Null -> \"null\"\n                | _ -> jv.ToString()\n            | _ -> v.ToString()\n\n    /// Returns \"Allowed values: x, y, z\" if the schema has enum values, otherwise None.\n    let buildEnumDoc(enumValues: IList<JsonNode>) =\n        if isNull enumValues || enumValues.Count = 0 then\n            None\n        else\n            let values = enumValues |> Seq.map formatEnumValue |> String.concat \", \"\n            Some $\"Allowed values: {values}\"\n\n    /// Builds a structured XML doc string from summary, description, and parameter descriptions.\n    /// paramDescriptions is a sequence of (camelCaseName, description) pairs.\n    let buildXmlDoc (summary: string) (description: string) (paramDescriptions: (string * string) seq) =\n        let summaryPart =\n            if String.IsNullOrEmpty summary then\n                \"\"\n            else\n                $\"<summary>{escapeXml summary}</summary>\"\n\n        let remarksPart =\n            if String.IsNullOrEmpty description || description = summary then\n                \"\"\n            else\n                $\"<remarks>{escapeXml description}</remarks>\"\n\n        let paramParts =\n            [ for name, desc in paramDescriptions do\n                  if not(String.IsNullOrWhiteSpace desc) then\n                      yield $\"<param name=\\\"{name}\\\">{escapeXml desc}</param>\" ]\n            |> String.concat \"\"\n\n        summaryPart + remarksPart + paramParts\n\ntype UniqueNameGenerator(?occupiedNames: string seq) =\n    let hash = System.Collections.Generic.HashSet<_>()\n\n    do\n        for name in (defaultArg occupiedNames Seq.empty) do\n            hash.Add(name.ToLowerInvariant()) |> ignore\n\n    let rec findUniq prefix i =\n        let newName = sprintf \"%s%s\" prefix (if i = 0 then \"\" else i.ToString())\n        let key = newName.ToLowerInvariant()\n\n        match hash.Contains key with\n        | false ->\n            hash.Add key |> ignore\n            newName\n        | true -> findUniq prefix (i + 1)\n\n    member _.MakeUnique methodName =\n        findUniq methodName 0\n"
  },
  {
    "path": "src/SwaggerProvider.DesignTime/paket.references",
    "content": "File: ProvidedTypes.fsi\nFile: ProvidedTypes.fs\nFile: Pluralizer.fs\nFile: NameUtils.fs\nSystem.Text.Json\nMicrosoft.OpenApi\nMicrosoft.OpenApi.YamlReader\n"
  },
  {
    "path": "src/SwaggerProvider.Runtime/Exception.fs",
    "content": "[<AutoOpen>]\n[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]\nmodule System.Exception\n\nopen System\nopen System.Diagnostics\nopen System.Runtime.ExceptionServices\n\n// Useful for reraising exceptions under an async {...} and task {...} contexts\n// See this for more details: https://github.com/fsharp/fslang-suggestions/issues/660\ntype Exception with\n\n    [<DebuggerHidden>]\n    member __.Reraise() =\n        (ExceptionDispatchInfo.Capture __).Throw()\n        Unchecked.defaultof<_>\n"
  },
  {
    "path": "src/SwaggerProvider.Runtime/ProvidedApiClientBase.fs",
    "content": "namespace Swagger\n\nopen System\nopen System.Net.Http\nopen System.Threading.Tasks\nopen System.Text.Json\nopen System.Text.Json.Serialization\n\ntype OpenApiException(code: int, description: string, headers: Headers.HttpResponseHeaders, content: HttpContent, ?responseBody: string) =\n    inherit\n        Exception(\n            match responseBody with\n            | Some body when not(String.IsNullOrEmpty(body)) -> sprintf \"%s\\nResponse body: %s\" description body\n            | _ -> description\n        )\n\n    member _.StatusCode = code\n    member _.Description = description\n    member _.Headers = headers\n    member _.Content = content\n    /// The raw response body returned by the server, if available.\n    member _.ResponseBody = defaultArg responseBody \"\"\n\ntype ProvidedApiClientBase(httpClient: HttpClient, options: JsonSerializerOptions) =\n\n#if TP_RUNTIME\n    let options =\n        if isNull options then\n            let options = JsonSerializerOptions()\n            options.Converters.Add(JsonFSharpConverter())\n            options\n        else\n            options\n#endif\n\n    member val HttpClient = httpClient with get, set\n\n    abstract member Serialize: obj -> string\n    abstract member Deserialize: string * Type -> obj\n\n    default _.Serialize(value: obj) : string =\n        JsonSerializer.Serialize(value, options)\n\n    default _.Deserialize(value, retTy: Type) : obj =\n        JsonSerializer.Deserialize(value, retTy, options)\n\n    member this.CallAsync\n        (request: HttpRequestMessage, errorCodes: string[], errorDescriptions: string[], cancellationToken: System.Threading.CancellationToken)\n        : Task<HttpResponseMessage> =\n        task {\n            let! response = this.HttpClient.SendAsync(request, cancellationToken)\n\n            if response.IsSuccessStatusCode then\n                return response\n            else\n                let code = response.StatusCode |> int\n                let codeStr = code |> string\n\n                let readBody() =\n                    task {\n                        try\n#if NET5_0_OR_GREATER\n                            return! response.Content.ReadAsStringAsync(cancellationToken)\n#else\n                            return! response.Content.ReadAsStringAsync()\n#endif\n                        with\n                        | :? OperationCanceledException as e -> return raise e\n                        | _ ->\n                            // If reading the body fails (e.g., disposed stream or invalid charset),\n                            // fall back to an empty body so we can still throw OpenApiException.\n                            return \"\"\n                    }\n\n                match errorCodes |> Array.tryFindIndex((=) codeStr) with\n                | Some idx ->\n                    let desc = errorDescriptions[idx]\n                    let! body = readBody()\n                    return raise(OpenApiException(code, desc, response.Headers, response.Content, body))\n                | None ->\n                    let! body = readBody()\n\n                    let desc =\n                        if String.IsNullOrEmpty(response.ReasonPhrase) then\n                            $\"HTTP {code}\"\n                        else\n                            response.ReasonPhrase\n\n                    return raise(OpenApiException(code, desc, response.Headers, response.Content, body))\n        }\n"
  },
  {
    "path": "src/SwaggerProvider.Runtime/Runtime.fs",
    "content": "namespace SwaggerProvider\n\n// TypeProviderAssemblyAttribute in the runtime DLL, pointing to the design-time DLL\n[<assembly: CompilerServices.TypeProviderAssembly(\"SwaggerProvider.DesignTime.dll\")>]\ndo ()\n"
  },
  {
    "path": "src/SwaggerProvider.Runtime/RuntimeHelpers.fs",
    "content": "namespace Swagger.Internal\n\nopen System\nopen System.Net.Http\nopen System.Net.Http.Headers\nopen System.Text.Json.Serialization\nopen System.Threading.Tasks\n\nmodule MediaTypes =\n    [<Literal>]\n    let ApplicationJson = \"application/json\"\n\n    [<Literal>]\n    let ApplicationOctetStream = \"application/octet-stream\"\n\n    [<Literal>]\n    let ApplicationFormUrlEncoded = \"application/x-www-form-urlencoded\"\n\n    [<Literal>]\n    let MultipartFormData = \"multipart/form-data\"\n\n    [<Literal>]\n    let TextPlain = \"text/plain\"\n\ntype AsyncExtensions() =\n    static member cast<'t> asyncOp =\n        async {\n            let! ret = asyncOp\n            return (box ret) :?> 't\n        }\n\ntype TaskExtensions() =\n    static member cast<'t> taskOp =\n        task {\n            let! ret = taskOp\n            return (box ret) :?> 't\n        }\n\nmodule RuntimeHelpers =\n    let inline private toStrArray name values =\n        values\n        |> Array.map(fun value -> name, value.ToString())\n        |> Array.toList\n\n    let inline private toStrArrayDateTime name (values: DateTime array) =\n        values\n        |> Array.map(fun value -> name, value.ToString(\"O\"))\n        |> Array.toList\n\n    let inline private toStrArrayDateTimeOffset name (values: DateTimeOffset array) =\n        values\n        |> Array.map(fun value -> name, value.ToString(\"O\"))\n        |> Array.toList\n\n    let inline private toStrArrayOpt name values =\n        values |> Array.choose(id) |> toStrArray name\n\n    let inline private toStrArrayDateTimeOpt name values =\n        values |> Array.choose(id) |> toStrArrayDateTime name\n\n    let inline private toStrArrayDateTimeOffsetOpt name values =\n        values |> Array.choose(id) |> toStrArrayDateTimeOffset name\n\n    let private dateOnlyTypeName = \"System.DateOnly\"\n    let private timeOnlyTypeName = \"System.TimeOnly\"\n\n    let private isDateOnlyType(t: Type) =\n        not(isNull t) && t.FullName = dateOnlyTypeName\n\n    let private isTimeOnlyType(t: Type) =\n        not(isNull t) && t.FullName = timeOnlyTypeName\n\n    let private isOptionOfDateOnlyType(t: Type) =\n        t.IsGenericType\n        && t.GetGenericTypeDefinition() = typedefof<option<_>>\n        && isDateOnlyType(t.GetGenericArguments().[0])\n\n    let private isOptionOfTimeOnlyType(t: Type) =\n        t.IsGenericType\n        && t.GetGenericTypeDefinition() = typedefof<option<_>>\n        && isTimeOnlyType(t.GetGenericArguments().[0])\n\n    let private isDateOnlyLikeType(t: Type) =\n        isDateOnlyType t || isOptionOfDateOnlyType t\n\n    let private isTimeOnlyLikeType(t: Type) =\n        isTimeOnlyType t || isOptionOfTimeOnlyType t\n\n    let private tryFormatViaMethods (typeName: string) (format: string) (value: obj) =\n        if isNull value then\n            None\n        else\n            let ty = value.GetType()\n\n            if ty.FullName = typeName then\n                match value with\n                | :? IFormattable as formattable -> Some(formattable.ToString(format, Globalization.CultureInfo.InvariantCulture))\n                | _ ->\n                    match\n                        ty.GetMethod(\"ToString\", [| typeof<string>; typeof<IFormatProvider> |])\n                        |> Option.ofObj\n                    with\n                    | Some methodInfo -> Some(methodInfo.Invoke(value, [| box format; box Globalization.CultureInfo.InvariantCulture |]) :?> string)\n                    | None -> None\n            else\n                None\n\n    let private tryFormatDateOnly(value: obj) =\n        tryFormatViaMethods dateOnlyTypeName \"yyyy-MM-dd\" value\n\n    let private tryFormatTimeOnly(value: obj) =\n        tryFormatViaMethods timeOnlyTypeName \"HH:mm:ss.FFFFFFF\" value\n\n    // Cache of precomputed union tag readers for F# option types. Avoids the overhead of\n    // FSharpValue.GetUnionFields (which allocates UnionCaseInfo + obj[]) on each call.\n    // Stores as (obj -> int) with an explicit wrapper to satisfy nullable annotations.\n    let private optionTagReaderCache =\n        Collections.Concurrent.ConcurrentDictionary<Type, obj -> int>()\n\n    let private makeOptionTagReader(t: Type) : obj -> int =\n        let reader = Microsoft.FSharp.Reflection.FSharpValue.PreComputeUnionTagReader t\n        fun (o: obj) -> reader o\n\n    // Hoisted factory delegate to avoid allocating a new Func on every GetOrAdd call.\n    let private optionTagReaderFactory =\n        System.Func<Type, obj -> int>(makeOptionTagReader)\n\n    // Cache of the 'Value' PropertyInfo per F# option type, shared with unwrapFSharpOption below.\n    let private optionValueCache =\n        Collections.Concurrent.ConcurrentDictionary<Type, Reflection.PropertyInfo>()\n\n    // Hoisted factory delegate to avoid allocating a new lambda on every GetOrAdd call.\n    let private optionValueFactory =\n        System.Func<Type, Reflection.PropertyInfo>(fun t -> t.GetProperty(\"Value\"))\n\n    let rec toParam(obj: obj) =\n        match obj with\n        | :? DateTime as dt -> dt.ToString(\"O\")\n        | :? DateTimeOffset as dto -> dto.ToString(\"O\")\n        | null -> null\n        | _ ->\n            match tryFormatDateOnly obj with\n            | Some formatted -> formatted\n            | None ->\n                match tryFormatTimeOnly obj with\n                | Some formatted -> formatted\n                | None ->\n                    let ty = obj.GetType()\n\n                    // Unwrap F# Option<T>: Some(x) -> toParam(x), None -> null.\n                    // Uses a precomputed tag reader (cached) to check Some/None without\n                    // allocating a UnionCaseInfo or obj[] on every call.\n                    if\n                        ty.IsGenericType\n                        && ty.GetGenericTypeDefinition() = typedefof<option<_>>\n                    then\n                        let tagReader = optionTagReaderCache.GetOrAdd(ty, optionTagReaderFactory)\n\n                        if tagReader obj = 1 then // 1 = Some\n                            let valueProp = optionValueCache.GetOrAdd(ty, optionValueFactory)\n\n                            toParam(valueProp.GetValue(obj))\n                        else\n                            null\n                    else\n                        obj.ToString()\n\n    let toQueryParams (name: string) (obj: obj) (client: Swagger.ProvidedApiClientBase) =\n        if isNull obj then\n            []\n        else\n\n            match obj with\n            | :? array<byte> as xs -> [ name, (client.Serialize xs).Trim('\\\"') ] // TODO: Need to verify how servers parse byte[] from query string\n            | :? Option<array<byte>> as x ->\n                match x with\n                | Some xs -> [ name, (client.Serialize xs).Trim('\\\"') ]\n                | None -> []\n            | :? array<bool> as xs -> xs |> toStrArray name\n            | :? array<int32> as xs -> xs |> toStrArray name\n            | :? array<int64> as xs -> xs |> toStrArray name\n            | :? array<float32> as xs -> xs |> toStrArray name\n            | :? array<double> as xs -> xs |> toStrArray name\n            | :? array<string> as xs -> xs |> toStrArray name\n            | :? array<DateTime> as xs -> xs |> toStrArrayDateTime name\n            | :? array<DateTimeOffset> as xs -> xs |> toStrArrayDateTimeOffset name\n            | :? array<Guid> as xs -> xs |> toStrArray name\n            | :? array<Option<bool>> as xs -> xs |> toStrArrayOpt name\n            | :? array<Option<int32>> as xs -> xs |> toStrArrayOpt name\n            | :? array<Option<int64>> as xs -> xs |> toStrArrayOpt name\n            | :? array<Option<float32>> as xs -> xs |> toStrArrayOpt name\n            | :? array<Option<double>> as xs -> xs |> toStrArrayOpt name\n            | :? array<Option<string>> as xs -> xs |> toStrArrayOpt name\n            | :? array<Option<DateTime>> as xs -> xs |> toStrArrayDateTimeOpt name\n            | :? array<Option<DateTimeOffset>> as xs -> xs |> toStrArrayDateTimeOffsetOpt name\n            | :? array<Option<Guid>> as xs -> xs |> toStrArrayOpt name\n            | :? Array as xs when\n                xs.GetType().GetElementType()\n                |> Option.ofObj\n                |> Option.exists(fun t -> isDateOnlyLikeType t || isTimeOnlyLikeType t)\n                ->\n                xs\n                |> Seq.cast<obj>\n                |> Seq.choose(fun value ->\n                    let param = toParam value\n\n                    if isNull param then None else Some(name, param))\n                |> Seq.toList\n            | _ ->\n                let param = toParam obj\n                if isNull param then [] else [ name, param ]\n\n    /// Cache of sorted declared public instance properties per type, to avoid repeated\n    /// reflection and sorting overhead when formatObject is called frequently.\n    let private propCache =\n        Collections.Concurrent.ConcurrentDictionary<Type, Reflection.PropertyInfo[]>()\n\n    let private getProperties(t: Type) =\n        propCache.GetOrAdd(\n            t,\n            fun ty ->\n                ty.GetProperties(\n                    Reflection.BindingFlags.Public\n                    ||| Reflection.BindingFlags.Instance\n                    ||| Reflection.BindingFlags.DeclaredOnly\n                )\n                |> Array.sortBy(fun p -> p.Name)\n        )\n\n    /// Cache of (serialized-name, PropertyInfo) pairs per type for getPropertyValues.\n    /// Avoids repeated GetProperties + GetCustomAttributes calls on hot form-encoding paths.\n    let private propNameCache =\n        Collections.Concurrent.ConcurrentDictionary<Type, (string * Reflection.PropertyInfo)[]>()\n\n    let private getPropertyNamesAndInfos(t: Type) =\n        propNameCache.GetOrAdd(\n            t,\n            fun ty ->\n                ty.GetProperties(Reflection.BindingFlags.Public ||| Reflection.BindingFlags.Instance)\n                |> Array.map(fun prop ->\n                    let name =\n                        match prop.GetCustomAttributes(typeof<JsonPropertyNameAttribute>, false) with\n                        | [| x |] -> (x :?> JsonPropertyNameAttribute).Name\n                        | _ -> prop.Name\n\n                    (name, prop))\n        )\n\n    /// Formats a generated API object as a string in the form `{Prop1=value1; Prop2=value2}`.\n    /// Only declared public instance properties are included, sorted alphabetically by name.\n    /// Used by the emitted ToString() override to keep the generated method body O(1) in size.\n    let formatObject(obj: obj) : string =\n        let props = getProperties(obj.GetType())\n\n        let strs =\n            props\n            |> Array.map(fun p ->\n                let v = p.GetValue(obj)\n\n                let s =\n                    if isNull v then\n                        \"null\"\n                    else\n                        let vTy = v.GetType()\n\n                        if vTy = typeof<string> then\n                            String.Format(\"\\\"{0}\\\"\", v)\n                        elif vTy.IsArray then\n                            let elements =\n                                (v :?> Array)\n                                |> Seq.cast<obj>\n                                |> Seq.map(fun x -> if isNull x then \"null\" else x.ToString())\n                                |> Array.ofSeq\n\n                            String.Format(\"[{0}]\", String.Join(\"; \", elements))\n                        else\n                            v.ToString()\n\n                String.Format(\"{0}={1}\", p.Name, s))\n\n        String.Format(\"{{{0}}}\", String.Join(\"; \", strs))\n\n    // Cached constructor for JsonPropertyNameAttribute to avoid repeated reflection lookups\n    // when compiling large schemas with many properties.\n    let private jsonPropertyNameCtor =\n        typeof<JsonPropertyNameAttribute>.GetConstructor [| typeof<string> |]\n\n    let getPropertyNameAttribute name =\n        { new Reflection.CustomAttributeData() with\n            member _.Constructor = jsonPropertyNameCtor\n\n            member _.ConstructorArguments =\n                [| Reflection.CustomAttributeTypedArgument(typeof<string>, name) |] :> Collections.Generic.IList<_>\n\n            member _.NamedArguments = [||] :> Collections.Generic.IList<_> }\n\n    let toStringContent(valueStr: string) =\n        new StringContent(valueStr, Text.Encoding.UTF8, \"application/json\")\n\n    let toTextContent(valueStr: string) =\n        new StringContent(valueStr, Text.Encoding.UTF8, \"text/plain\")\n\n    let toStreamContent(boxedStream: obj, contentType: string) =\n        match boxedStream with\n        | :? IO.Stream as stream ->\n            let content = new StreamContent(stream)\n\n            if (not <| String.IsNullOrEmpty(contentType)) then\n                content.Headers.ContentType <- MediaTypeHeaderValue(contentType)\n\n            content\n        | _ -> failwith $\"Unexpected parameter type {boxedStream.GetType().Name} instead of IO.Stream\"\n\n    // Unwraps F# option values: returns the inner value for Some, null for None.\n    // This prevents `Some(value)` from being sent as-is in form data.\n    // Reuses optionValueCache defined alongside toParam above.\n    let private unwrapFSharpOption(value: obj) : obj =\n        if isNull value then\n            null\n        else\n            let ty = value.GetType()\n\n            if\n                ty.IsGenericType\n                && ty.GetGenericTypeDefinition() = typedefof<option<_>>\n            then\n                let prop = optionValueCache.GetOrAdd(ty, optionValueFactory)\n                prop.GetValue(value)\n            else\n                value\n\n    let getPropertyValues(object: obj) =\n        if isNull object then\n            Seq.empty\n        else\n            let namesAndProps = getPropertyNamesAndInfos(object.GetType())\n\n            namesAndProps\n            |> Seq.choose(fun (name, prop) ->\n                prop.GetValue(object)\n                |> unwrapFSharpOption\n                |> Option.ofObj\n                |> Option.map(fun value -> (name, value)))\n\n    let toMultipartFormDataContent(keyValues: seq<string * obj>) =\n        let cnt = new MultipartFormDataContent()\n\n        let addFileStream name (stream: IO.Stream) =\n            let filename = Guid.NewGuid().ToString() // asp.net core cannot deserialize IFormFile otherwise\n            cnt.Add(new StreamContent(stream), name, filename)\n\n        for name, value in keyValues do\n            match value with\n            | null -> ()\n            | :? IO.Stream as stream -> addFileStream name stream\n            | :? (IO.Stream[]) as streams -> streams |> Seq.iter(addFileStream name)\n            | x ->\n                let strValue = toParam x\n\n                if not(isNull strValue) then\n                    cnt.Add(toStringContent strValue, name)\n\n        cnt\n\n    let toFormUrlEncodedContent(keyValues: seq<string * obj>) =\n        let keyValues =\n            keyValues\n            |> Seq.filter(snd >> isNull >> not)\n            |> Seq.choose(fun (k, v) ->\n                let param = toParam v\n\n                if isNull param then\n                    None\n                else\n                    Some(Collections.Generic.KeyValuePair(k, param)))\n\n        new FormUrlEncodedContent(keyValues)\n\n    let getDefaultHttpClient(host: string) =\n        // Using default handler with UseCookies=true, HttpClient will not be able to set Cookie-based parameters\n        let handler = new HttpClientHandler(UseCookies = false)\n\n        if isNull host then\n            new HttpClient(handler, true)\n        else\n            let host = if host.EndsWith(\"/\") then host else host + \"/\"\n\n            new HttpClient(handler, true, BaseAddress = Uri(host))\n\n    let combineUrl (urlA: string) (urlB: string) =\n        sprintf \"%s/%s\" (urlA.TrimEnd('/')) (urlB.TrimStart('/'))\n\n    let createHttpRequest (httpMethod: string) address queryParams =\n        let requestUrl =\n            let fakeHost = \"http://fake-host/\"\n            let builder = UriBuilder(combineUrl fakeHost address)\n            let query = System.Web.HttpUtility.ParseQueryString(builder.Query)\n\n            for name, value in queryParams do\n                if not <| isNull value then\n                    query.Add(name, value)\n\n            builder.Query <- query.ToString()\n            builder.Uri.PathAndQuery.TrimStart('/')\n\n        let method = HttpMethod(httpMethod.ToUpper())\n        new HttpRequestMessage(method, Uri(requestUrl, UriKind.Relative))\n\n    let fillHeaders (msg: HttpRequestMessage) (headers: (string * string) seq) =\n        headers\n        |> Seq.filter(snd >> isNull >> not)\n        |> Seq.iter(fun (name, value) ->\n            if not <| msg.Headers.TryAddWithoutValidation(name, value) then\n                let errMsg =\n                    String.Format(\"Cannot add header '{0}'='{1}' to HttpRequestMessage\", name, value)\n\n                if (name <> \"Content-Type\") then\n                    raise <| Exception(errMsg))\n\n    /// Resolves a public static generic method definition with one type parameter and one\n    /// value parameter by name from the given type. Raises a descriptive exception if the\n    /// method cannot be uniquely identified, avoiding AmbiguousMatchException from a\n    /// name-only GetMethod lookup.\n    let private resolveCastMethod(ownerType: Type) =\n        ownerType.GetMethods(Reflection.BindingFlags.Public ||| Reflection.BindingFlags.Static)\n        |> Array.tryFind(fun m ->\n            m.Name = \"cast\"\n            && m.IsGenericMethodDefinition\n            && m.GetGenericArguments().Length = 1\n            && m.GetParameters().Length = 1)\n        |> Option.defaultWith(fun () -> failwithf \"Could not resolve %s.cast<'t> generic method definition\" ownerType.FullName)\n\n    /// Pre-resolved MethodInfo for AsyncExtensions.cast and TaskExtensions.cast.\n    /// Both are constant across the lifetime of the process; resolve once at module init.\n    let private asyncCastMethod = resolveCastMethod typeof<AsyncExtensions>\n\n    let private taskCastMethod = resolveCastMethod typeof<TaskExtensions>\n\n    /// Per-type cache of the concrete generic MethodInfo produced by MakeGenericMethod.\n    /// Avoids repeated generic-method instantiation for the same return type.\n    let private asyncCastCache =\n        Collections.Concurrent.ConcurrentDictionary<Type, Reflection.MethodInfo>()\n\n    let private taskCastCache =\n        Collections.Concurrent.ConcurrentDictionary<Type, Reflection.MethodInfo>()\n\n    let asyncCast runtimeTy (asyncOp: Async<obj>) =\n        let m =\n            asyncCastCache.GetOrAdd(runtimeTy, fun t -> asyncCastMethod.MakeGenericMethod([| t |]))\n\n        m.Invoke(null, [| asyncOp |])\n\n    let readContentAsString (content: HttpContent) (ct: System.Threading.CancellationToken) : Task<string> =\n#if NET5_0_OR_GREATER\n        content.ReadAsStringAsync(ct)\n#else\n        content.ReadAsStringAsync()\n#endif\n\n    let readContentAsStream (content: HttpContent) (ct: System.Threading.CancellationToken) : Task<IO.Stream> =\n#if NET5_0_OR_GREATER\n        content.ReadAsStreamAsync(ct)\n#else\n        content.ReadAsStreamAsync()\n#endif\n\n    let taskCast runtimeTy (task: Task<obj>) =\n        let m =\n            taskCastCache.GetOrAdd(runtimeTy, fun t -> taskCastMethod.MakeGenericMethod([| t |]))\n\n        m.Invoke(null, [| task |])\n"
  },
  {
    "path": "src/SwaggerProvider.Runtime/SwaggerProvider.Runtime.fsproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project>\n  <!-- See https://stackoverflow.com/questions/43921992/how-can-i-use-beforebuild-and-afterbuild-targets-with-visual-studio-2017 -->\n  <Import Project=\"Sdk.props\" Sdk=\"Microsoft.NET.Sdk\" />\n  <PropertyGroup>\n    <OutputType>Library</OutputType>\n    <TargetFrameworks>netstandard2.0;net10.0</TargetFrameworks>\n    <DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>\n    <DefineConstants>TP_RUNTIME</DefineConstants>\n    <ProduceReferenceAssembly>false</ProduceReferenceAssembly>\n    <DebugType>portable</DebugType>\n    <DebugSymbols>true</DebugSymbols>\n  </PropertyGroup>\n  <Import Project=\"Sdk.targets\" Sdk=\"Microsoft.NET.Sdk\" />\n  <ItemGroup>\n    <Compile Include=\"..\\..\\paket-files\\fsprojects\\FSharp.TypeProviders.SDK\\src\\ProvidedTypes.fsi\">\n      <Paket>True</Paket>\n      <Link>paket-files/ProvidedTypes.fsi</Link>\n    </Compile>\n    <Compile Include=\"..\\..\\paket-files\\fsprojects\\FSharp.TypeProviders.SDK\\src\\ProvidedTypes.fs\">\n      <Paket>True</Paket>\n      <Link>paket-files/ProvidedTypes.fs</Link>\n    </Compile>\n    <Compile Include=\"..\\Common\\AssemblyInfo.fs\">\n      <Link>AssemblyInfo.fs</Link>\n    </Compile>\n    <Compile Include=\"Exception.fs\" />\n    <Compile Include=\"Runtime.fs\" />\n    <Compile Include=\"ProvidedApiClientBase.fs\" />\n    <Compile Include=\"RuntimeHelpers.fs\" />\n    <None Include=\"paket.references\" />\n  </ItemGroup>\n  <Target Name=\"BeforeBuild\">\n    <MSBuild Projects=\"..\\SwaggerProvider.DesignTime\\SwaggerProvider.DesignTime.fsproj\" Targets=\"Restore\" />\n    <MSBuild Projects=\"..\\SwaggerProvider.DesignTime\\SwaggerProvider.DesignTime.fsproj\" Targets=\"Build\" Properties=\"Configuration=$(Configuration);TargetFramework=$(TargetFramework)\" />\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  <Import Project=\"..\\..\\.paket\\Paket.Restore.targets\" />\n</Project>\n"
  },
  {
    "path": "src/SwaggerProvider.Runtime/SwaggerProvider.fsx",
    "content": "#nowarn \"211\"\n// Standard NuGet or Paket location\n#I \".\"\n#I \"lib/net461\"\n\n// Standard NuGet locations packages\n#I \"../Newtonsoft.Json.9.0.1/lib/net461\"\n#I \"../Newtonsoft.Json.10.0.3/lib/net461\"\n#I \"../YamlDotNet.4.3.0/lib/net461\"\n\n// Standard Paket locations packages\n#I \"../Newtonsoft.Json/lib/net461\"\n#I \"../YamlDotNet/lib/net461\"\n\n// Try various folders that people might like\n#I \"bin\"\n#I \"../bin\"\n#I \"../../bin\"\n#I \"lib\"\n\n// Reference SwaggerProvider and Newtonsoft.Json\n#r \"Newtonsoft.Json.dll\"\n#r \"YamlDotNet.dll\"\n#r \"SwaggerProvider.Runtime.dll\"\n#r \"SwaggerProvider.dll\"\n"
  },
  {
    "path": "src/SwaggerProvider.Runtime/paket.references",
    "content": "File: ProvidedTypes.fsi\nFile: ProvidedTypes.fs\n\nFSharp.Core\nFSharp.SystemTextJson\n"
  },
  {
    "path": "src/SwaggerProvider.Runtime/paket.template",
    "content": "type file\nid SwaggerProvider\ntitle\n    Swagger Provider\nowners\n    Sergey Tihon\nauthors\n    Sergey Tihon\nprojectUrl\n    http://fsprojects.github.io/SwaggerProvider/\niconUrl\n    https://raw.githubusercontent.com/fsprojects/SwaggerProvider/master/docs/files/img/logo.png\nlicenseUrl\n    http://github.com/fsprojects/SwaggerProvider/blob/master/LICENSE.txt\nrequireLicenseAcceptance\n    false\ncopyright\n    Copyright 2015-2026\ntags\n    F# fsharp data typeprovider Swagger API REST OpenAPI\nsummary\n    F# Type Providers for Swagger & OpenAPI\ndescription\n    F# Type Providers for Swagger & OpenAPI\nfiles\n    bin/Release/netstandard2.0/SwaggerProvider.Runtime.* ==> lib/netstandard2.0\n    bin/Release/net10.0/SwaggerProvider.Runtime.* ==> lib/net10.0\n    bin/Release/typeproviders/fsharp41/netstandard2.0/*.dll ==> typeproviders/fsharp41/netstandard2.0\n    bin/Release/typeproviders/fsharp41/netstandard2.0/*.pdb ==> typeproviders/fsharp41/netstandard2.0\n    bin/Release/typeproviders/fsharp41/net10.0/*.dll ==> typeproviders/fsharp41/net10.0\n    bin/Release/typeproviders/fsharp41/net10.0/*.pdb ==> typeproviders/fsharp41/net10.0\nreferences\n    SwaggerProvider.Runtime.dll\ndependencies\n    FSharp.Core >= LOCKEDVERSION\n    FSharp.SystemTextJson >= LOCKEDVERSION\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/APIs.Guru.FSC.Tests.fs",
    "content": "module APIsGuruFSCS\n(*\nopen FSharp.Compiler.SourceCodeServices\nopen System\nopen System.IO\nopen Expecto\nopen Fake\n\nlet assembliesList =\n    let buildTarget name =\n        Path.Combine(__SOURCE_DIRECTORY__, name)\n        |> Path.GetFullPath\n    [\n        //yield typeof<FSharp.Core.AbstractClassAttribute>.Assembly.Location\n        yield typeof<System.Int32>.Assembly.Location\n        yield typeof<System.Net.CookieContainer>.Assembly.Location\n        yield typeof<System.Net.Http.HttpRequestMessage>.Assembly.Location\n        yield buildTarget \"../../src/SwaggerProvider.Runtime/bin/Release/net45/SwaggerProvider.Runtime.dll\"\n        yield buildTarget \"../../src/SwaggerProvider.Runtime/bin/Release/typeproviders/fsharp41/net45/Newtonsoft.Json.dll\"\n    ]\nlet referencedAssemblies =\n    typeof<FSharp.Core.AbstractClassAttribute>.Assembly.Location\n     :: assembliesList\n    |> List.collect (fun path ->\n        if not <| File.Exists(path)\n            then failwithf \"File not found '%s'\" path\n        [\"-r\"; path])\n\nlet scs = new System.Threading.ThreadLocal<_>(fun () -> FSharpChecker.Create())\n\nlet testTemplate url testBodyFunc =\n    let tempFile = Path.GetTempFileName()\n    let fs = Path.ChangeExtension(tempFile, \".fs\")\n    let dll = Path.ChangeExtension(tempFile, \".dll\")\n\n    File.WriteAllText(fs, sprintf \"\"\"\n    module TestModule\n    open SwaggerProvider\n    type ProvidedSwagger = SwaggerClientProvider<\"%s\">\n    let instance = ProvidedSwagger.Client()\n    #if INTERACTIVE\n    System.Console.WriteLine(\"Hello from FSI: {0}\", instance.HttpClient.BaseAddress)\n    #endif\n    \"\"\" url)\n\n    try\n        try\n            testBodyFunc fs dll\n        with\n        | e when e.Message.IndexOf(\"not supported yet\") >= 0 -> ()\n        | e when e.Message.IndexOf(\"An error occurred while sending the request\") >= 0 -> ()\n    finally\n        [tempFile; fs; dll]\n        |> List.filter File.Exists\n        |> List.iter File.Delete\n\nlet compileTP fs dll =\n    let errors, exitCode =\n        scs.Value.Compile(Array.ofList\n           ([\"fsc.exe\"; \"--noframework\";\n             \"-o\"; dll; \"-a\"; fs\n            ] @ referencedAssemblies))\n        |> Async.RunSynchronously\n\n    if exitCode <> 0 then\n        failwithf \"Compilation error:\\n%s\"\n            (String.Join(\"\\n\", errors |> Array.map(fun x->x.ToString()) ))\n\n[<Tests>]\nlet compilerTests =\n    List.ofArray  APIsGuru.JsonSchemas\n    |> List.map (fun url ->\n        testCase\n            (sprintf \"Compile schema %s\" url)\n            (fun _ -> testTemplate url compileTP)\n       )\n    |> testList \"Integration/Compile TP\"\n    |> testSequenced\n\n\nlet referencedAssembliesFsi =\n    // FSI needs .optdata and .sigdata files near FSharp.Core.dll\n    Path.Combine(__SOURCE_DIRECTORY__, \"../../packages/FSharp.Core/lib/net45/FSharp.Core.dll\")\n     :: assembliesList\n    |> List.map (fun x -> sprintf \"-r:%s\" x)\n\nlet fsiTest fs _ =\n    let args = \"--noframework\" :: referencedAssembliesFsi |> List.toArray\n    let isOk, msgs =\n        executeBuildScriptWithArgsAndFsiArgsAndReturnMessages\n            fs [||] args false\n    for msg in msgs do\n        printfn \"%s\" msg.Message\n    if not(isOk)\n        then failwithf \"fsiTest failed\"\n\nlet testFsi = isNull <| Type.GetType(\"Mono.Runtime\")\n//[<Tests>] // TODO: We need fix here...\nlet fsiTests =\n    APIsGuru.JsonSchemas\n    |> APIsGuru.shrink 30\n    |> List.ofArray\n    |> List.distinct\n    |> List.choose (fun url ->\n        if testFsi then\n            testCase\n                (sprintf \"Compile schema %s\" url)\n                (fun _ -> testTemplate url fsiTest)\n            |> Some\n        else None\n       )\n    |> testList \"Integration/Load TP in FSI\"\n    |> testSequenced\n*)\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/Instagram.json",
    "content": "{\n    \"swagger\": \"2.0\",\n    \"info\": {\n        \"version\": \"v1\",\n        \"title\": \"Instagram API\",\n        \"description\": \"The first version of the Instagram API is an exciting step forward towards\\nmaking it easier for users to have open access to their data. We created it\\nso that you can surface the amazing content Instagram users share every\\nsecond, in fun and innovative ways.\\n\\nBuild something great!\\n\\nOnce you've\\n[registered your client](http://instagram.com/developer/register/) it's easy\\nto start requesting data from Instagram.\\n\\nAll endpoints are only accessible via https and are located at\\n`api.instagram.com`. For instance: you can grab the most popular photos at\\nthe moment by accessing the following URL with your client ID\\n(replace CLIENT-ID with your own):\\n```\\n  https://api.instagram.com/v1/media/popular?client_id=CLIENT-ID\\n```\\nYou're best off using an access_token for the authenticated user for each\\nendpoint, though many endpoints don't require it.\\nIn some cases an access_token will give you more access to information, and\\nin all cases, it means that you are operating under a per-access_token limit\\nvs. the same limit for your single client_id.\\n\\n\\n## Limits\\nBe nice. If you're sending too many requests too quickly, we'll send back a\\n`503` error code (server unavailable).\\nYou are limited to 5000 requests per hour per `access_token` or `client_id`\\noverall. Practically, this means you should (when possible) authenticate\\nusers so that limits are well outside the reach of a given user.\\n\\n## Deleting Objects\\nWe do our best to have all our URLs be\\n[RESTful](http://en.wikipedia.org/wiki/Representational_state_transfer).\\nEvery endpoint (URL) may support one of four different http verbs. GET\\nrequests fetch information about an object, POST requests create objects,\\nPUT requests update objects, and finally DELETE requests will delete\\nobjects.\\n\\nSince many old browsers don't support PUT or DELETE, we've made it easy to\\nfake PUTs and DELETEs. All you have to do is do a POST with _method=PUT or\\n_method=DELETE as a parameter and we will treat it as if you used PUT or\\nDELETE respectively.\\n\\n## Structure\\n\\n### The Envelope\\nEvery response is contained by an envelope. That is, each response has a\\npredictable set of keys with which you can expect to interact:\\n```json\\n{\\n    \\\"meta\\\": {\\n        \\\"code\\\": 200\\n    },\\n    \\\"data\\\": {\\n        ...\\n    },\\n    \\\"pagination\\\": {\\n        \\\"next_url\\\": \\\"...\\\",\\n        \\\"next_max_id\\\": \\\"13872296\\\"\\n    }\\n}\\n```\\n\\n#### META\\nThe meta key is used to communicate extra information about the response to\\nthe developer. If all goes well, you'll only ever see a code key with value\\n200. However, sometimes things go wrong, and in that case you might see a\\nresponse like:\\n```json\\n{\\n    \\\"meta\\\": {\\n        \\\"error_type\\\": \\\"OAuthException\\\",\\n        \\\"code\\\": 400,\\n        \\\"error_message\\\": \\\"...\\\"\\n    }\\n}\\n```\\n\\n#### DATA\\nThe data key is the meat of the response. It may be a list or dictionary,\\nbut either way this is where you'll find the data you requested.\\n#### PAGINATION\\nSometimes you just can't get enough. For this reason, we've provided a\\nconvenient way to access more data in any request for sequential data.\\nSimply call the url in the next_url parameter and we'll respond with the\\nnext set of data.\\n```json\\n{\\n    ...\\n    \\\"pagination\\\": {\\n        \\\"next_url\\\": \\\"https://api.instagram.com/v1/tags/puppy/media/recent?access_token=fb2e77d.47a0479900504cb3ab4a1f626d174d2d&max_id=13872296\\\",\\n        \\\"next_max_id\\\": \\\"13872296\\\"\\n    }\\n}\\n```\\nOn views where pagination is present, we also support the \\\"count\\\" parameter.\\nSimply set this to the number of items you'd like to receive. Note that the\\ndefault values should be fine for most applications - but if you decide to\\nincrease this number there is a maximum value defined on each endpoint.\\n\\n### JSONP\\nIf you're writing an AJAX application, and you'd like to wrap our response\\nwith a callback, all you have to do is specify a callback parameter with\\nany API call:\\n```\\nhttps://api.instagram.com/v1/tags/coffee/media/recent?access_token=fb2e77d.47a0479900504cb3ab4a1f626d174d2d&callback=callbackFunction\\n```\\nWould respond with:\\n```js\\ncallbackFunction({\\n    ...\\n});\\n```\\n\",\n        \"termsOfService\": \"http://instagram.com/about/legal/terms/api\"\n    },\n    \"host\": \"api.instagram.com\",\n    \"basePath\": \"/v1\",\n    \"schemes\": [\n        \"https\"\n    ],\n    \"produces\": [\n        \"application/json\"\n    ],\n    \"consumes\": [\n        \"application/json\"\n    ],\n    \"tags\": [\n        {\n            \"name\": \"Users\"\n        },\n        {\n            \"name\": \"Relationships\",\n            \"description\": \"Relationships are expressed using the following terms:\\n\\n**outgoing_status**: Your relationship to the user. Can be \\\"follows\\\",\\n  \\\"requested\\\", \\\"none\\\".\\n**incoming_status**: A user's relationship to you. Can be \\\"followed_by\\\",\\n  \\\"requested_by\\\", \\\"blocked_by_you\\\", \\\"none\\\".\\n\"\n        },\n        {\n            \"name\": \"Media\",\n            \"description\": \"At this time, uploading via the API is not possible. We made a conscious\\nchoice not to add this for the following reasons:\\n\\n* Instagram is about your life on the go  we hope to encourage photos\\n  from within the app.\\n* We want to fight spam & low quality photos. Once we allow uploading\\n  from other sources, it's harder to control what comes into the Instagram\\n  ecosystem. All this being said, we're working on ways to ensure users\\n  have a consistent and high-quality experience on our platform.\\n\"\n        },\n        {\n            \"name\": \"Commnts\"\n        },\n        {\n            \"name\": \"Likes\"\n        },\n        {\n            \"name\": \"Tags\"\n        },\n        {\n            \"name\": \"Location\"\n        },\n        {\n            \"name\": \"Subscribtions\"\n        }\n    ],\n    \"securityDefinitions\": {\n        \"oauth\": {\n            \"type\": \"oauth2\",\n            \"flow\": \"implicit\",\n            \"authorizationUrl\": \"https://instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token\",\n            \"scopes\": {\n                \"basic\": \"to read any and all data related to a user (e.g. following/followed-by\\n lists, photos, etc.) (granted by default)\\n\",\n                \"comments\": \"to create or delete comments on a users behalf\",\n                \"relationships\": \"to follow and unfollow users on a users behalf\",\n                \"likes\": \"to like and unlike items on a users behalf\"\n            }\n        },\n        \"key\": {\n            \"type\": \"apiKey\",\n            \"in\": \"query\",\n            \"name\": \"access_token\"\n        }\n    },\n    \"security\": [\n        {\n            \"oauth\": [\n                \"basic\",\n                \"comments\",\n                \"relationships\",\n                \"likes\"\n            ]\n        },\n        {\n            \"key\": []\n        }\n    ],\n    \"parameters\": {\n        \"user-id\": {\n            \"name\": \"user-id\",\n            \"in\": \"path\",\n            \"description\": \"The user identifier number\",\n            \"type\": \"number\",\n            \"required\": true\n        },\n        \"tag-name\": {\n            \"name\": \"tag-name\",\n            \"in\": \"path\",\n            \"description\": \"Tag name\",\n            \"type\": \"string\",\n            \"required\": true\n        }\n    },\n    \"paths\": {\n        \"/users/{user-id}\": {\n            \"parameters\": [\n                {\n                    \"$ref\": \"#/parameters/user-id\"\n                }\n            ],\n            \"get\": {\n                \"security\": [\n                    {\n                        \"key\": []\n                    },\n                    {\n                        \"oauth\": [\n                            \"basic\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"Users\"\n                ],\n                \"description\": \"Get basic information about a user.\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"The user object\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"data\": {\n                                    \"$ref\": \"#/definitions/User\"\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/users/self/feed\": {\n            \"get\": {\n                \"tags\": [\n                    \"Users\"\n                ],\n                \"description\": \"See the authenticated user's feed.\",\n                \"parameters\": [\n                    {\n                        \"name\": \"count\",\n                        \"in\": \"query\",\n                        \"description\": \"Count of media to return.\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"max_id\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media earlier than this max_id.s\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"min_id\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media later than this min_id.\",\n                        \"type\": \"integer\"\n                    }\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/Media\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/users/{user-id}/media/recent\": {\n            \"parameters\": [\n                {\n                    \"$ref\": \"#/parameters/user-id\"\n                }\n            ],\n            \"get\": {\n                \"tags\": [\n                    \"Users\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Get the most recent media published by a user. To get the most recent\\nmedia published by the owner of the access token, you can use `self`\\ninstead of the `user-id`.\\n\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/Media\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                },\n                \"parameters\": [\n                    {\n                        \"name\": \"count\",\n                        \"in\": \"query\",\n                        \"description\": \"Count of media to return.\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"max_timestamp\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media before this UNIX timestamp.\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"min_timestamp\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media after this UNIX timestamp.\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"min_id\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media later than this min_id.\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"max_id\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media earlier than this max_id.\",\n                        \"type\": \"string\"\n                    }\n                ]\n            }\n        },\n        \"/users/self/media/liked\": {\n            \"get\": {\n                \"tags\": [\n                    \"Users\"\n                ],\n                \"description\": \"See the list of media liked by the authenticated user.\\nPrivate media is returned as long as the authenticated user\\nhas permissionto view that media. Liked media lists are only\\navailable for the currently authenticated user.\\n\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/Media\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                },\n                \"parameters\": [\n                    {\n                        \"name\": \"count\",\n                        \"in\": \"query\",\n                        \"description\": \"Count of media to return.\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"max_like_id\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media liked before this id.\",\n                        \"type\": \"integer\"\n                    }\n                ]\n            }\n        },\n        \"/users/search\": {\n            \"get\": {\n                \"tags\": [\n                    \"Users\"\n                ],\n                \"description\": \"Search for a user by name.\",\n                \"parameters\": [\n                    {\n                        \"name\": \"q\",\n                        \"in\": \"query\",\n                        \"description\": \"A query string\",\n                        \"type\": \"string\",\n                        \"required\": true\n                    },\n                    {\n                        \"name\": \"count\",\n                        \"in\": \"query\",\n                        \"description\": \"Number of users to return.\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/MiniProfile\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/users/{user-id}/follows\": {\n            \"parameters\": [\n                {\n                    \"$ref\": \"#/parameters/user-id\"\n                }\n            ],\n            \"get\": {\n                \"tags\": [\n                    \"Relationships\"\n                ],\n                \"description\": \"Get the list of users this user follows.\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/MiniProfile\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/users/{user-id}/followed-by\": {\n            \"parameters\": [\n                {\n                    \"$ref\": \"#/parameters/user-id\"\n                }\n            ],\n            \"get\": {\n                \"tags\": [\n                    \"Relationships\"\n                ],\n                \"description\": \"Get the list of users this user is followed by.\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/MiniProfile\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/users/self/requested-by\": {\n            \"get\": {\n                \"tags\": [\n                    \"Relationships\"\n                ],\n                \"description\": \"List the users who have requested this user's permission to follow.\\n\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"properties\": {\n                                \"meta\": {\n                                    \"properties\": {\n                                        \"code\": {\n                                            \"type\": \"integer\"\n                                        }\n                                    }\n                                },\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/MiniProfile\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/users/{user-id}/relationship\": {\n            \"parameters\": [\n                {\n                    \"$ref\": \"#/parameters/user-id\"\n                }\n            ],\n            \"post\": {\n                \"tags\": [\n                    \"Relationships\"\n                ],\n                \"description\": \"Modify the relationship between the current user and thetarget user.\\n\",\n                \"security\": [\n                    {\n                        \"oauth\": [\n                            \"relationships\"\n                        ]\n                    }\n                ],\n                \"parameters\": [\n                    {\n                        \"name\": \"action\",\n                        \"in\": \"body\",\n                        \"description\": \"One of follow/unfollow/block/unblock/approve/ignore.\",\n                        \"schema\": {\n                            \"type\": \"string\",\n                            \"enum\": [\n                                \"follow\",\n                                \"unfollow\",\n                                \"block\",\n                                \"unblock\",\n                                \"approve\"\n                            ]\n                        }\n                    }\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/MiniProfile\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/media/{media-id}\": {\n            \"parameters\": [\n                {\n                    \"name\": \"media-id\",\n                    \"in\": \"path\",\n                    \"description\": \"The media ID\",\n                    \"type\": \"integer\",\n                    \"required\": true\n                }\n            ],\n            \"get\": {\n                \"tags\": [\n                    \"Media\"\n                ],\n                \"description\": \"Get information about a media object.\\nThe returned type key will allow you to differentiate between `image`\\nand `video` media.\\n\\nNote: if you authenticate with an OAuth Token, you will receive the\\n`user_has_liked` key which quickly tells you whether the current user\\nhas liked this media item.\\n\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"$ref\": \"#/definitions/Media\"\n                        }\n                    }\n                }\n            }\n        },\n        \"/media1/{shortcode}\": {\n            \"parameters\": [\n                {\n                    \"name\": \"shortcode\",\n                    \"in\": \"path\",\n                    \"description\": \"The media shortcode\",\n                    \"type\": \"string\",\n                    \"required\": true\n                }\n            ],\n            \"get\": {\n                \"tags\": [\n                    \"Media\"\n                ],\n                \"description\": \"This endpoint returns the same response as **GET** `/media/media-id`.\\n\\nA media object's shortcode can be found in its shortlink URL.\\nAn example shortlink is `http://instagram.com/p/D/`\\nIts corresponding shortcode is D.\\n\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"$ref\": \"#/definitions/Media\"\n                        }\n                    }\n                }\n            }\n        },\n        \"/media/search\": {\n            \"get\": {\n                \"tags\": [\n                    \"Media\"\n                ],\n                \"description\": \"Search for media in a given area. The default time span is set to 5\\ndays. The time span must not exceed 7 days. Defaults time stamps cover\\nthe last 5 days. Can return mix of image and video types.\\n\",\n                \"parameters\": [\n                    {\n                        \"name\": \"LAT\",\n                        \"description\": \"Latitude of the center search coordinate. If used, lng is required.\\n\",\n                        \"type\": \"number\",\n                        \"in\": \"query\"\n                    },\n                    {\n                        \"name\": \"MIN_TIMESTAMP\",\n                        \"description\": \"A unix timestamp. All media returned will be taken later than\\nthis timestamp.\\n\",\n                        \"type\": \"integer\",\n                        \"in\": \"query\"\n                    },\n                    {\n                        \"name\": \"LNG\",\n                        \"description\": \"Longitude of the center search coordinate. If used, lat is required.\\n\",\n                        \"type\": \"number\",\n                        \"in\": \"query\"\n                    },\n                    {\n                        \"name\": \"MAX_TIMESTAMP\",\n                        \"description\": \"A unix timestamp. All media returned will be taken earlier than this\\ntimestamp.\\n\",\n                        \"type\": \"integer\",\n                        \"in\": \"query\"\n                    },\n                    {\n                        \"name\": \"DISTANCE\",\n                        \"description\": \"Default is 1km (distance=1000), max distance is 5km.\",\n                        \"type\": \"integer\",\n                        \"maximum\": 5000,\n                        \"default\": 1000,\n                        \"in\": \"query\"\n                    }\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"description\": \"List of all media with added `distance` property\",\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"allOf\": [\n                                            {\n                                                \"$ref\": \"#/definitions/Media\"\n                                            },\n                                            {\n                                                \"properties\": {\n                                                    \"distance\": {\n                                                        \"type\": \"number\"\n                                                    }\n                                                }\n                                            }\n                                        ]\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/media/popular\": {\n            \"get\": {\n                \"tags\": [\n                    \"Media\"\n                ],\n                \"description\": \"Get a list of what media is most popular at the moment.\\nCan return mix of image and video types.\\n\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/Media\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/media/{media-id}/comments\": {\n            \"parameters\": [\n                {\n                    \"name\": \"media-id\",\n                    \"in\": \"path\",\n                    \"description\": \"Media ID\",\n                    \"type\": \"integer\",\n                    \"required\": true\n                }\n            ],\n            \"get\": {\n                \"tags\": [\n                    \"Comments\"\n                ],\n                \"description\": \"Get a list of recent comments on a media object.\\n\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"properties\": {\n                                \"meta\": {\n                                    \"properties\": {\n                                        \"code\": {\n                                            \"type\": \"number\"\n                                        }\n                                    }\n                                },\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/Comment\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            },\n            \"post\": {\n                \"tags\": [\n                    \"Comments\",\n                    \"Media\"\n                ],\n                \"description\": \"Create a comment on a media object with the following rules:\\n\\n* The total length of the comment cannot exceed 300 characters.\\n* The comment cannot contain more than 4 hashtags.\\n* The comment cannot contain more than 1 URL.\\n* The comment cannot consist of all capital letters.\\n\",\n                \"security\": [\n                    {\n                        \"oauth\": [\n                            \"comments\"\n                        ]\n                    }\n                ],\n                \"parameters\": [\n                    {\n                        \"name\": \"TEXT\",\n                        \"description\": \"Text to post as a comment on the media object as specified in\\nmedia-id.\\n\",\n                        \"in\": \"body\",\n                        \"schema\": {\n                            \"type\": \"number\"\n                        }\n                    }\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"meta\": {\n                                    \"properties\": {\n                                        \"code\": {\n                                            \"type\": \"number\"\n                                        }\n                                    }\n                                },\n                                \"data\": {\n                                    \"type\": \"object\"\n                                }\n                            }\n                        }\n                    }\n                }\n            },\n            \"delete\": {\n                \"tags\": [\n                    \"Comments\"\n                ],\n                \"description\": \"Remove a comment either on the authenticated user's media object or\\nauthored by the authenticated user.\\n\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"meta\": {\n                                    \"properties\": {\n                                        \"code\": {\n                                            \"type\": \"number\"\n                                        }\n                                    }\n                                },\n                                \"data\": {\n                                    \"type\": \"object\"\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/media/{media-id}/likes\": {\n            \"parameters\": [\n                {\n                    \"name\": \"media-id\",\n                    \"in\": \"path\",\n                    \"description\": \"Media ID\",\n                    \"type\": \"integer\",\n                    \"required\": true\n                }\n            ],\n            \"get\": {\n                \"tags\": [\n                    \"Likes\",\n                    \"Media\"\n                ],\n                \"description\": \"Get a list of users who have liked this media.\\n\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"properties\": {\n                                \"meta\": {\n                                    \"properties\": {\n                                        \"code\": {\n                                            \"type\": \"number\"\n                                        }\n                                    }\n                                },\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/Like\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            },\n            \"post\": {\n                \"tags\": [\n                    \"Likes\"\n                ],\n                \"description\": \"Set a like on this media by the currently authenticated user.\",\n                \"security\": [\n                    {\n                        \"oauth\": [\n                            \"comments\"\n                        ]\n                    }\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"meta\": {\n                                    \"properties\": {\n                                        \"code\": {\n                                            \"type\": \"number\"\n                                        }\n                                    }\n                                },\n                                \"data\": {\n                                    \"type\": \"object\"\n                                }\n                            }\n                        }\n                    }\n                }\n            },\n            \"delete\": {\n                \"tags\": [\n                    \"Likes\"\n                ],\n                \"description\": \"Remove a like on this media by the currently authenticated user.\\n\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"meta\": {\n                                    \"properties\": {\n                                        \"code\": {\n                                            \"type\": \"number\"\n                                        }\n                                    }\n                                },\n                                \"data\": {\n                                    \"type\": \"object\"\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/tags/{tag-name}\": {\n            \"parameters\": [\n                {\n                    \"$ref\": \"#/parameters/tag-name\"\n                }\n            ],\n            \"get\": {\n                \"tags\": [\n                    \"Tags\"\n                ],\n                \"description\": \"Get information about a tag object.\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"$ref\": \"#/definitions/Tag\"\n                        }\n                    }\n                }\n            }\n        },\n        \"/tags/{tag-name}/media/recent\": {\n            \"parameters\": [\n                {\n                    \"$ref\": \"#/parameters/tag-name\"\n                }\n            ],\n            \"get\": {\n                \"tags\": [\n                    \"Tags\"\n                ],\n                \"description\": \"Get a list of recently tagged media. Use the `max_tag_id` and\\n`min_tag_id` parameters in the pagination response to paginate through\\nthese objects.\\n\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/Tag\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/tags/search\": {\n            \"get\": {\n                \"tags\": [\n                    \"Tags\"\n                ],\n                \"parameters\": [\n                    {\n                        \"name\": \"q\",\n                        \"description\": \"A valid tag name without a leading #. (eg. snowy, nofilter)\\n\",\n                        \"in\": \"query\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"meta\": {\n                                    \"properties\": {\n                                        \"code\": {\n                                            \"type\": \"integer\"\n                                        }\n                                    }\n                                },\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/Tag\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/locations/{location-id}\": {\n            \"parameters\": [\n                {\n                    \"name\": \"location-id\",\n                    \"description\": \"Location ID\",\n                    \"in\": \"path\",\n                    \"type\": \"integer\",\n                    \"required\": true\n                }\n            ],\n            \"get\": {\n                \"tags\": [\n                    \"Location\"\n                ],\n                \"description\": \"Get information about a location.\",\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"data\": {\n                                    \"$ref\": \"#/definitions/Location\"\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/locations/{location-id}/media/recent\": {\n            \"parameters\": [\n                {\n                    \"name\": \"location-id\",\n                    \"description\": \"Location ID\",\n                    \"in\": \"path\",\n                    \"type\": \"integer\",\n                    \"required\": true\n                }\n            ],\n            \"get\": {\n                \"tags\": [\n                    \"Location\",\n                    \"Media\"\n                ],\n                \"description\": \"Get a list of recent media objects from a given location.\",\n                \"parameters\": [\n                    {\n                        \"name\": \"max_timestamp\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media before this UNIX timestamp.\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"min_timestamp\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media after this UNIX timestamp.\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"min_id\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media later than this min_id.\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"name\": \"max_id\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media earlier than this max_id.\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/Media\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/locations/search\": {\n            \"get\": {\n                \"tags\": [\n                    \"Location\"\n                ],\n                \"description\": \"Search for a location by geographic coordinate.\",\n                \"parameters\": [\n                    {\n                        \"name\": \"distance\",\n                        \"in\": \"query\",\n                        \"description\": \"Default is 1000m (distance=1000), max distance is 5000.\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"facebook_places_id\",\n                        \"in\": \"query\",\n                        \"description\": \"Returns a location mapped off of a Facebook places id. If used, a\\nFoursquare id and lat, lng are not required.\\n\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"foursquare_id\",\n                        \"in\": \"query\",\n                        \"description\": \"returns a location mapped off of a foursquare v1 api location id.\\nIf used, you are not required to use lat and lng. Note that this\\nmethod is deprecated; you should use the new foursquare IDs with V2\\nof their API.\\n\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"lat\",\n                        \"in\": \"query\",\n                        \"description\": \"atitude of the center search coordinate. If used, lng is required.\\n\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"name\": \"lng\",\n                        \"in\": \"query\",\n                        \"description\": \"ongitude of the center search coordinate. If used, lat is required.\\n\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"name\": \"foursquare_v2_id\",\n                        \"in\": \"query\",\n                        \"description\": \"Returns a location mapped off of a foursquare v2 api location id. If\\nused, you are not required to use lat and lng.\\n\",\n                        \"type\": \"integer\"\n                    }\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\",\n                        \"schema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\n                                \"data\": {\n                                    \"type\": \"array\",\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/Location\"\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        },\n        \"/geographies/{geo-id}/media/recent\": {\n            \"parameters\": [\n                {\n                    \"name\": \"geo-id\",\n                    \"in\": \"path\",\n                    \"description\": \"Geolocation ID\",\n                    \"type\": \"integer\",\n                    \"required\": true\n                }\n            ],\n            \"get\": {\n                \"description\": \"Get recent media from a geography subscription that you created.\\n**Note**: You can only access Geographies that were explicitly created\\nby your OAuth client. Check the Geography Subscriptions section of the\\n[real-time updates page](https://instagram.com/developer/realtime/).\\nWhen you create a subscription to some geography\\nthat you define, you will be returned a unique geo-id that can be used\\nin this query. To backfill photos from the location covered by this\\ngeography, use the [media search endpoint\\n](https://instagram.com/developer/endpoints/media/).\\n\",\n                \"parameters\": [\n                    {\n                        \"name\": \"count\",\n                        \"in\": \"query\",\n                        \"description\": \"Max number of media to return.\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"name\": \"min_id\",\n                        \"in\": \"query\",\n                        \"description\": \"Return media before this `min_id`.\",\n                        \"type\": \"integer\"\n                    }\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"OK\"\n                    }\n                }\n            }\n        }\n    },\n    \"definitions\": {\n        \"User\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"id\": {\n                    \"type\": \"integer\"\n                },\n                \"username\": {\n                    \"type\": \"string\"\n                },\n                \"full_name\": {\n                    \"type\": \"string\"\n                },\n                \"profile_picture\": {\n                    \"type\": \"string\"\n                },\n                \"bio\": {\n                    \"type\": \"string\"\n                },\n                \"website\": {\n                    \"type\": \"string\"\n                },\n                \"counts\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"media\": {\n                            \"type\": \"integer\"\n                        },\n                        \"follows\": {\n                            \"type\": \"integer\"\n                        },\n                        \"follwed_by\": {\n                            \"type\": \"integer\"\n                        }\n                    }\n                }\n            }\n        },\n        \"Media\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"created_time\": {\n                    \"description\": \"Epoc time (ms)\",\n                    \"type\": \"integer\"\n                },\n                \"type\": {\n                    \"type\": \"string\"\n                },\n                \"filter\": {\n                    \"type\": \"string\"\n                },\n                \"tags\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                        \"$ref\": \"#/definitions/Tag\"\n                    }\n                },\n                \"id\": {\n                    \"type\": \"integer\"\n                },\n                \"user\": {\n                    \"$ref\": \"#/definitions/MiniProfile\"\n                },\n                \"users_in_photo\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                        \"$ref\": \"#/definitions/MiniProfile\"\n                    }\n                },\n                \"location\": {\n                    \"$ref\": \"#/definitions/Location\"\n                },\n                \"comments:\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"count\": {\n                            \"type\": \"integer\"\n                        },\n                        \"data\": {\n                            \"type\": \"array\",\n                            \"items\": {\n                                \"$ref\": \"#/definitions/Comment\"\n                            }\n                        }\n                    }\n                },\n                \"likes\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"count\": {\n                            \"type\": \"integer\"\n                        },\n                        \"data\": {\n                            \"type\": \"array\",\n                            \"items\": {\n                                \"$ref\": \"#/definitions/MiniProfile\"\n                            }\n                        }\n                    }\n                },\n                \"images\": {\n                    \"properties\": {\n                        \"low_resolution\": {\n                            \"$ref\": \"#/definitions/Image\"\n                        },\n                        \"thumbnail\": {\n                            \"$ref\": \"#/definitions/Image\"\n                        },\n                        \"standard_resolution\": {\n                            \"$ref\": \"#/definitions/Image\"\n                        }\n                    }\n                },\n                \"videos\": {\n                    \"properties\": {\n                        \"low_resolution\": {\n                            \"$ref\": \"#/definitions/Image\"\n                        },\n                        \"standard_resolution\": {\n                            \"$ref\": \"#/definitions/Image\"\n                        }\n                    }\n                }\n            }\n        },\n        \"Location\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"id\": {\n                    \"type\": \"string\"\n                },\n                \"name\": {\n                    \"type\": \"string\"\n                },\n                \"latitude\": {\n                    \"type\": \"number\"\n                },\n                \"longitude\": {\n                    \"type\": \"number\"\n                }\n            }\n        },\n        \"Comment\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"id\": {\n                    \"type\": \"string\"\n                },\n                \"created_time\": {\n                    \"type\": \"string\"\n                },\n                \"text\": {\n                    \"type\": \"string\"\n                },\n                \"from\": {\n                    \"$ref\": \"#/definitions/MiniProfile\"\n                }\n            }\n        },\n        \"Like\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"user_name\": {\n                    \"type\": \"string\"\n                },\n                \"first_name\": {\n                    \"type\": \"string\"\n                },\n                \"last_name\": {\n                    \"type\": \"string\"\n                },\n                \"type\": {\n                    \"type\": \"string\"\n                },\n                \"id\": {\n                    \"type\": \"string\"\n                }\n            }\n        },\n        \"Tag\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"media_count\": {\n                    \"type\": \"integer\"\n                },\n                \"name\": {\n                    \"type\": \"string\"\n                }\n            }\n        },\n        \"Image\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"width\": {\n                    \"type\": \"integer\"\n                },\n                \"height\": {\n                    \"type\": \"integer\"\n                },\n                \"url\": {\n                    \"type\": \"string\"\n                }\n            }\n        },\n        \"MiniProfile\": {\n            \"type\": \"object\",\n            \"description\": \"A shorter version of User for likes array\",\n            \"properties\": {\n                \"user_name\": {\n                    \"type\": \"string\"\n                },\n                \"full_name\": {\n                    \"type\": \"string\"\n                },\n                \"id\": {\n                    \"type\": \"integer\"\n                },\n                \"profile_picture\": {\n                    \"type\": \"string\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/azure-arm-storage.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"schemes\": [\n    \"https\"\n  ],\n  \"host\": \"management.azure.com\",\n  \"info\": {\n    \"description\": \"The Azure Storage Management API.\",\n    \"title\": \"StorageManagement\",\n    \"version\": \"2016-12-01\",\n    \"x-apisguru-categories\": [\n      \"storage\"\n    ],\n    \"x-logo\": {\n      \"url\": \"https://api.apis.guru/v2/cache/logo/https_assets.onestore.ms_cdnfiles_onestorerolling-1606-01000_shell_v3_images_logo_microsoft.png\"\n    },\n    \"x-ms-code-generation-settings\": {\n      \"name\": \"StorageManagementClient\"\n    },\n    \"x-origin\": [\n      {\n        \"format\": \"swagger\",\n        \"url\": \"https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-storage/2016-12-01/swagger/storage.json\",\n        \"version\": \"2.0\"\n      }\n    ],\n    \"x-preferred\": true,\n    \"x-providerName\": \"azure.com\",\n    \"x-serviceName\": \"arm-storage\",\n    \"x-tags\": [\n      \"Azure\",\n      \"Microsoft\"\n    ]\n  },\n  \"consumes\": [\n    \"application/json\"\n  ],\n  \"produces\": [\n    \"application/json\",\n    \"text/json\"\n  ],\n  \"parameters\": {\n    \"ApiVersionParameter\": {\n      \"description\": \"Client Api Version.\",\n      \"in\": \"query\",\n      \"name\": \"api-version\",\n      \"required\": true,\n      \"type\": \"string\"\n    },\n    \"ResourceGroupName\": {\n      \"description\": \"The name of the resource group within the user's subscription. The name is case insensitive.\",\n      \"in\": \"path\",\n      \"maxLength\": 90,\n      \"minLength\": 1,\n      \"name\": \"resourceGroupName\",\n      \"pattern\": \"^[-\\\\w\\\\._\\\\(\\\\)]+$\",\n      \"required\": true,\n      \"type\": \"string\",\n      \"x-ms-parameter-location\": \"method\"\n    },\n    \"SubscriptionIdParameter\": {\n      \"description\": \"Gets subscription credentials which uniquely identify the Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.\",\n      \"in\": \"path\",\n      \"name\": \"subscriptionId\",\n      \"required\": true,\n      \"type\": \"string\"\n    }\n  },\n  \"paths\": {\n    \"/subscriptions/{subscriptionId}/providers/Microsoft.Storage/checkNameAvailability\": {\n      \"post\": {\n        \"description\": \"Checks that the storage account name is valid and is not already in use.\",\n        \"operationId\": \"StorageAccounts_CheckNameAvailability\",\n        \"parameters\": [\n          {\n            \"description\": \"The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.\",\n            \"in\": \"body\",\n            \"name\": \"accountName\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/StorageAccountCheckNameAvailabilityParameters\"\n            }\n          },\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- Operation to check the storage account name availability was successful.\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/CheckNameAvailabilityResult\"\n            }\n          }\n        },\n        \"tags\": [\n          \"StorageAccounts\"\n        ]\n      }\n    },\n    \"/subscriptions/{subscriptionId}/providers/Microsoft.Storage/storageAccounts\": {\n      \"get\": {\n        \"description\": \"Lists all the storage accounts available under the subscription. Note that storage keys are not returned; use the ListKeys operation for this.\",\n        \"operationId\": \"StorageAccounts_List\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- List of storage accounts was retrieved and returned successfully.\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/StorageAccountListResult\"\n            }\n          }\n        },\n        \"tags\": [\n          \"StorageAccounts\"\n        ],\n        \"x-ms-pageable\": {}\n      }\n    },\n    \"/subscriptions/{subscriptionId}/providers/Microsoft.Storage/usages\": {\n      \"get\": {\n        \"description\": \"Gets the current usage count and the limit for the resources under the subscription.\",\n        \"operationId\": \"Usage_List\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- current usage acount and limit retrieved and returned successfully.\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/UsageListResult\"\n            }\n          }\n        },\n        \"tags\": [\n          \"Usage\"\n        ],\n        \"x-ms-pageable\": {}\n      }\n    },\n    \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts\": {\n      \"get\": {\n        \"description\": \"Lists all the storage accounts available under the given resource group. Note that storage keys are not returned; use the ListKeys operation for this.\",\n        \"operationId\": \"StorageAccounts_ListByResourceGroup\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/ResourceGroupName\"\n          },\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- List of storage accounts in the given resource group retrieved and returned successfully.\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/StorageAccountListResult\"\n            }\n          }\n        },\n        \"tags\": [\n          \"StorageAccounts\"\n        ],\n        \"x-ms-pageable\": {}\n      }\n    },\n    \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}\": {\n      \"delete\": {\n        \"description\": \"Deletes a storage account in Microsoft Azure.\",\n        \"operationId\": \"StorageAccounts_Delete\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/ResourceGroupName\"\n          },\n          {\n            \"description\": \"The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.\",\n            \"in\": \"path\",\n            \"maxLength\": 24,\n            \"minLength\": 3,\n            \"name\": \"accountName\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- storage account deleted successfully.\"\n          },\n          \"204\": {\n            \"description\": \"NoContent -- account does not exist in the subscription.\"\n          }\n        },\n        \"tags\": [\n          \"StorageAccounts\"\n        ]\n      },\n      \"get\": {\n        \"description\": \"Returns the properties for the specified storage account including but not limited to name, SKU name, location, and account status. The ListKeys operation should be used to retrieve storage keys.\",\n        \"operationId\": \"StorageAccounts_GetProperties\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/ResourceGroupName\"\n          },\n          {\n            \"description\": \"The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.  \",\n            \"in\": \"path\",\n            \"maxLength\": 24,\n            \"minLength\": 3,\n            \"name\": \"accountName\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- properties retrieved successfully for the storage account.\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/StorageAccount\"\n            }\n          }\n        },\n        \"tags\": [\n          \"StorageAccounts\"\n        ]\n      },\n      \"patch\": {\n        \"description\": \"The update operation can be used to update the SKU, encryption, access tier, or tags for a storage account. It can also be used to map the account to a custom domain. Only one custom domain is supported per storage account; the replacement/change of custom domain is not supported. In order to replace an old custom domain, the old value must be cleared/unregistered before a new value can be set. The update of multiple properties is supported. This call does not change the storage keys for the account. If you want to change the storage account keys, use the regenerate keys operation. The location and name of the storage account cannot be changed after creation.\",\n        \"operationId\": \"StorageAccounts_Update\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/ResourceGroupName\"\n          },\n          {\n            \"description\": \"The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.\",\n            \"in\": \"path\",\n            \"maxLength\": 24,\n            \"minLength\": 3,\n            \"name\": \"accountName\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"description\": \"The parameters to provide for the updated account.\",\n            \"in\": \"body\",\n            \"name\": \"parameters\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/StorageAccountUpdateParameters\"\n            }\n          },\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- storage account properties updated successfully.\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/StorageAccount\"\n            }\n          }\n        },\n        \"tags\": [\n          \"StorageAccounts\"\n        ]\n      },\n      \"put\": {\n        \"description\": \"Asynchronously creates a new storage account with the specified parameters. If an account is already created and a subsequent create request is issued with different properties, the account properties will be updated. If an account is already created and a subsequent create or update request is issued with the exact same set of properties, the request will succeed.\",\n        \"operationId\": \"StorageAccounts_Create\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/ResourceGroupName\"\n          },\n          {\n            \"description\": \"The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.\",\n            \"in\": \"path\",\n            \"maxLength\": 24,\n            \"minLength\": 3,\n            \"name\": \"accountName\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"description\": \"The parameters to provide for the created account.\",\n            \"in\": \"body\",\n            \"name\": \"parameters\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/StorageAccountCreateParameters\"\n            }\n          },\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- returned when the storage account was already created from a previous request with the same properties specified in the request body.\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/StorageAccount\"\n            }\n          },\n          \"202\": {\n            \"description\": \"Accepted -- Create or update request accepted; operation will complete asynchronously.\"\n          }\n        },\n        \"tags\": [\n          \"StorageAccounts\"\n        ],\n        \"x-ms-long-running-operation\": true\n      }\n    },\n    \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/ListAccountSas\": {\n      \"post\": {\n        \"description\": \"List SAS credentials of a storage account.\",\n        \"operationId\": \"StorageAccounts_ListAccountSAS\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/ResourceGroupName\"\n          },\n          {\n            \"description\": \"The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.  \",\n            \"in\": \"path\",\n            \"maxLength\": 24,\n            \"minLength\": 3,\n            \"name\": \"accountName\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"description\": \"The parameters to provide to list SAS credentials for the storage account.\",\n            \"in\": \"body\",\n            \"name\": \"parameters\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/AccountSasParameters\"\n            }\n          },\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- returned the account SAS created for the storage account requested.\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/ListAccountSasResponse\"\n            }\n          }\n        },\n        \"tags\": [\n          \"StorageAccounts\"\n        ]\n      }\n    },\n    \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/ListServiceSas\": {\n      \"post\": {\n        \"description\": \"List service SAS credentials of a specific resource.\",\n        \"operationId\": \"StorageAccounts_ListServiceSAS\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/ResourceGroupName\"\n          },\n          {\n            \"description\": \"The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.\",\n            \"in\": \"path\",\n            \"maxLength\": 24,\n            \"minLength\": 3,\n            \"name\": \"accountName\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"description\": \"The parameters to provide to list service SAS credentials.\",\n            \"in\": \"body\",\n            \"name\": \"parameters\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/ServiceSasParameters\"\n            }\n          },\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- returned the service SAS created for the storage service requested.\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/ListServiceSasResponse\"\n            }\n          }\n        },\n        \"tags\": [\n          \"StorageAccounts\"\n        ]\n      }\n    },\n    \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/listKeys\": {\n      \"post\": {\n        \"description\": \"Lists the access keys for the specified storage account.\",\n        \"operationId\": \"StorageAccounts_ListKeys\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/ResourceGroupName\"\n          },\n          {\n            \"description\": \"The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.\",\n            \"in\": \"path\",\n            \"maxLength\": 24,\n            \"minLength\": 3,\n            \"name\": \"accountName\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- list of keys retrieved and returned successfully.\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/StorageAccountListKeysResult\"\n            }\n          }\n        },\n        \"tags\": [\n          \"StorageAccounts\"\n        ]\n      }\n    },\n    \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}/regenerateKey\": {\n      \"post\": {\n        \"description\": \"Regenerates one of the access keys for the specified storage account.\",\n        \"operationId\": \"StorageAccounts_RegenerateKey\",\n        \"parameters\": [\n          {\n            \"$ref\": \"#/parameters/ResourceGroupName\"\n          },\n          {\n            \"description\": \"The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only.\",\n            \"in\": \"path\",\n            \"maxLength\": 24,\n            \"minLength\": 3,\n            \"name\": \"accountName\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"description\": \"Specifies name of the key which should be regenerated -- key1 or key2.\",\n            \"in\": \"body\",\n            \"name\": \"regenerateKey\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/StorageAccountRegenerateKeyParameters\"\n            }\n          },\n          {\n            \"$ref\": \"#/parameters/ApiVersionParameter\"\n          },\n          {\n            \"$ref\": \"#/parameters/SubscriptionIdParameter\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK -- specified key regenerated successfully.\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/StorageAccountListKeysResult\"\n            }\n          }\n        },\n        \"tags\": [\n          \"StorageAccounts\"\n        ]\n      }\n    }\n  },\n  \"definitions\": {\n    \"AccountSasParameters\": {\n      \"description\": \"The parameters to list SAS credentials of a storage account.\",\n      \"properties\": {\n        \"keyToSign\": {\n          \"description\": \"The key to sign the account SAS token with.\",\n          \"type\": \"string\"\n        },\n        \"signedExpiry\": {\n          \"description\": \"The time at which the shared access signature becomes invalid.\",\n          \"format\": \"date-time\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"SharedAccessExpiryTime\"\n        },\n        \"signedIp\": {\n          \"description\": \"An IP address or a range of IP addresses from which to accept requests.\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"IPAddressOrRange\"\n        },\n        \"signedPermission\": {\n          \"description\": \"The signed permissions for the account SAS. Possible values include: Read (r), Write (w), Delete (d), List (l), Add (a), Create (c), Update (u) and Process (p).\",\n          \"enum\": [\n            \"r\",\n            \"d\",\n            \"w\",\n            \"l\",\n            \"a\",\n            \"c\",\n            \"u\",\n            \"p\"\n          ],\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"Permissions\"\n        },\n        \"signedProtocol\": {\n          \"description\": \"The protocol permitted for a request made with the account SAS.\",\n          \"enum\": [\n            \"https,http\",\n            \"https\"\n          ],\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"Protocols\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"HttpProtocol\"\n          }\n        },\n        \"signedResourceTypes\": {\n          \"description\": \"The signed resource types that are accessible with the account SAS. Service (s): Access to service-level APIs; Container (c): Access to container-level APIs; Object (o): Access to object-level APIs for blobs, queue messages, table entities, and files.\",\n          \"enum\": [\n            \"s\",\n            \"c\",\n            \"o\"\n          ],\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"ResourceTypes\"\n        },\n        \"signedServices\": {\n          \"description\": \"The signed services accessible with the account SAS. Possible values include: Blob (b), Queue (q), Table (t), File (f).\",\n          \"enum\": [\n            \"b\",\n            \"q\",\n            \"t\",\n            \"f\"\n          ],\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"Services\"\n        },\n        \"signedStart\": {\n          \"description\": \"The time at which the SAS becomes valid.\",\n          \"format\": \"date-time\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"SharedAccessStartTime\"\n        }\n      },\n      \"required\": [\n        \"signedServices\",\n        \"signedResourceTypes\",\n        \"signedPermission\",\n        \"signedExpiry\"\n      ]\n    },\n    \"CheckNameAvailabilityResult\": {\n      \"description\": \"The CheckNameAvailability operation response.\",\n      \"properties\": {\n        \"message\": {\n          \"description\": \"Gets an error message explaining the Reason value in more detail.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"nameAvailable\": {\n          \"description\": \"Gets a boolean value that indicates whether the name is available for you to use. If true, the name is available. If false, the name has already been taken or is invalid and cannot be used.\",\n          \"readOnly\": true,\n          \"type\": \"boolean\"\n        },\n        \"reason\": {\n          \"description\": \"Gets the reason that a storage account name could not be used. The Reason element is only returned if NameAvailable is false.\",\n          \"enum\": [\n            \"AccountNameInvalid\",\n            \"AlreadyExists\"\n          ],\n          \"readOnly\": true,\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"Reason\"\n          }\n        }\n      }\n    },\n    \"CustomDomain\": {\n      \"description\": \"The custom domain assigned to this storage account. This can be set via Update.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Gets or sets the custom domain name assigned to the storage account. Name is the CNAME source.\",\n          \"type\": \"string\"\n        },\n        \"useSubDomain\": {\n          \"description\": \"Indicates whether indirect CName validation is enabled. Default value is false. This should only be set on updates.\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"Encryption\": {\n      \"description\": \"The encryption settings on the storage account.\",\n      \"properties\": {\n        \"keySource\": {\n          \"description\": \"The encryption keySource (provider). Possible values (case-insensitive):  Microsoft.Storage\",\n          \"enum\": [\n            \"Microsoft.Storage\"\n          ],\n          \"type\": \"string\"\n        },\n        \"services\": {\n          \"$ref\": \"#/definitions/EncryptionServices\",\n          \"description\": \"List of services which support encryption.\"\n        }\n      },\n      \"required\": [\n        \"keySource\"\n      ]\n    },\n    \"EncryptionService\": {\n      \"description\": \"A service that allows server-side encryption to be used.\",\n      \"properties\": {\n        \"enabled\": {\n          \"description\": \"A boolean indicating whether or not the service encrypts the data as it is stored.\",\n          \"type\": \"boolean\"\n        },\n        \"lastEnabledTime\": {\n          \"description\": \"Gets a rough estimate of the date/time when the encryption was last enabled by the user. Only returned when encryption is enabled. There might be some unencrypted blobs which were written after this time, as it is just a rough estimate.\",\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"EncryptionServices\": {\n      \"description\": \"A list of services that support encryption.\",\n      \"properties\": {\n        \"blob\": {\n          \"$ref\": \"#/definitions/EncryptionService\",\n          \"description\": \"The encryption function of the blob storage service.\"\n        },\n        \"file\": {\n          \"$ref\": \"#/definitions/EncryptionService\",\n          \"description\": \"The encryption function of the file storage service.\"\n        },\n        \"queue\": {\n          \"$ref\": \"#/definitions/EncryptionService\",\n          \"description\": \"The encryption function of the queue storage service.\",\n          \"readOnly\": true\n        },\n        \"table\": {\n          \"$ref\": \"#/definitions/EncryptionService\",\n          \"description\": \"The encryption function of the table storage service.\",\n          \"readOnly\": true\n        }\n      }\n    },\n    \"Endpoints\": {\n      \"description\": \"The URIs that are used to perform a retrieval of a public blob, queue, or table object.\",\n      \"properties\": {\n        \"blob\": {\n          \"description\": \"Gets the blob endpoint.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"file\": {\n          \"description\": \"Gets the file endpoint.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"queue\": {\n          \"description\": \"Gets the queue endpoint.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"table\": {\n          \"description\": \"Gets the table endpoint.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"ListAccountSasResponse\": {\n      \"description\": \"The List SAS credentials operation response.\",\n      \"properties\": {\n        \"accountSasToken\": {\n          \"description\": \"List SAS credentials of storage account.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"ListServiceSasResponse\": {\n      \"description\": \"The List service SAS credentials operation response.\",\n      \"properties\": {\n        \"serviceSasToken\": {\n          \"description\": \"List service SAS credentials of speicific resource.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"Resource\": {\n      \"description\": \"Describes a storage resource.\",\n      \"properties\": {\n        \"id\": {\n          \"description\": \"Resource Id\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"location\": {\n          \"description\": \"Resource location\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"description\": \"Resource name\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"tags\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Tags assigned to a resource; can be used for viewing and grouping a resource (across resource groups).\",\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"description\": \"Resource type\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        }\n      },\n      \"x-ms-azure-resource\": true\n    },\n    \"ServiceSasParameters\": {\n      \"description\": \"The parameters to list service SAS credentials of a speicific resource.\",\n      \"properties\": {\n        \"canonicalizedResource\": {\n          \"description\": \"The canonical path to the signed resource.\",\n          \"type\": \"string\"\n        },\n        \"endPk\": {\n          \"description\": \"The end of partition key.\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"PartitionKeyEnd\"\n        },\n        \"endRk\": {\n          \"description\": \"The end of row key.\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"RowKeyEnd\"\n        },\n        \"keyToSign\": {\n          \"description\": \"The key to sign the account SAS token with.\",\n          \"type\": \"string\"\n        },\n        \"rscc\": {\n          \"description\": \"The response header override for cache control.\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"CacheControl\"\n        },\n        \"rscd\": {\n          \"description\": \"The response header override for content disposition.\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"ContentDisposition\"\n        },\n        \"rsce\": {\n          \"description\": \"The response header override for content encoding.\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"ContentEncoding\"\n        },\n        \"rscl\": {\n          \"description\": \"The response header override for content language.\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"ContentLanguage\"\n        },\n        \"rsct\": {\n          \"description\": \"The response header override for content type.\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"ContentType\"\n        },\n        \"signedExpiry\": {\n          \"description\": \"The time at which the shared access signature becomes invalid.\",\n          \"format\": \"date-time\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"SharedAccessExpiryTime\"\n        },\n        \"signedIdentifier\": {\n          \"description\": \"A unique value up to 64 characters in length that correlates to an access policy specified for the container, queue, or table.\",\n          \"maxLength\": 64,\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"Identifier\"\n        },\n        \"signedIp\": {\n          \"description\": \"An IP address or a range of IP addresses from which to accept requests.\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"IPAddressOrRange\"\n        },\n        \"signedPermission\": {\n          \"description\": \"The signed permissions for the service SAS. Possible values include: Read (r), Write (w), Delete (d), List (l), Add (a), Create (c), Update (u) and Process (p).\",\n          \"enum\": [\n            \"r\",\n            \"d\",\n            \"w\",\n            \"l\",\n            \"a\",\n            \"c\",\n            \"u\",\n            \"p\"\n          ],\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"Permissions\"\n        },\n        \"signedProtocol\": {\n          \"description\": \"The protocol permitted for a request made with the account SAS.\",\n          \"enum\": [\n            \"https,http\",\n            \"https\"\n          ],\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"Protocols\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"HttpProtocol\"\n          }\n        },\n        \"signedResource\": {\n          \"description\": \"The signed services accessible with the service SAS. Possible values include: Blob (b), Container (c), File (f), Share (s).\",\n          \"enum\": [\n            \"b\",\n            \"c\",\n            \"f\",\n            \"s\"\n          ],\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"Resource\"\n        },\n        \"signedStart\": {\n          \"description\": \"The time at which the SAS becomes valid.\",\n          \"format\": \"date-time\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"SharedAccessStartTime\"\n        },\n        \"startPk\": {\n          \"description\": \"The start of partition key.\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"PartitionKeyStart\"\n        },\n        \"startRk\": {\n          \"description\": \"The start of row key.\",\n          \"type\": \"string\",\n          \"x-ms-client-name\": \"RowKeyStart\"\n        }\n      },\n      \"required\": [\n        \"canonicalizedResource\",\n        \"signedResource\"\n      ]\n    },\n    \"Sku\": {\n      \"description\": \"The SKU of the storage account.\",\n      \"properties\": {\n        \"name\": {\n          \"description\": \"Gets or sets the sku name. Required for account creation; optional for update. Note that in older versions, sku name was called accountType.\",\n          \"enum\": [\n            \"Standard_LRS\",\n            \"Standard_GRS\",\n            \"Standard_RAGRS\",\n            \"Standard_ZRS\",\n            \"Premium_LRS\"\n          ],\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"SkuName\"\n          }\n        },\n        \"tier\": {\n          \"description\": \"Gets the sku tier. This is based on the SKU name.\",\n          \"enum\": [\n            \"Standard\",\n            \"Premium\"\n          ],\n          \"readOnly\": true,\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"SkuTier\"\n          }\n        }\n      },\n      \"required\": [\n        \"name\"\n      ]\n    },\n    \"StorageAccount\": {\n      \"allOf\": [\n        {\n          \"$ref\": \"#/definitions/Resource\"\n        }\n      ],\n      \"description\": \"The storage account.\",\n      \"properties\": {\n        \"kind\": {\n          \"description\": \"Gets the Kind.\",\n          \"enum\": [\n            \"Storage\",\n            \"BlobStorage\"\n          ],\n          \"readOnly\": true,\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"Kind\"\n          }\n        },\n        \"properties\": {\n          \"$ref\": \"#/definitions/StorageAccountProperties\",\n          \"x-ms-client-flatten\": true\n        },\n        \"sku\": {\n          \"$ref\": \"#/definitions/Sku\",\n          \"description\": \"Gets the SKU.\",\n          \"readOnly\": true\n        }\n      }\n    },\n    \"StorageAccountCheckNameAvailabilityParameters\": {\n      \"description\": \"The parameters used to check the availabity of the storage account name.\",\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"enum\": [\n            \"Microsoft.Storage/storageAccounts\"\n          ],\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ]\n    },\n    \"StorageAccountCreateParameters\": {\n      \"description\": \"The parameters used when creating a storage account.\",\n      \"properties\": {\n        \"kind\": {\n          \"description\": \"Required. Indicates the type of storage account.\",\n          \"enum\": [\n            \"Storage\",\n            \"BlobStorage\"\n          ],\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"Kind\"\n          }\n        },\n        \"location\": {\n          \"description\": \"Required. Gets or sets the location of the resource. This will be one of the supported and registered Azure Geo Regions (e.g. West US, East US, Southeast Asia, etc.). The geo region of a resource cannot be changed once it is created, but if an identical geo region is specified on update, the request will succeed.\",\n          \"type\": \"string\"\n        },\n        \"properties\": {\n          \"$ref\": \"#/definitions/StorageAccountPropertiesCreateParameters\",\n          \"x-ms-client-flatten\": true\n        },\n        \"sku\": {\n          \"$ref\": \"#/definitions/Sku\",\n          \"description\": \"Required. Gets or sets the sku name.\"\n        },\n        \"tags\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Gets or sets a list of key value pairs that describe the resource. These tags can be used for viewing and grouping this resource (across resource groups). A maximum of 15 tags can be provided for a resource. Each tag must have a key with a length no greater than 128 characters and a value with a length no greater than 256 characters.\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"sku\",\n        \"kind\",\n        \"location\"\n      ]\n    },\n    \"StorageAccountKey\": {\n      \"description\": \"An access key for the storage account.\",\n      \"properties\": {\n        \"keyName\": {\n          \"description\": \"Name of the key.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"permissions\": {\n          \"description\": \"Permissions for the key -- read-only or full permissions.\",\n          \"enum\": [\n            \"Read\",\n            \"Full\"\n          ],\n          \"readOnly\": true,\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"KeyPermission\"\n          }\n        },\n        \"value\": {\n          \"description\": \"Base 64-encoded value of the key.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"StorageAccountListKeysResult\": {\n      \"description\": \"The response from the ListKeys operation.\",\n      \"properties\": {\n        \"keys\": {\n          \"description\": \"Gets the list of storage account keys and their properties for the specified storage account.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/StorageAccountKey\"\n          },\n          \"readOnly\": true,\n          \"type\": \"array\"\n        }\n      }\n    },\n    \"StorageAccountListResult\": {\n      \"description\": \"The response from the List Storage Accounts operation.\",\n      \"properties\": {\n        \"value\": {\n          \"description\": \"Gets the list of storage accounts and their properties.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/StorageAccount\"\n          },\n          \"readOnly\": true,\n          \"type\": \"array\"\n        }\n      }\n    },\n    \"StorageAccountProperties\": {\n      \"description\": \"Properties of the storage account.\",\n      \"properties\": {\n        \"accessTier\": {\n          \"description\": \"Required for storage accounts where kind = BlobStorage. The access tier used for billing.\",\n          \"enum\": [\n            \"Hot\",\n            \"Cool\"\n          ],\n          \"readOnly\": true,\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"AccessTier\"\n          }\n        },\n        \"creationTime\": {\n          \"description\": \"Gets the creation date and time of the storage account in UTC.\",\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"customDomain\": {\n          \"$ref\": \"#/definitions/CustomDomain\",\n          \"description\": \"Gets the custom domain the user assigned to this storage account.\",\n          \"readOnly\": true\n        },\n        \"encryption\": {\n          \"$ref\": \"#/definitions/Encryption\",\n          \"description\": \"Gets the encryption settings on the account. If unspecified, the account is unencrypted.\",\n          \"readOnly\": true\n        },\n        \"lastGeoFailoverTime\": {\n          \"description\": \"Gets the timestamp of the most recent instance of a failover to the secondary location. Only the most recent timestamp is retained. This element is not returned if there has never been a failover instance. Only available if the accountType is Standard_GRS or Standard_RAGRS.\",\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"primaryEndpoints\": {\n          \"$ref\": \"#/definitions/Endpoints\",\n          \"description\": \"Gets the URLs that are used to perform a retrieval of a public blob, queue, or table object. Note that Standard_ZRS and Premium_LRS accounts only return the blob endpoint.\",\n          \"readOnly\": true\n        },\n        \"primaryLocation\": {\n          \"description\": \"Gets the location of the primary data center for the storage account.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"provisioningState\": {\n          \"description\": \"Gets the status of the storage account at the time the operation was called.\",\n          \"enum\": [\n            \"Creating\",\n            \"ResolvingDNS\",\n            \"Succeeded\"\n          ],\n          \"readOnly\": true,\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"ProvisioningState\"\n          }\n        },\n        \"secondaryEndpoints\": {\n          \"$ref\": \"#/definitions/Endpoints\",\n          \"description\": \"Gets the URLs that are used to perform a retrieval of a public blob, queue, or table object from the secondary location of the storage account. Only available if the SKU name is Standard_RAGRS.\",\n          \"readOnly\": true\n        },\n        \"secondaryLocation\": {\n          \"description\": \"Gets the location of the geo-replicated secondary for the storage account. Only available if the accountType is Standard_GRS or Standard_RAGRS.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"statusOfPrimary\": {\n          \"description\": \"Gets the status indicating whether the primary location of the storage account is available or unavailable.\",\n          \"enum\": [\n            \"available\",\n            \"unavailable\"\n          ],\n          \"readOnly\": true,\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"AccountStatus\"\n          }\n        },\n        \"statusOfSecondary\": {\n          \"description\": \"Gets the status indicating whether the secondary location of the storage account is available or unavailable. Only available if the SKU name is Standard_GRS or Standard_RAGRS.\",\n          \"enum\": [\n            \"available\",\n            \"unavailable\"\n          ],\n          \"readOnly\": true,\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"AccountStatus\"\n          }\n        }\n      }\n    },\n    \"StorageAccountPropertiesCreateParameters\": {\n      \"description\": \"The parameters used to create the storage account.\",\n      \"properties\": {\n        \"accessTier\": {\n          \"description\": \"Required for storage accounts where kind = BlobStorage. The access tier used for billing.\",\n          \"enum\": [\n            \"Hot\",\n            \"Cool\"\n          ],\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"AccessTier\"\n          }\n        },\n        \"customDomain\": {\n          \"$ref\": \"#/definitions/CustomDomain\",\n          \"description\": \"User domain assigned to the storage account. Name is the CNAME source. Only one custom domain is supported per storage account at this time. To clear the existing custom domain, use an empty string for the custom domain name property.\"\n        },\n        \"encryption\": {\n          \"$ref\": \"#/definitions/Encryption\",\n          \"description\": \"Provides the encryption settings on the account. If left unspecified the account encryption settings will remain the same. The default setting is unencrypted.\"\n        }\n      }\n    },\n    \"StorageAccountPropertiesUpdateParameters\": {\n      \"description\": \"The parameters used when updating a storage account.\",\n      \"properties\": {\n        \"accessTier\": {\n          \"description\": \"Required for storage accounts where kind = BlobStorage. The access tier used for billing.\",\n          \"enum\": [\n            \"Hot\",\n            \"Cool\"\n          ],\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"AccessTier\"\n          }\n        },\n        \"customDomain\": {\n          \"$ref\": \"#/definitions/CustomDomain\",\n          \"description\": \"Custom domain assigned to the storage account by the user. Name is the CNAME source. Only one custom domain is supported per storage account at this time. To clear the existing custom domain, use an empty string for the custom domain name property.\"\n        },\n        \"encryption\": {\n          \"$ref\": \"#/definitions/Encryption\",\n          \"description\": \"Provides the encryption settings on the account. The default setting is unencrypted.\"\n        }\n      }\n    },\n    \"StorageAccountRegenerateKeyParameters\": {\n      \"description\": \"The parameters used to regenerate the storage account key.\",\n      \"properties\": {\n        \"keyName\": {\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"keyName\"\n      ]\n    },\n    \"StorageAccountUpdateParameters\": {\n      \"description\": \"The parameters that can be provided when updating the storage account properties.\",\n      \"properties\": {\n        \"properties\": {\n          \"$ref\": \"#/definitions/StorageAccountPropertiesUpdateParameters\",\n          \"x-ms-client-flatten\": true\n        },\n        \"sku\": {\n          \"$ref\": \"#/definitions/Sku\",\n          \"description\": \"Gets or sets the SKU name. Note that the SKU name cannot be updated to Standard_ZRS or Premium_LRS, nor can accounts of those sku names be updated to any other value.\"\n        },\n        \"tags\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"description\": \"Gets or sets a list of key value pairs that describe the resource. These tags can be used in viewing and grouping this resource (across resource groups). A maximum of 15 tags can be provided for a resource. Each tag must have a key no greater in length than 128 characters and a value no greater in length than 256 characters.\",\n          \"type\": \"object\"\n        }\n      }\n    },\n    \"Usage\": {\n      \"description\": \"Describes Storage Resource Usage.\",\n      \"properties\": {\n        \"currentValue\": {\n          \"description\": \"Gets the current count of the allocated resources in the subscription.\",\n          \"format\": \"int32\",\n          \"readOnly\": true,\n          \"type\": \"integer\"\n        },\n        \"limit\": {\n          \"description\": \"Gets the maximum count of the resources that can be allocated in the subscription.\",\n          \"format\": \"int32\",\n          \"readOnly\": true,\n          \"type\": \"integer\"\n        },\n        \"name\": {\n          \"$ref\": \"#/definitions/UsageName\",\n          \"description\": \"Gets the name of the type of usage.\",\n          \"readOnly\": true\n        },\n        \"unit\": {\n          \"description\": \"Gets the unit of measurement.\",\n          \"enum\": [\n            \"Count\",\n            \"Bytes\",\n            \"Seconds\",\n            \"Percent\",\n            \"CountsPerSecond\",\n            \"BytesPerSecond\"\n          ],\n          \"readOnly\": true,\n          \"type\": \"string\",\n          \"x-ms-enum\": {\n            \"modelAsString\": false,\n            \"name\": \"UsageUnit\"\n          }\n        }\n      }\n    },\n    \"UsageListResult\": {\n      \"description\": \"The response from the List Usages operation.\",\n      \"properties\": {\n        \"value\": {\n          \"description\": \"Gets or sets the list of Storage Resource Usages.\",\n          \"items\": {\n            \"$ref\": \"#/definitions/Usage\"\n          },\n          \"type\": \"array\"\n        }\n      }\n    },\n    \"UsageName\": {\n      \"description\": \"The usage names that can be used; currently limited to StorageAccount.\",\n      \"properties\": {\n        \"localizedValue\": {\n          \"description\": \"Gets a localized string describing the resource name.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"description\": \"Gets a string describing the resource name.\",\n          \"readOnly\": true,\n          \"type\": \"string\"\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/clickmeter.com.json",
    "content": "{\n    \"swagger\": \"2.0\",\n    \"schemes\": [\n      \"http\",\n      \"https\"\n    ],\n    \"host\": \"apiv2.clickmeter.com:80\",\n    \"info\": {\n      \"contact\": {\n        \"email\": \"api@clickmeter.com\",\n        \"name\": \"Api Support\",\n        \"url\": \"http://www.clickmeter.com/api\"\n      },\n      \"description\": \"Api dashboard for ClickMeter API\",\n      \"title\": \"ClickMeter\",\n      \"version\": \"v2\",\n      \"x-apisguru-categories\": [\n        \"marketing\"\n      ],\n      \"x-logo\": {\n        \"url\": \"https://api.apis.guru/v2/cache/logo/https_s3.amazonaws.com_clickmeter.com_Web_static_cmlogo.svg\"\n      },\n      \"x-origin\": [\n        {\n          \"format\": \"swagger\",\n          \"url\": \"http://api.v2.clickmeter.com.s3.amazonaws.com/docs/api-docs-v2.json\",\n          \"version\": \"2.0\"\n        }\n      ],\n      \"x-preferred\": true,\n      \"x-providerName\": \"clickmeter.com\"\n    },\n    \"securityDefinitions\": {\n      \"api_key\": {\n        \"description\": \"API Key Authentication\",\n        \"in\": \"header\",\n        \"name\": \"X-Clickmeter-AuthKey\",\n        \"type\": \"apiKey\"\n      }\n    },\n    \"security\": [\n      {\n        \"api_key\": []\n      }\n    ],\n    \"paths\": {\n      \"/account\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.User\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve current account data\",\n          \"tags\": [\n            \"Account\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.User\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.User\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Update current account data\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/account/domainwhitelist\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Offset where to start from\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.DomainWhitelistEntry]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve list of a domains allowed to redirect in DDU mode\",\n          \"tags\": [\n            \"Account\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The entry to add\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Create an domain entry\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/account/domainwhitelist/{whitelistId}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The id of the domain to delete\",\n              \"in\": \"path\",\n              \"name\": \"whitelistId\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Delete an domain entry\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/account/guests\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Offset where to start from\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Field to sort by\",\n              \"in\": \"query\",\n              \"name\": \"sortBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Direction of sort \\\"asc\\\" or \\\"desc\\\"\",\n              \"enum\": [\n                \"asc\",\n                \"desc\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sortDirection\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve list of a guest\",\n          \"tags\": [\n            \"Account\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Guest object to create\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.Guest\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.Guest\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Create a guest\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/account/guests/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve count of guests\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/account/guests/{guestId}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the guest\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"guestId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Delete a guest\",\n          \"tags\": [\n            \"Account\"\n          ]\n        },\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the guest\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"guestId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.Guest\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve a guest\",\n          \"tags\": [\n            \"Account\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the guest\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"guestId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Guest object with field updated\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.Guest\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.Guest\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Update a guest\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/account/guests/{guestId}/permissions\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the guest\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"guestId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Can be \\\"datapoint\\\" or \\\"group\\\"\",\n              \"enum\": [\n                \"datapoint\",\n                \"group\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"entityType\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Offset where to start from\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Can be \\\"w\\\" or \\\"r\\\"\",\n              \"enum\": [\n                \"r\",\n                \"w\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Optional id of the datapoint/group entity to filter by\",\n              \"format\": \"int64\",\n              \"in\": \"query\",\n              \"name\": \"entityId\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Grants.Grant]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve permissions for a guest\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/account/guests/{guestId}/permissions/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the guest\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"guestId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Can be \\\"datapoint\\\" or \\\"group\\\"\",\n              \"enum\": [\n                \"datapoint\",\n                \"group\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"entityType\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Can be \\\"w\\\" or \\\"r\\\"\",\n              \"enum\": [\n                \"r\",\n                \"w\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Optional id of the datapoint/group entity to filter by\",\n              \"format\": \"int64\",\n              \"in\": \"query\",\n              \"name\": \"entityId\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve count of the permissions for a guest\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/account/guests/{guestId}/{type}/permissions/patch\": {\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the guest\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"guestId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Can be \\\"datapoint\\\" or \\\"group\\\"\",\n              \"enum\": [\n                \"datapoint\",\n                \"group\"\n              ],\n              \"in\": \"path\",\n              \"name\": \"type\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"The patch permission request\",\n              \"in\": \"body\",\n              \"name\": \"body\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.PermissionPatchRequest\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Change the permission on a shared object\",\n          \"tags\": [\n            \"Account\"\n          ]\n        },\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the guest\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"guestId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Can be \\\"datapoint\\\" or \\\"group\\\"\",\n              \"enum\": [\n                \"datapoint\",\n                \"group\"\n              ],\n              \"in\": \"path\",\n              \"name\": \"type\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"The patch permission request\",\n              \"in\": \"body\",\n              \"name\": \"body\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.PermissionPatchRequest\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Change the permission on a shared object\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/account/ipblacklist\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Offset where to start from\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.IpBlacklistEntry]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve list of a ip to exclude from event tracking\",\n          \"tags\": [\n            \"Account\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The entry to add\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Create an ip blacklist entry\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/account/ipblacklist/{blacklistId}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The id of the ip to delete\",\n              \"in\": \"path\",\n              \"name\": \"blacklistId\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Delete an ip blacklist entry\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/account/plan\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.Plan\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve current account plan\",\n          \"tags\": [\n            \"Account\"\n          ]\n        }\n      },\n      \"/aggregated\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using \\\"yesterday\\\" or \\\"today\\\" timeframe you can ask for the hourly detail\",\n              \"in\": \"query\",\n              \"name\": \"hourly\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"\",\n              \"in\": \"query\",\n              \"name\": \"onlyFavorites\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about this customer for a timeframe\",\n          \"tags\": [\n            \"Aggregated\"\n          ]\n        }\n      },\n      \"/aggregated/list\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"The temporal entity you want to group by (\\\"week\\\"/\\\"month\\\"). If unspecified is \\\"day\\\".\",\n              \"enum\": [\n                \"week\",\n                \"month\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"groupBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about this customer for a timeframe grouped by some temporal entity (day/week/month)\",\n          \"tags\": [\n            \"Aggregated\"\n          ]\n        }\n      },\n      \"/aggregated/summary/conversions\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of conversion (\\\"deleted\\\"/\\\"active\\\")\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Field to sort by\",\n              \"in\": \"query\",\n              \"name\": \"sortBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Direction of sort \\\"asc\\\" or \\\"desc\\\"\",\n              \"enum\": [\n                \"asc\",\n                \"desc\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sortDirection\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Offset where to start from\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about a subset of conversions for a timeframe with conversions data\",\n          \"tags\": [\n            \"Aggregated\"\n          ]\n        }\n      },\n      \"/aggregated/summary/datapoints\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Type of datapoint (\\\"tl\\\"/\\\"tp\\\")\",\n              \"enum\": [\n                \"tp\",\n                \"tl\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of datapoint (\\\"deleted\\\"/\\\"active\\\"/\\\"paused\\\"/\\\"spam\\\")\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tag\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Is the datapoint marked as favourite\",\n              \"in\": \"query\",\n              \"name\": \"favourite\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Field to sort by\",\n              \"in\": \"query\",\n              \"name\": \"sortBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Direction of sort \\\"asc\\\" or \\\"desc\\\"\",\n              \"enum\": [\n                \"asc\",\n                \"desc\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sortDirection\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Offset where to start from\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filter by this group id\",\n              \"format\": \"int64\",\n              \"in\": \"query\",\n              \"name\": \"groupId\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about a subset of datapoints for a timeframe with datapoints data\",\n          \"tags\": [\n            \"Aggregated\"\n          ]\n        }\n      },\n      \"/aggregated/summary/groups\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of group (\\\"deleted\\\"/\\\"active\\\")\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tag\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Is the group marked as favourite\",\n              \"in\": \"query\",\n              \"name\": \"favourite\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Field to sort by\",\n              \"in\": \"query\",\n              \"name\": \"sortBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Direction of sort \\\"asc\\\" or \\\"desc\\\"\",\n              \"enum\": [\n                \"asc\",\n                \"desc\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sortDirection\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Offset where to start from\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about a subset of groups for a timeframe with groups data\",\n          \"tags\": [\n            \"Aggregated\"\n          ]\n        }\n      },\n      \"/clickstream\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Filter by this group id (mutually exclusive with \\\"datapoint\\\" and \\\"conversion\\\")\",\n              \"format\": \"int64\",\n              \"in\": \"query\",\n              \"name\": \"group\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filter by this datapoint id (mutually exclusive with \\\"group\\\" and \\\"conversion\\\")\",\n              \"format\": \"int64\",\n              \"in\": \"query\",\n              \"name\": \"datapoint\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filter by this conversion id (mutually exclusive with \\\"datapoint\\\" and \\\"group\\\")\",\n              \"format\": \"int64\",\n              \"in\": \"query\",\n              \"name\": \"conversion\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 50,\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"pageSize\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filter event type (\\\"spiders\\\"/\\\"uniques\\\"/\\\"nonuniques\\\"/\\\"conversions\\\")\",\n              \"enum\": [\n                \"\",\n                \"spiders\",\n                \"uniques\",\n                \"nonuniques\",\n                \"conversions\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"filter\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.ClickStream.Hit]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve the latest list of events of this account. Limited to last 100.\",\n          \"tags\": [\n            \"ClickStream\"\n          ]\n        }\n      },\n      \"/conversions\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Offset where to start from\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Status of conversion (\\\"deleted\\\"/\\\"active\\\")\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude conversions created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude conversions created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve a list of conversions\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The body of the conversion\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Conversions.Conversion\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Create a conversion\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/aggregated/list\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of conversion (\\\"deleted\\\"/\\\"active\\\")\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"The temporal entity you want to group by (\\\"week\\\"/\\\"month\\\"). If unspecified is \\\"day\\\".\",\n              \"enum\": [\n                \"week\",\n                \"month\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"groupBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about this customer for a timeframe related to a subset of conversions grouped by some temporal entity (day/week/month)\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Status of conversion (\\\"deleted\\\"/\\\"active\\\")\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude conversions created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude conversions created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve a count of conversions\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/{conversionId}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Delete conversion specified by id\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        },\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Conversions.Conversion\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve conversion specified by id\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Updated body of the conversion\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Conversions.Conversion\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Update conversion specified by id\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/{conversionId}/aggregated\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter by this tag name\",\n              \"in\": \"query\",\n              \"name\": \"tag\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Is the datapoint marked as favourite\",\n              \"in\": \"query\",\n              \"name\": \"favourite\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"If using \\\"yesterday\\\" or \\\"today\\\" timeframe you can ask for the hourly detail\",\n              \"in\": \"query\",\n              \"name\": \"hourly\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about this conversion for a timeframe\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/{conversionId}/aggregated/list\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"The temporal entity you want to group by (\\\"week\\\"/\\\"month\\\"). If unspecified is \\\"day\\\".\",\n              \"enum\": [\n                \"week\",\n                \"month\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"groupBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about this conversion for a timeframe grouped by some temporal entity (day/week/month)\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/{conversionId}/datapoints\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Offset where to start from\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Type of datapoint (\\\"tl\\\"/\\\"tp\\\")\",\n              \"enum\": [\n                \"tp\",\n                \"tl\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of datapoint (\\\"deleted\\\"/\\\"active\\\"/\\\"paused\\\"/\\\"spam\\\")\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter by this tag name\",\n              \"in\": \"query\",\n              \"name\": \"tags\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve a list of datapoints connected to this conversion\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/{conversionId}/datapoints/batch/patch\": {\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Patch requests\",\n              \"in\": \"body\",\n              \"name\": \"data\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.PatchBodyBatch\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Modify the association between a conversion and multiple datapoints\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/{conversionId}/datapoints/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Type of datapoint (\\\"tl\\\"/\\\"tp\\\")\",\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of datapoint (\\\"deleted\\\"/\\\"active\\\"/\\\"paused\\\"/\\\"spam\\\")\",\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter by this tag name\",\n              \"in\": \"query\",\n              \"name\": \"tags\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve a count of datapoints connected to this conversion\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/{conversionId}/datapoints/patch\": {\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Patch request\",\n              \"in\": \"body\",\n              \"name\": \"data\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.ConversionPatchBody\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Modify the association between a conversion and a datapoint\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/{conversionId}/hits\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeframe\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Offset where to start from (it's the lastKey field in the response object)\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter event type (\\\"spiders\\\"/\\\"uniques\\\"/\\\"nonuniques\\\"/\\\"conversions\\\")\",\n              \"enum\": [\n                \"spiders\",\n                \"uniques\",\n                \"nonuniques\",\n                \"conversions\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"filter\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitListPage\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve the list of events related to this conversion.\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/{conversionId}/notes\": {\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Patch requests\",\n              \"in\": \"body\",\n              \"name\": \"note\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.GenericTextPatch\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"Forbidden\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Fast patch the \\\"notes\\\" field of a conversion\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/conversions/{conversionId}/reports\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the conversion\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"conversionId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Type of the report.\",\n              \"enum\": [\n                \"datapoints\",\n                \"groups\",\n                \"browsers\",\n                \"browsersfamilies\",\n                \"platforms\",\n                \"cities\",\n                \"countries\",\n                \"keywords\",\n                \"referrers\",\n                \"convparameters\",\n                \"destinations\",\n                \"languages\",\n                \"params\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeframe\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Type of the event you want to filter this report with. By default no filter is applied.\",\n              \"enum\": [\n                \"clicks\",\n                \"views\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"hittype\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Tops.Top\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Forbidden\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve a top report connected to this conversion\",\n          \"tags\": [\n            \"Conversions\"\n          ]\n        }\n      },\n      \"/datapoints\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"default\": 0,\n              \"description\": \"Where to start when retrieving elements. Default is 0 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 20,\n              \"description\": \"Maximum elements to retrieve. Default to 20 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Type of the datapoint (\\\"tp\\\"/\\\"tl\\\")\",\n              \"enum\": [\n                \"tp\",\n                \"tl\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of the datapoint\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tags\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by favourite status\",\n              \"in\": \"query\",\n              \"name\": \"onlyFavorites\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Field to sort by\",\n              \"in\": \"query\",\n              \"name\": \"sortBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Direction of sort \\\"asc\\\" or \\\"desc\\\"\",\n              \"enum\": [\n                \"asc\",\n                \"desc\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sortDirection\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"List of all the datapoints associated to the user\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The body of the datapoint\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.Datapoint\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Create a datapoint\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/datapoints/aggregated\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Type of datapoint (\\\"tl\\\"/\\\"tp\\\")\",\n              \"enum\": [\n                \"tp\",\n                \"tl\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using \\\"yesterday\\\" or \\\"today\\\" timeframe you can ask for the hourly detail\",\n              \"in\": \"query\",\n              \"name\": \"hourly\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Status of datapoint (\\\"deleted\\\"/\\\"active\\\"/\\\"paused\\\"/\\\"spam\\\")\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tag\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Is the datapoint is marked as favourite\",\n              \"in\": \"query\",\n              \"name\": \"favourite\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about this customer for a timeframe by groups\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/datapoints/aggregated/list\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Type of datapoint (\\\"tl\\\"/\\\"tp\\\")\",\n              \"enum\": [\n                \"tp\",\n                \"tl\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of datapoint (\\\"deleted\\\"/\\\"active\\\"/\\\"paused\\\"/\\\"spam\\\")\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tag\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Is the datapoint is marked as favourite\",\n              \"in\": \"query\",\n              \"name\": \"favourite\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"The temporal entity you want to group by (\\\"week\\\"/\\\"month\\\"). If unspecified is \\\"day\\\".\",\n              \"enum\": [\n                \"week\",\n                \"month\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"groupBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about all datapoints of this customer for a timeframe grouped by some temporal entity (day/week/month)\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/datapoints/batch\": {\n        \"delete\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"A json containing the datapoints to delete.\",\n              \"in\": \"body\",\n              \"name\": \"batch\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.DeleteBatch\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Delete multiple datapoints\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"A json containing the datapoints to update.\",\n              \"in\": \"body\",\n              \"name\": \"batch\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.DatapointsBatch\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Update multiple datapoints\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        },\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"A json containing the datapoints to create.\",\n              \"in\": \"body\",\n              \"name\": \"batch\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.DatapointsBatch\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Create multiple datapoints\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/datapoints/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Type of the datapoint (\\\"tp\\\"/\\\"tl\\\")\",\n              \"enum\": [\n                \"tp\",\n                \"tl\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of the datapoint\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tags\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by favourite status\",\n              \"in\": \"query\",\n              \"name\": \"onlyFavorites\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Exclude datapoints created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Count the datapoints associated to the user\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/datapoints/{id}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The id of the datapoint\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Delete a datapoint\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        },\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The id of the datapoint\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.Datapoint\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Get a datapoint\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The id of the datapoint\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"The body of the datapoint\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.Datapoint\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Update a datapoint\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/datapoints/{id}/aggregated\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the datapoint\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using \\\"yesterday\\\" or \\\"today\\\" timeframe you can ask for the hourly detail\",\n              \"in\": \"query\",\n              \"name\": \"hourly\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about this datapoint for a timeframe\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/datapoints/{id}/aggregated/list\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the datapoint\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"The temporal entity you want to group by (\\\"week\\\"/\\\"month\\\"). If unspecified is \\\"day\\\".\",\n              \"enum\": [\n                \"week\",\n                \"month\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"groupBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about this datapoint for a timeframe grouped by some temporal entity (day/week/month)\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/datapoints/{id}/favourite\": {\n        \"put\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the datapoint\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"Forbidden\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Fast switch the \\\"favourite\\\" field of a datapoint\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/datapoints/{id}/hits\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the datapoint\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeframe\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Offset where to start from (it's the lastKey field in the response object)\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter event type (\\\"spiders\\\"/\\\"uniques\\\"/\\\"nonuniques\\\"/\\\"conversions\\\")\",\n              \"enum\": [\n                \"spiders\",\n                \"uniques\",\n                \"nonuniques\",\n                \"conversions\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"filter\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitListPage\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve the list of events related to this datapoint.\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/datapoints/{id}/notes\": {\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the datapoint\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Patch requests\",\n              \"in\": \"body\",\n              \"name\": \"note\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.GenericTextPatch\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"Forbidden\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Fast patch the \\\"notes\\\" field of a datapoint\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/datapoints/{id}/reports\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the datapoint\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Type of the report.\",\n              \"enum\": [\n                \"browsers\",\n                \"browsersfamilies\",\n                \"platforms\",\n                \"cities\",\n                \"countries\",\n                \"isps\",\n                \"ips\",\n                \"oss\",\n                \"ossfamilies\",\n                \"keywords\",\n                \"referrers\",\n                \"destinations\",\n                \"languages\",\n                \"params\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeframe\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Tops.Top\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Forbidden\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve a top report connected to this datapoint\",\n          \"tags\": [\n            \"DataPoints\"\n          ]\n        }\n      },\n      \"/domains\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Offset where to start from\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": \"system\",\n              \"description\": \"Type of domain (\\\"system\\\"/\\\"go\\\"/\\\"personal\\\"/\\\"dedicated\\\"). If not specified default is \\\"system\\\"\",\n              \"enum\": [\n                \"system\",\n                \"go\",\n                \"personal\",\n                \"dedicated\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter domains with this anmen\",\n              \"in\": \"query\",\n              \"name\": \"name\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve a list of domains\",\n          \"tags\": [\n            \"Domains\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The domain to create\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Domains.Domain\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Create a domain\",\n          \"tags\": [\n            \"Domains\"\n          ]\n        }\n      },\n      \"/domains/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"default\": \"system\",\n              \"description\": \"Type of domain (\\\"system\\\"/\\\"go\\\"/\\\"personal\\\"/\\\"dedicated\\\"). If not specified default is \\\"system\\\"\",\n              \"enum\": [\n                \"system\",\n                \"go\",\n                \"personal\",\n                \"dedicated\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter domains with this anmen\",\n              \"in\": \"query\",\n              \"name\": \"name\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve count of domains\",\n          \"tags\": [\n            \"Domains\"\n          ]\n        }\n      },\n      \"/domains/{id}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of domain\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Delete a domain\",\n          \"tags\": [\n            \"Domains\"\n          ]\n        },\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of domain\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Domains.Domain\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Get a domain\",\n          \"tags\": [\n            \"Domains\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of domain\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"The domain to update\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Domains.Domain\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Update a domain\",\n          \"tags\": [\n            \"Domains\"\n          ]\n        }\n      },\n      \"/groups\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"default\": 0,\n              \"description\": \"Where to start when retrieving elements. Default is 0 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 20,\n              \"description\": \"Maximum elements to retrieve. Default to 20 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Status of the group\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tags\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude groups created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude groups created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Write permission\",\n              \"in\": \"query\",\n              \"name\": \"write\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"List of all the groups associated to the user.\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The body of the group\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Groups.Group\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Create a group\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/aggregated\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using \\\"yesterday\\\" or \\\"today\\\" timeframe you can ask for the hourly detail\",\n              \"in\": \"query\",\n              \"name\": \"hourly\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Status of group (\\\"deleted\\\"/\\\"active\\\")\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tag\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Is the group is marked as favourite\",\n              \"in\": \"query\",\n              \"name\": \"favourite\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about this customer for a timeframe by groups\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/aggregated/list\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of group (\\\"deleted\\\"/\\\"active\\\")\",\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tag\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Is the group is marked as favourite\",\n              \"in\": \"query\",\n              \"name\": \"favourite\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"The temporal entity you want to group by (\\\"week\\\"/\\\"month\\\"). If unspecified is \\\"day\\\".\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"groupBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about all groups of this customer for a timeframe grouped by some temporal entity (day/week/month)\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Status of the datapoint\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tags\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude groups created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude groups created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Write permission\",\n              \"in\": \"query\",\n              \"name\": \"write\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Count the groups associated to the user.\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/{id}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Delete group specified by id\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        },\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Groups.Group\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Get a group\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"The body of the group\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Groups.Group\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Update a group\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/{id}/aggregated\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using \\\"yesterday\\\" or \\\"today\\\" timeframe you can ask for the hourly detail\",\n              \"in\": \"query\",\n              \"name\": \"hourly\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about this group for a timeframe\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/{id}/aggregated/list\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"The temporal entity you want to group by (\\\"week\\\"/\\\"month\\\"). If unspecified is \\\"day\\\".\",\n              \"enum\": [\n                \"week\",\n                \"month\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"groupBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about this group for a timeframe grouped by some temporal entity (day/week/month)\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/{id}/aggregated/summary\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Filter by this group id\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"today\",\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"last12months\",\n                \"lastyear\",\n                \"currentyear\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeFrame\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Type of datapoint (\\\"tl\\\"/\\\"tp\\\")\",\n              \"enum\": [\n                \"tp\",\n                \"tl\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of datapoint (\\\"deleted\\\"/\\\"active\\\"/\\\"paused\\\"/\\\"spam\\\")\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tag\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Is the datapoint marked as favourite\",\n              \"in\": \"query\",\n              \"name\": \"favourite\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Field to sort by\",\n              \"in\": \"query\",\n              \"name\": \"sortBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Direction of sort \\\"asc\\\" or \\\"desc\\\"\",\n              \"enum\": [\n                \"asc\",\n                \"desc\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sortDirection\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"default\": 0,\n              \"description\": \"Offset where to start from\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 20,\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedSummaryResult\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve statistics about a subset of datapoints for a timeframe with datapoints data\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/{id}/datapoints\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 0,\n              \"description\": \"Where to start when retrieving elements. Default is 0 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 20,\n              \"description\": \"Maximum elements to retrieve. Default to 20 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Type of the datapoint (\\\"tp\\\"/\\\"tl\\\")\",\n              \"enum\": [\n                \"tp\",\n                \"tl\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of the datapoint\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tags\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by favourite status\",\n              \"in\": \"query\",\n              \"name\": \"onlyFavorites\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Field to sort by\",\n              \"in\": \"query\",\n              \"name\": \"sortBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Direction of sort \\\"asc\\\" or \\\"desc\\\"\",\n              \"enum\": [\n                \"asc\",\n                \"desc\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sortDirection\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"List of all the datapoints associated to the user in this group.\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"The body of the datapoint\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.Datapoint\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Create a datapoint in this group\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/{id}/datapoints/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Type of the datapoint (\\\"tp\\\"/\\\"tl\\\")\",\n              \"enum\": [\n                \"tp\",\n                \"tl\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of the datapoint\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tags\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by favourite status\",\n              \"in\": \"query\",\n              \"name\": \"onlyFavorites\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Exclude datapoints created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Count the datapoints associated to the user in this group.\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/{id}/favourite\": {\n        \"put\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"Forbidden\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Fast switch the \\\"favourite\\\" field of a group\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/{id}/hits\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeframe\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Offset where to start from (it's the lastKey field in the response object)\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter event type (\\\"spiders\\\"/\\\"uniques\\\"/\\\"nonuniques\\\"/\\\"conversions\\\")\",\n              \"enum\": [\n                \"spiders\",\n                \"uniques\",\n                \"nonuniques\",\n                \"conversions\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"filter\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitListPage\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve the list of events related to this group.\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/{id}/notes\": {\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Patch requests\",\n              \"in\": \"body\",\n              \"name\": \"note\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.GenericTextPatch\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"Forbidden\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Fast patch the \\\"notes\\\" field of a group\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/groups/{id}/reports\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Type of the report.\",\n              \"enum\": [\n                \"browsers\",\n                \"browsersfamilies\",\n                \"platforms\",\n                \"cities\",\n                \"countries\",\n                \"isps\",\n                \"ips\",\n                \"oss\",\n                \"ossfamilies\",\n                \"keywords\",\n                \"referrers\",\n                \"destinations\",\n                \"languages\",\n                \"params\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeframe\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Type of the event you want to filter this report with. By default no filter is applied.\",\n              \"enum\": [\n                \"clicks\",\n                \"views\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"hittype\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Tops.Top\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Forbidden\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve a top report connected to this group\",\n          \"tags\": [\n            \"Groups\"\n          ]\n        }\n      },\n      \"/hits\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeframe\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Limit results to this number\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Offset where to start from (it's the lastKey field in the response object)\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter event type (\\\"spiders\\\"/\\\"uniques\\\"/\\\"nonuniques\\\"/\\\"conversions\\\")\",\n              \"enum\": [\n                \"spiders\",\n                \"uniques\",\n                \"nonuniques\",\n                \"conversions\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"filter\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitListPage\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve the list of events related to this account.\",\n          \"tags\": [\n            \"Hits\"\n          ]\n        }\n      },\n      \"/me\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.User\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve current account data\",\n          \"tags\": [\n            \"Me\"\n          ]\n        }\n      },\n      \"/me/plan\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.Plan\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve current account plan\",\n          \"tags\": [\n            \"Me\"\n          ]\n        }\n      },\n      \"/reports\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Type of the report.\",\n              \"enum\": [\n                \"browsers\",\n                \"browsersfamilies\",\n                \"platforms\",\n                \"cities\",\n                \"countries\",\n                \"isps\",\n                \"ips\",\n                \"oss\",\n                \"ossfamilies\",\n                \"keywords\",\n                \"referrers\",\n                \"destinations\",\n                \"languages\",\n                \"params\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Timeframe of the request. See list at $timeframeList\",\n              \"enum\": [\n                \"yesterday\",\n                \"last7\",\n                \"last30\",\n                \"lastmonth\",\n                \"currentmonth\",\n                \"previousmonth\",\n                \"last90\",\n                \"last120\",\n                \"last180\",\n                \"beginning\",\n                \"custom\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"timeframe\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Type of the event you want to filter this report with. By default no filter is applied.\",\n              \"in\": \"query\",\n              \"name\": \"hittype\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter by this group id (mutually exclusive with \\\"datapoint\\\" and \\\"conversion\\\")\",\n              \"format\": \"int64\",\n              \"in\": \"query\",\n              \"name\": \"group\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filter by this datapoint id (mutually exclusive with \\\"group\\\" and \\\"conversion\\\")\",\n              \"format\": \"int64\",\n              \"in\": \"query\",\n              \"name\": \"datapoint\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filter by this conversion id (mutually exclusive with \\\"datapoint\\\" and \\\"group\\\")\",\n              \"format\": \"int64\",\n              \"in\": \"query\",\n              \"name\": \"conversion\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the starting day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"fromDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If using a \\\"custom\\\" timeFrame you can specify the ending day (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"toDay\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Tops.Top\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Forbidden\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve a top report\",\n          \"tags\": [\n            \"Reports\"\n          ]\n        }\n      },\n      \"/retargeting\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"default\": 0,\n              \"description\": \"Where to start when retrieving elements. Default is 0 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 20,\n              \"description\": \"Maximum elements to retrieve. Default to 20 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"List of all the retargeting scripts associated to the user\",\n          \"tags\": [\n            \"Retargeting\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The body of the retargeting script\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Retargeting.RetargetingScript\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Creates a retargeting script\",\n          \"tags\": [\n            \"Retargeting\"\n          ]\n        }\n      },\n      \"/retargeting/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve count of retargeting scripts\",\n          \"tags\": [\n            \"Retargeting\"\n          ]\n        }\n      },\n      \"/retargeting/{id}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The id of the retargeting script\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Deletes a retargeting script (and remove associations)\",\n          \"tags\": [\n            \"Retargeting\"\n          ]\n        },\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The id of the retargeting script\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Retargeting.RetargetingScript\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Get a retargeting script object\",\n          \"tags\": [\n            \"Retargeting\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The id of the retargeting script\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"The body of the retargeting script\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Retargeting.RetargetingScript\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Updates a retargeting script\",\n          \"tags\": [\n            \"Retargeting\"\n          ]\n        }\n      },\n      \"/retargeting/{id}/datapoints\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the retargeting script\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 0,\n              \"description\": \"Where to start when retrieving elements. Default is 0 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 20,\n              \"description\": \"Maximum elements to retrieve. Default to 20 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Status of the datapoint\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tags\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by favourite status\",\n              \"in\": \"query\",\n              \"name\": \"onlyFavorites\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Field to sort by\",\n              \"in\": \"query\",\n              \"name\": \"sortBy\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Direction of sort \\\"asc\\\" or \\\"desc\\\"\",\n              \"enum\": [\n                \"asc\",\n                \"desc\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sortDirection\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"List of all the datapoints associated to the retargeting script.\",\n          \"tags\": [\n            \"Retargeting\"\n          ]\n        }\n      },\n      \"/retargeting/{id}/datapoints/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the group\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Status of the datapoint\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A comma separated list of tags you want to filter with.\",\n              \"in\": \"query\",\n              \"name\": \"tags\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by favourite status\",\n              \"in\": \"query\",\n              \"name\": \"onlyFavorites\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Exclude datapoints created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Count the datapoints associated to the retargeting script.\",\n          \"tags\": [\n            \"Retargeting\"\n          ]\n        }\n      },\n      \"/tags\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"default\": 0,\n              \"description\": \"Where to start when retrieving elements. Default is 0 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 20,\n              \"description\": \"Maximum elements to retrieve. Default to 20 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Name of the tag\",\n              \"in\": \"query\",\n              \"name\": \"name\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Comma separated list of datapoints id to filter by\",\n              \"in\": \"query\",\n              \"name\": \"datapoints\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Comma separated list of groups id to filter by\",\n              \"in\": \"query\",\n              \"name\": \"groups\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Type of entity related to the tag\",\n              \"enum\": [\n                \"tp\",\n                \"tl\",\n                \"dp\",\n                \"gr\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"List of all the groups associated to the user filtered by this tag.\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"The body of the tag\",\n              \"in\": \"body\",\n              \"name\": \"value\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Tags.Tag\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Create a tag\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        }\n      },\n      \"/tags/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Name of the tag\",\n              \"in\": \"query\",\n              \"name\": \"name\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Comma separated list of datapoints id to filter by\",\n              \"in\": \"query\",\n              \"name\": \"datapoints\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Comma separated list of groups id to filter by\",\n              \"in\": \"query\",\n              \"name\": \"groups\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Type of entity related to the tag\",\n              \"enum\": [\n                \"tp\",\n                \"tl\",\n                \"dp\",\n                \"gr\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/System.Object\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"List of all the groups associated to the user filtered by this tag.\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        }\n      },\n      \"/tags/{tagId}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the tag\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"tagId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/System.Object\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Delete a tag\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        },\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the tag\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"tagId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Dto.Tags.Tag\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Retrieve a tag\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        }\n      },\n      \"/tags/{tagId}/datapoints\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the tag\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"tagId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Delete the association of this tag with all datapoints\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        },\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the tag.\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"tagId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 0,\n              \"description\": \"Where to start when retrieving elements. Default is 0 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 20,\n              \"description\": \"Maximum elements to retrieve. Default to 20 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Type of the datapoint (\\\"tp\\\"/\\\"tl\\\")\",\n              \"enum\": [\n                \"tp\",\n                \"tl\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of the datapoint\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"List of all the datapoints associated to the user filtered by this tag\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        }\n      },\n      \"/tags/{tagId}/datapoints/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the tag.\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"tagId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Type of the datapoint (\\\"tp\\\"/\\\"tl\\\")\",\n              \"enum\": [\n                \"tp\",\n                \"tl\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Status of the datapoint\",\n              \"enum\": [\n                \"deleted\",\n                \"active\",\n                \"paused\",\n                \"spam\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude datapoints created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Count the datapoints associated to the user filtered by this tag\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        }\n      },\n      \"/tags/{tagId}/datapoints/patch\": {\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the tag\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"tagId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"The body patch\",\n              \"in\": \"body\",\n              \"name\": \"data\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.PatchBody\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Associate/Deassociate a tag with a datapoint\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        }\n      },\n      \"/tags/{tagId}/groups\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the tag\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"tagId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Delete the association of this tag with all groups\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        },\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the tag.\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"tagId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 0,\n              \"description\": \"Where to start when retrieving elements. Default is 0 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"offset\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"default\": 20,\n              \"description\": \"Maximum elements to retrieve. Default to 20 if not specified.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"limit\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Status of the datapoint\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude groups created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude groups created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"List of all the groups associated to the user filtered by this tag.\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        }\n      },\n      \"/tags/{tagId}/groups/count\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the tag.\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"tagId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Status of the datapoint\",\n              \"enum\": [\n                \"deleted\",\n                \"active\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter fields by this pattern\",\n              \"in\": \"query\",\n              \"name\": \"textSearch\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude groups created before this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdAfter\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Exclude groups created after this date (YYYYMMDD)\",\n              \"in\": \"query\",\n              \"name\": \"createdBefore\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.CountResponce\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Count the groups associated to the user filtered by this tag\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        }\n      },\n      \"/tags/{tagId}/groups/patch\": {\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the tag\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"tagId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"The body patch\",\n              \"in\": \"body\",\n              \"name\": \"data\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.PatchBody\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"Not found\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Associate/Deassociate a tag with a group\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        }\n      },\n      \"/tags/{tagId}/name\": {\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\",\n            \"application/x-www-form-urlencoded\"\n          ],\n          \"deprecated\": false,\n          \"parameters\": [\n            {\n              \"description\": \"Id of the tag\",\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"tagId\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"The body patch\",\n              \"in\": \"body\",\n              \"name\": \"data\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Requests.GenericTextPatch\"\n              }\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\",\n            \"application/xml\",\n            \"text/xml\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"summary\": \"Fast patch a tag name\",\n          \"tags\": [\n            \"Tags\"\n          ]\n        }\n      }\n    },\n    \"definitions\": {\n      \"Api.Core.Dto.Accounting.ConversionOptions\": {\n        \"properties\": {\n          \"hideComCost\": {\n            \"type\": \"boolean\"\n          },\n          \"hideCost\": {\n            \"type\": \"boolean\"\n          },\n          \"hideCount\": {\n            \"type\": \"boolean\"\n          },\n          \"hideParams\": {\n            \"type\": \"boolean\"\n          },\n          \"hideValue\": {\n            \"type\": \"boolean\"\n          },\n          \"percentCommission\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"percentValue\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Accounting.DomainWhitelistEntry\": {\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Accounting.ExtendedGrants\": {\n        \"properties\": {\n          \"allowAllGrants\": {\n            \"type\": \"boolean\"\n          },\n          \"allowGroupCreation\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Accounting.Guest\": {\n        \"properties\": {\n          \"apiKey\": {\n            \"type\": \"string\"\n          },\n          \"conversionOptions\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.ConversionOptions\"\n          },\n          \"creationDate\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"currentGrant\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.Grants.Grant\"\n          },\n          \"dateFormat\": {\n            \"type\": \"string\"\n          },\n          \"decimalSeparator\": {\n            \"type\": \"string\"\n          },\n          \"email\": {\n            \"type\": \"string\"\n          },\n          \"extendedGrants\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.ExtendedGrants\"\n          },\n          \"groupGrants\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"hitOptions\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.HitOptions\"\n          },\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"key\": {\n            \"type\": \"string\"\n          },\n          \"language\": {\n            \"type\": \"string\"\n          },\n          \"loginCount\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"notes\": {\n            \"type\": \"string\"\n          },\n          \"numberGroupSeparator\": {\n            \"type\": \"string\"\n          },\n          \"password\": {\n            \"type\": \"string\"\n          },\n          \"timeFormat\": {\n            \"enum\": [\n              \"AmPm\",\n              \"H24\"\n            ],\n            \"type\": \"string\"\n          },\n          \"timeZone\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"timeframeMinDate\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"timezonename\": {\n            \"type\": \"string\"\n          },\n          \"tlGrants\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"tpGrants\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"userName\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Accounting.HitOptions\": {\n        \"properties\": {\n          \"hideReferrer\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Accounting.IpBlacklistEntry\": {\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"ip\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Accounting.Plan\": {\n        \"properties\": {\n          \"allowedPersonalDomains\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"allowedPersonalUrls\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"billingPeriodEnd\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"billingPeriodStart\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"bonusMonthlyEvents\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"maximumDatapoints\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"maximumGuests\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"monthlyEvents\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"price\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"profileId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"recurring\": {\n            \"type\": \"boolean\"\n          },\n          \"recurringPeriod\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"usedDatapoints\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"usedMonthlyEvents\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Accounting.User\": {\n        \"properties\": {\n          \"boGoVal\": {\n            \"type\": \"string\"\n          },\n          \"bonusClicks\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"companyName\": {\n            \"type\": \"string\"\n          },\n          \"companyRole\": {\n            \"type\": \"string\"\n          },\n          \"email\": {\n            \"type\": \"string\"\n          },\n          \"firstName\": {\n            \"type\": \"string\"\n          },\n          \"lastName\": {\n            \"type\": \"string\"\n          },\n          \"phone\": {\n            \"type\": \"string\"\n          },\n          \"redirectOnly\": {\n            \"type\": \"boolean\"\n          },\n          \"registrationDate\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"timeframeMinDate\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"timezone\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"timezonename\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Aggregated.AggregatedResult\": {\n        \"properties\": {\n          \"activityDay\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"commissionsCost\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"conversionsCost\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"conversionsValue\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"convertedClicks\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"entityData\": {\n            \"$ref\": \"#/definitions/System.Object\"\n          },\n          \"entityId\": {\n            \"type\": \"string\"\n          },\n          \"fromDay\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"hourlyBreakDown\": {\n            \"additionalProperties\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult\"\n            },\n            \"type\": \"object\"\n          },\n          \"lastHitDate\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"spiderHitsCount\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"toDay\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"totalClicks\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"totalViews\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"uniqueClicks\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"uniqueConversions\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"uniqueViews\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Aggregated.AggregatedSummaryResult\": {\n        \"properties\": {\n          \"count\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"limit\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"offset\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"result\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.ClickStream.Hit\": {\n        \"properties\": {\n          \"accessTime\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"browser\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitBrowserInfo\"\n          },\n          \"clientLanguage\": {\n            \"type\": \"string\"\n          },\n          \"conversion1\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo\"\n          },\n          \"conversion2\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo\"\n          },\n          \"conversion3\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo\"\n          },\n          \"conversion4\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo\"\n          },\n          \"conversion5\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo\"\n          },\n          \"conversions\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitConversionInfo\"\n            },\n            \"type\": \"array\"\n          },\n          \"entity\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitDatapointInfo\"\n          },\n          \"ip\": {\n            \"type\": \"string\"\n          },\n          \"isProxy\": {\n            \"type\": \"string\"\n          },\n          \"isSpider\": {\n            \"type\": \"string\"\n          },\n          \"isUnique\": {\n            \"type\": \"string\"\n          },\n          \"location\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitLocationInfo\"\n          },\n          \"org\": {\n            \"type\": \"string\"\n          },\n          \"os\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitOsInfo\"\n          },\n          \"queryParams\": {\n            \"type\": \"string\"\n          },\n          \"realDestinationUrl\": {\n            \"type\": \"string\"\n          },\n          \"referer\": {\n            \"type\": \"string\"\n          },\n          \"source\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.HitSource\"\n          },\n          \"type\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.ClickStream.HitBrowserInfo\": {\n        \"properties\": {\n          \"browserType\": {\n            \"type\": \"string\"\n          },\n          \"familyId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"familyName\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.ClickStream.HitConversionInfo\": {\n        \"properties\": {\n          \"accessTime\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"comcost\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"cost\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"date\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"deleted\": {\n            \"type\": \"boolean\"\n          },\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"parameter\": {\n            \"type\": \"string\"\n          },\n          \"value\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.ClickStream.HitDatapointInfo\": {\n        \"properties\": {\n          \"creationDate\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"datapointFavourite\": {\n            \"type\": \"boolean\"\n          },\n          \"datapointId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"datapointName\": {\n            \"type\": \"string\"\n          },\n          \"datapointTitle\": {\n            \"type\": \"string\"\n          },\n          \"datapointType\": {\n            \"type\": \"string\"\n          },\n          \"destinationUrl\": {\n            \"type\": \"string\"\n          },\n          \"groupId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"groupName\": {\n            \"type\": \"string\"\n          },\n          \"isABTest\": {\n            \"type\": \"boolean\"\n          },\n          \"isPrivateShared\": {\n            \"type\": \"boolean\"\n          },\n          \"isPublic\": {\n            \"type\": \"boolean\"\n          },\n          \"notes\": {\n            \"type\": \"string\"\n          },\n          \"status\": {\n            \"enum\": [\n              \"Active\",\n              \"Paused\",\n              \"Abuse\",\n              \"Deleted\"\n            ],\n            \"type\": \"string\"\n          },\n          \"tags\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Tags.Tag\"\n            },\n            \"type\": \"array\"\n          },\n          \"trackingCode\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.ClickStream.HitListPage\": {\n        \"properties\": {\n          \"hits\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.Hit\"\n            },\n            \"type\": \"array\"\n          },\n          \"lastKey\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.ClickStream.HitLocationInfo\": {\n        \"properties\": {\n          \"areacode\": {\n            \"type\": \"string\"\n          },\n          \"city\": {\n            \"type\": \"string\"\n          },\n          \"country\": {\n            \"type\": \"string\"\n          },\n          \"latitude\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"longitude\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"metrocode\": {\n            \"type\": \"string\"\n          },\n          \"organization\": {\n            \"type\": \"string\"\n          },\n          \"postalcode\": {\n            \"type\": \"string\"\n          },\n          \"region\": {\n            \"type\": \"string\"\n          },\n          \"regionName\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.ClickStream.HitOsInfo\": {\n        \"properties\": {\n          \"familyId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"familyName\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.ClickStream.HitSource\": {\n        \"properties\": {\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"param\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Conversions.Conversion\": {\n        \"properties\": {\n          \"code\": {\n            \"type\": \"string\"\n          },\n          \"creationDate\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"deleted\": {\n            \"type\": \"boolean\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"protocol\": {\n            \"enum\": [\n              \"Http\",\n              \"Https\"\n            ],\n            \"type\": \"string\"\n          },\n          \"value\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Datapoints.BrowserBaseDestinationItem\": {\n        \"properties\": {\n          \"emailDestinationUrl\": {\n            \"type\": \"string\"\n          },\n          \"mobileDestinationUrl\": {\n            \"type\": \"string\"\n          },\n          \"spidersDestinationUrl\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Datapoints.Datapoint\": {\n        \"properties\": {\n          \"creationDate\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"encodeIp\": {\n            \"type\": \"boolean\"\n          },\n          \"fifthConversionId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"fifthConversionName\": {\n            \"type\": \"string\"\n          },\n          \"firstConversionId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"firstConversionName\": {\n            \"type\": \"string\"\n          },\n          \"fourthConversionId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"fourthConversionName\": {\n            \"type\": \"string\"\n          },\n          \"groupId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"groupName\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"isPublic\": {\n            \"type\": \"boolean\"\n          },\n          \"isSecured\": {\n            \"type\": \"boolean\"\n          },\n          \"lightTracking\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"notes\": {\n            \"type\": \"string\"\n          },\n          \"preferred\": {\n            \"type\": \"boolean\"\n          },\n          \"redirectOnly\": {\n            \"type\": \"boolean\"\n          },\n          \"secondConversionId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"secondConversionName\": {\n            \"type\": \"string\"\n          },\n          \"status\": {\n            \"enum\": [\n              \"Active\",\n              \"Paused\",\n              \"Abuse\",\n              \"Deleted\"\n            ],\n            \"type\": \"string\"\n          },\n          \"tags\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Tags.Tag\"\n            },\n            \"type\": \"array\"\n          },\n          \"thirdConversionId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"thirdConversionName\": {\n            \"type\": \"string\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          },\n          \"trackingCode\": {\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"enum\": [\n              \"TrackingLink\",\n              \"TrackingPixel\"\n            ],\n            \"type\": \"string\"\n          },\n          \"typeTL\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.TrackingLinkSpecifics\"\n          },\n          \"typeTP\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.TrackingPixelSpecifics\"\n          },\n          \"writePermited\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Datapoints.DatapointRetargetingInfo\": {\n        \"properties\": {\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Datapoints.MultipleDestinationItem\": {\n        \"properties\": {\n          \"url\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Datapoints.TrackingLinkSpecifics\": {\n        \"properties\": {\n          \"appendQuery\": {\n            \"type\": \"boolean\"\n          },\n          \"browserDestinationItem\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.BrowserBaseDestinationItem\"\n          },\n          \"destinationMode\": {\n            \"enum\": [\n              \"Simple\",\n              \"RandomDestination\",\n              \"DestinationByLanguage\",\n              \"SpilloverDestination\",\n              \"DynamicUrl\",\n              \"BrowserDestination\",\n              \"DestinationByNation\",\n              \"UniqueDestination\",\n              \"SequentialDestination\",\n              \"WeightedDestination\"\n            ],\n            \"type\": \"string\"\n          },\n          \"domainId\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"encodeUrl\": {\n            \"type\": \"boolean\"\n          },\n          \"expirationClicks\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"expirationDate\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"firstUrl\": {\n            \"type\": \"string\"\n          },\n          \"goDomainId\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"hideUrl\": {\n            \"type\": \"boolean\"\n          },\n          \"hideUrlTitle\": {\n            \"type\": \"string\"\n          },\n          \"isABTest\": {\n            \"type\": \"boolean\"\n          },\n          \"password\": {\n            \"type\": \"string\"\n          },\n          \"pauseAfterClicksExpiration\": {\n            \"type\": \"boolean\"\n          },\n          \"pauseAfterDateExpiration\": {\n            \"type\": \"boolean\"\n          },\n          \"randomDestinationItems\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.MultipleDestinationItem\"\n            },\n            \"type\": \"array\"\n          },\n          \"redirectType\": {\n            \"enum\": [\n              \"PermanentRedirect\",\n              \"TemporaryRedirect\"\n            ],\n            \"type\": \"string\"\n          },\n          \"referrerClean\": {\n            \"enum\": [\n              \"None\",\n              \"Clean\",\n              \"Myself\"\n            ],\n            \"type\": \"string\"\n          },\n          \"scripts\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.DatapointRetargetingInfo\"\n            },\n            \"type\": \"array\"\n          },\n          \"sequentialDestinationItems\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.MultipleDestinationItem\"\n            },\n            \"type\": \"array\"\n          },\n          \"spilloverDestinationItems\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.MultipleDestinationItem\"\n            },\n            \"type\": \"array\"\n          },\n          \"uniqueDestinationItem\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.UniqueDestinationItem\"\n          },\n          \"url\": {\n            \"type\": \"string\"\n          },\n          \"urlAfterClicksExpiration\": {\n            \"type\": \"string\"\n          },\n          \"urlAfterDateExpiration\": {\n            \"type\": \"string\"\n          },\n          \"urlsByLanguage\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.UrlByLanguageItem\"\n            },\n            \"type\": \"array\"\n          },\n          \"urlsByNation\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.UrlByNationItem\"\n            },\n            \"type\": \"array\"\n          },\n          \"weightedDestinationItems\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.WeightedDestinationItem\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Datapoints.TrackingPixelSpecifics\": {\n        \"properties\": {\n          \"parameterNote\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Datapoints.UniqueDestinationItem\": {\n        \"properties\": {\n          \"firstDestinationUrl\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Datapoints.UrlByLanguageItem\": {\n        \"properties\": {\n          \"languageCode\": {\n            \"type\": \"string\"\n          },\n          \"url\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Datapoints.UrlByNationItem\": {\n        \"properties\": {\n          \"nation\": {\n            \"type\": \"string\"\n          },\n          \"url\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Datapoints.WeightedDestinationItem\": {\n        \"properties\": {\n          \"url\": {\n            \"type\": \"string\"\n          },\n          \"weight\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Domains.Domain\": {\n        \"properties\": {\n          \"custom404\": {\n            \"type\": \"string\"\n          },\n          \"customHomepage\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"enum\": [\n              \"System\",\n              \"Go\",\n              \"Dedicated\",\n              \"Personal\"\n            ],\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.EntityUriLong\": {\n        \"properties\": {\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Grants.Grant\": {\n        \"properties\": {\n          \"DatapointType\": {\n            \"type\": \"string\"\n          },\n          \"Entity\": {\n            \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n          },\n          \"EntityName\": {\n            \"type\": \"string\"\n          },\n          \"EntityType\": {\n            \"type\": \"string\"\n          },\n          \"Type\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Groups.Group\": {\n        \"properties\": {\n          \"creationDate\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"deleted\": {\n            \"type\": \"boolean\"\n          },\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"isPublic\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"notes\": {\n            \"type\": \"string\"\n          },\n          \"preferred\": {\n            \"type\": \"boolean\"\n          },\n          \"redirectOnly\": {\n            \"type\": \"boolean\"\n          },\n          \"tags\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Tags.Tag\"\n            },\n            \"type\": \"array\"\n          },\n          \"writePermited\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Retargeting.RetargetingScript\": {\n        \"properties\": {\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"script\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Tags.Tag\": {\n        \"properties\": {\n          \"datapoints\": {\n            \"items\": {\n              \"format\": \"int64\",\n              \"type\": \"integer\"\n            },\n            \"type\": \"array\"\n          },\n          \"groups\": {\n            \"items\": {\n              \"format\": \"int64\",\n              \"type\": \"integer\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Tops.Top\": {\n        \"properties\": {\n          \"createdAt\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"data\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Tops.TopItem\"\n            },\n            \"type\": \"array\"\n          },\n          \"key\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Dto.Tops.TopItem\": {\n        \"properties\": {\n          \"entityData\": {\n            \"$ref\": \"#/definitions/System.Object\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"lastHitDate\": {\n            \"description\": \" (A date in \\\"YmdHis\\\" format)\",\n            \"example\": \"20120203120530\",\n            \"type\": \"string\"\n          },\n          \"spiderClicks\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"spiderHits\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"spiderViews\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"totalClicks\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"totalCommissionsCost\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"totalConversions\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"totalConversionsCost\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"totalConversionsValue\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"totalHits\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"totalViews\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"uniqueClicks\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"uniqueHits\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"uniqueViews\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Requests.ConversionPatchBody\": {\n        \"properties\": {\n          \"Action\": {\n            \"type\": \"string\"\n          },\n          \"Id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"ReplaceId\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Requests.DatapointsBatch\": {\n        \"properties\": {\n          \"List\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.Datapoint\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Requests.DeleteBatch\": {\n        \"properties\": {\n          \"Entities\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.EntityUriLong\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Requests.GenericTextPatch\": {\n        \"properties\": {\n          \"Text\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Requests.PatchBody\": {\n        \"properties\": {\n          \"Action\": {\n            \"type\": \"string\"\n          },\n          \"Id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Requests.PatchBodyBatch\": {\n        \"properties\": {\n          \"PatchRequests\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Requests.PatchBody\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Requests.PermissionPatchRequest\": {\n        \"properties\": {\n          \"Action\": {\n            \"type\": \"string\"\n          },\n          \"Id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"Verb\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Responses.CountResponce\": {\n        \"properties\": {\n          \"count\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.DomainWhitelistEntry]\": {\n        \"properties\": {\n          \"entities\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.DomainWhitelistEntry\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Accounting.IpBlacklistEntry]\": {\n        \"properties\": {\n          \"entities\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Accounting.IpBlacklistEntry\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Aggregated.AggregatedResult]\": {\n        \"properties\": {\n          \"entities\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Aggregated.AggregatedResult\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Responses.EntitiesResponse[Api.Core.Dto.ClickStream.Hit]\": {\n        \"properties\": {\n          \"entities\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.ClickStream.Hit\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Responses.EntitiesResponse[Api.Core.Dto.Grants.Grant]\": {\n        \"properties\": {\n          \"entities\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Dto.Grants.Grant\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Responses.EntitiesResponse[Api.Core.Responses.EntityUri[System.Int64]]\": {\n        \"properties\": {\n          \"entities\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Responses.EntityUri[System.Int64]\": {\n        \"properties\": {\n          \"id\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Api.Core.Responses.ModifyBatchItemResponce[Api.Core.Dto.Datapoints.Datapoint,System.Int64]\": {\n        \"properties\": {\n          \"entityData\": {\n            \"$ref\": \"#/definitions/Api.Core.Dto.Datapoints.Datapoint\"\n          },\n          \"errors\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/ClickMeter.Infrastructure.Validation.ValidationFailure\"\n            },\n            \"type\": \"array\"\n          },\n          \"result\": {\n            \"$ref\": \"#/definitions/Api.Core.Responses.EntityUri[System.Int64]\"\n          },\n          \"status\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"ClickMeter.Infrastructure.Validation.ValidationFailure\": {\n        \"properties\": {\n          \"code\": {\n            \"$ref\": \"#/definitions/System.Object\"\n          },\n          \"errorMessage\": {\n            \"type\": \"string\"\n          },\n          \"errorValue\": {\n            \"$ref\": \"#/definitions/System.Object\"\n          },\n          \"property\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"System.Object\": {\n        \"properties\": {},\n        \"type\": \"object\"\n      }\n    }\n  }"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/github.json",
    "content": "{\n    \"swagger\": \"2.0\",\n    \"info\": {\n        \"description\": \"This is a Sample for GitHub API.\",\n        \"version\": \"1.0.0\",\n        \"title\": \"Swagger GitHub\"\n    },\n    \"host\": \"someUrl\",\n    \"basePath\": \"/\",\n    \"tags\": [\n        {\n            \"name\": \"repos\",\n            \"description\": \"Repositories API\"\n        }\n    ],\n    \"schemes\": [ \"https\" ],\n    \"paths\": {\n        \"orgs/{orgId}/repos\": {\n            \"get\": {\n                \"tags\": [ \"repos\" ],\n                \"summary\": \"List organization repositories\",\n                \"description\": \"\",\n                \"operationId\": \"orgRepos\",\n                \"consumes\": [ \"application/json\" ],\n                \"produces\": [ \"application/json\" ],\n                \"parameters\": [\n                    {\n                        \"name\": \"orgId\",\n                        \"in\": \"path\",\n                        \"description\": \"Organization name\",\n                        \"required\": true,\n                        \"type\": \"string\"\n                    }\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"successful operation\",\n                        \"schema\": {\n                            \"type\": \"array\",\n                            \"items\": {\n                                \"$ref\": \"#/definitions/Repo\"\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    },\n    \"definitions\": {\n        \"Repo\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"id\": {\n                    \"type\": \"integer\",\n                    \"format\": \"int64\"\n                },\n                \"name\": {\n                    \"type\": \"string\"\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/i0027.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"version\": \"v1\",\n    \"title\": \"Tenant API\"\n  },\n  \"host\": \"\",\n  \"basePath\": \"5003\",\n  \"schemes\": [\n    \"localhost\"\n  ],\n  \"paths\": {\n    \"/claims\": {\n      \"get\": {\n        \"tags\": [\n          \"Claims\"\n        ],\n        \"operationId\": \"Claims_GetClaims\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            }\n          }\n        },\n        \"deprecated\": false,\n        \"security\": [\n          {\n            \"oauth2\": []\n          }\n        ]\n      }\n    },\n    \"/healthcheck\": {\n      \"get\": {\n        \"tags\": [\n          \"Healthcheck\"\n        ],\n        \"operationId\": \"Healthcheck_Check\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              }\n            }\n          }\n        },\n        \"deprecated\": false,\n        \"security\": [\n          {\n            \"oauth2\": []\n          }\n        ]\n      }\n    },\n    \"/tenants\": {\n      \"get\": {\n        \"tags\": [\n          \"Tenant\"\n        ],\n        \"operationId\": \"Tenant_GetTenants\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Collection[Tenant.Api.CrudModels.Tenant.GetModel]\"\n            }\n          }\n        },\n        \"deprecated\": false,\n        \"security\": [\n          {\n            \"oauth2\": []\n          }\n        ]\n      },\n      \"post\": {\n        \"tags\": [\n          \"Tenant\"\n        ],\n        \"operationId\": \"Tenant_CreateTenant\",\n        \"consumes\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\",\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"tenant\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Tenant.CreateModel\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Tenant.GetModel\"\n            }\n          }\n        },\n        \"deprecated\": false,\n        \"security\": [\n          {\n            \"oauth2\": []\n          }\n        ]\n      }\n    },\n    \"/tenants/{id}\": {\n      \"get\": {\n        \"tags\": [\n          \"Tenant\"\n        ],\n        \"operationId\": \"Tenant_GetTenantById\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"type\": \"string\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Tenant.GetModel\"\n            }\n          }\n        },\n        \"deprecated\": false,\n        \"security\": [\n          {\n            \"oauth2\": []\n          }\n        ]\n      },\n      \"put\": {\n        \"tags\": [\n          \"Tenant\"\n        ],\n        \"operationId\": \"Tenant_UpdateTenant\",\n        \"consumes\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\",\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"name\": \"tenant\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Tenant.UpdateModel\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Tenant.GetModel\"\n            }\n          }\n        },\n        \"deprecated\": false,\n        \"security\": [\n          {\n            \"oauth2\": []\n          }\n        ]\n      },\n      \"delete\": {\n        \"tags\": [\n          \"Tenant\"\n        ],\n        \"operationId\": \"Tenant_DeleteTenant\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"type\": \"string\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/System.Object\"\n            }\n          }\n        },\n        \"deprecated\": false,\n        \"security\": [\n          {\n            \"oauth2\": []\n          }\n        ]\n      }\n    },\n    \"/tenants/{tenantId}/addresses\": {\n      \"get\": {\n        \"tags\": [\n          \"Tenant\"\n        ],\n        \"operationId\": \"Tenant_GetAddresses\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"tenantId\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"type\": \"string\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Collection[Tenant.Api.CrudModels.Address.GetModel]\"\n            }\n          }\n        },\n        \"deprecated\": false,\n        \"security\": [\n          {\n            \"oauth2\": []\n          }\n        ]\n      },\n      \"post\": {\n        \"tags\": [\n          \"Tenant\"\n        ],\n        \"operationId\": \"Tenant_CreateAddress\",\n        \"consumes\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\",\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"tenantId\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"name\": \"address\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Address.CreateModel\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Address.GetModel\"\n            }\n          }\n        },\n        \"deprecated\": false,\n        \"security\": [\n          {\n            \"oauth2\": []\n          }\n        ]\n      }\n    },\n    \"/tenants/{tenantId}/addresses/{addressId}\": {\n      \"get\": {\n        \"tags\": [\n          \"Tenant\"\n        ],\n        \"operationId\": \"Tenant_GetAddress\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"tenantId\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"name\": \"addressId\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"type\": \"string\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Address.GetModel\"\n            }\n          }\n        },\n        \"deprecated\": false,\n        \"security\": [\n          {\n            \"oauth2\": []\n          }\n        ]\n      }\n    }\n  },\n  \"definitions\": {\n    \"Tenant.Api.CrudModels.Collection[Tenant.Api.CrudModels.Tenant.GetModel]\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"items\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Tenant.GetModel\"\n          }\n        },\n        \"links\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/Tenant.Api.CrudModels.CrudLink\"\n          }\n        }\n      }\n    },\n    \"Tenant.Api.CrudModels.Tenant.GetModel\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"links\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/Tenant.Api.CrudModels.CrudLink\"\n          }\n        }\n      }\n    },\n    \"Tenant.Api.CrudModels.CrudLink\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"rel\": {\n          \"type\": \"string\"\n        },\n        \"href\": {\n          \"type\": \"string\"\n        },\n        \"method\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"Tenant.Api.CrudModels.Tenant.CreateModel\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"Tenant.Api.CrudModels.Tenant.UpdateModel\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"System.Object\": {\n      \"type\": \"object\",\n      \"properties\": {}\n    },\n    \"Tenant.Api.CrudModels.Address.CreateModel\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"label\": {\n          \"type\": \"string\"\n        },\n        \"line1\": {\n          \"type\": \"string\"\n        },\n        \"line2\": {\n          \"type\": \"string\"\n        },\n        \"city\": {\n          \"type\": \"string\"\n        },\n        \"state\": {\n          \"type\": \"string\"\n        },\n        \"zip\": {\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"Tenant.Api.CrudModels.Address.GetModel\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"type\": \"string\"\n        },\n        \"line1\": {\n          \"type\": \"string\"\n        },\n        \"line2\": {\n          \"type\": \"string\"\n        },\n        \"city\": {\n          \"type\": \"string\"\n        },\n        \"state\": {\n          \"type\": \"string\"\n        },\n        \"zip\": {\n          \"type\": \"string\"\n        },\n        \"links\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/Tenant.Api.CrudModels.CrudLink\"\n          }\n        }\n      }\n    },\n    \"Tenant.Api.CrudModels.Collection[Tenant.Api.CrudModels.Address.GetModel]\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"items\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/Tenant.Api.CrudModels.Address.GetModel\"\n          }\n        },\n        \"links\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"$ref\": \"#/definitions/Tenant.Api.CrudModels.CrudLink\"\n          }\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/issue132.json",
    "content": "{\n    \"swagger\": \"2.0\",\n    \"info\": {\n      \"version\": \"v1\",\n      \"title\": \" \",\n      \"description\": \" \"\n    },\n    \"host\": \"myserver.com\",\n    \"basePath\": \"/\",\n    \"schemes\": [\"https\"],\n    \"paths\": {\n      \"/SomeEndpoint\": {\n        \"get\": {\n          \"tags\": [],\n          \"summary\": \"an operation\",\n          \"operationId\": \"MyOperation\",\n          \"consumes\": [\"application/json\"],\n          \"produces\": [],\n          \"parameters\": [],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"schema\": {\n                \"description\": \"a success object\",\n                \"type\": \"object\",\n                \"properties\": {\n                  \"Value1\": { \"type\": \"integer\" },\n                  \"Value2\": { \"type\": \"string\" }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"schema\": {\n                \"description\": \"invalid request response\",\n                \"type\": \"object\",\n                \"properties\": {\n                  \"ValidationMessages\": { \n                    \"type\": \"array\", \n                    \"items\": { \"type\": \"string\" } \n                  }\n                }\n              }\n            },\n            \"403\": {\n              \"description\": \"Forbidden\",\n              \"schema\": {\n                \"description\": \"forbidden request response\",\n                \"type\": \"object\",\n                \"properties\": {\n                  \"ErrorMessage\": { \"type\": \"string\" }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/issue173.json",
    "content": "{\n    \"openapi\": \"3.0.1\",\n    \"info\": {\n      \"title\": \"OdhApi Tourism .Net Core\",\n      \"description\": \"ODH Tourism Api based on .Net Core with PostgreSQL\",\n      \"termsOfService\": \"https://opendatahub.readthedocs.io/en/latest/\",\n      \"contact\": {\n        \"name\": \"Open Data Hub Team\",\n        \"url\": \"https://opendatahub.bz.it/\",\n        \"email\": \"info@opendatahub.bz.it\"\n      },\n      \"version\": \"v1\"\n    },\n    \"servers\": [\n      {\n        \"url\": \"https://api.tourism.testingmachine.eu\"\n      }\n    ],\n    \"paths\": {\n      \"/api/Accommodation\": {\n        \"get\": {\n          \"tags\": [\n            \"Accommodation\"\n          ],\n          \"summary\": \"GET Accommodation List\",\n          \"operationId\": \"AccommodationList\",\n          \"parameters\": [\n            {\n              \"name\": \"pagenumber\",\n              \"in\": \"query\",\n              \"description\": \"Pagenumber, (default:1)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Pagenumber, (default:1)\",\n                \"format\": \"int32\",\n                \"default\": 1\n              }\n            },\n            {\n              \"name\": \"pagesize\",\n              \"in\": \"query\",\n              \"description\": \"Elements per Page (If availabilitycheck set, pagesize has no effect all Accommodations are returned), (default:10)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Elements per Page (If availabilitycheck set, pagesize has no effect all Accommodations are returned), (default:10)\",\n                \"format\": \"int32\",\n                \"default\": 10\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"categoryfilter\",\n              \"in\": \"query\",\n              \"description\": \"Categoryfilter (BITMASK values: 1 = (not categorized), 2 = (1star), 4 = (1flower), 8 = (1sun), 14 = (1star/1flower/1sun), 16 = (2stars), 32 = (2flowers), 64 = (2suns), 112 = (2stars/2flowers/2suns), 128 = (3stars), 256 = (3flowers), 512 = (3suns), 1024 = (3sstars), 1920 = (3stars/3flowers/3suns/3sstars), 2048 = (4stars), 4096 = (4flowers), 8192 = (4suns), 16384 = (4sstars), 30720 = (4stars/4flowers/4suns/4sstars), 32768 = (5stars), 65536 = (5flowers), 131072 = (5suns), 229376 = (5stars/5flowers/5suns), 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Categoryfilter (BITMASK values: 1 = (not categorized), 2 = (1star), 4 = (1flower), 8 = (1sun), 14 = (1star/1flower/1sun), 16 = (2stars), 32 = (2flowers), 64 = (2suns), 112 = (2stars/2flowers/2suns), 128 = (3stars), 256 = (3flowers), 512 = (3suns), 1024 = (3sstars), 1920 = (3stars/3flowers/3suns/3sstars), 2048 = (4stars), 4096 = (4flowers), 8192 = (4suns), 16384 = (4sstars), 30720 = (4stars/4flowers/4suns/4sstars), 32768 = (5stars), 65536 = (5flowers), 131072 = (5suns), 229376 = (5stars/5flowers/5suns), 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"typefilter\",\n              \"in\": \"query\",\n              \"description\": \"Typefilter (BITMASK values: 1 = (HotelPension), 2 = (BedBreakfast), 4 = (Farm), 8 = (Camping), 16 = (Youth), 32 = (Mountain), 64 = (Apartment), 128 = (Not defined),'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Typefilter (BITMASK values: 1 = (HotelPension), 2 = (BedBreakfast), 4 = (Farm), 8 = (Camping), 16 = (Youth), 32 = (Mountain), 64 = (Apartment), 128 = (Not defined),'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"boardfilter\",\n              \"in\": \"query\",\n              \"description\": \"Boardfilter (BITMASK values: 0 = (all boards), 1 = (without board), 2 = (breakfast), 4 = (half board), 8 = (full board), 16 = (All inclusive), 'null' = No Filter), (default:'0')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Boardfilter (BITMASK values: 0 = (all boards), 1 = (without board), 2 = (breakfast), 4 = (half board), 8 = (full board), 16 = (All inclusive), 'null' = No Filter), (default:'0')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"featurefilter\",\n              \"in\": \"query\",\n              \"description\": \"FeatureFilter (BITMASK values: 1 = (Group-friendly), 2 = (Meeting rooms), 4 = (Swimming pool), 8 = (Sauna), 16 = (Garage), 32 = (Pick-up service), 64 = (WLAN), 128 = (Barrier-free), 256 = (Special menus for allergy sufferers), 512 = (Pets welcome), 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"FeatureFilter (BITMASK values: 1 = (Group-friendly), 2 = (Meeting rooms), 4 = (Swimming pool), 8 = (Sauna), 16 = (Garage), 32 = (Pick-up service), 64 = (WLAN), 128 = (Barrier-free), 256 = (Special menus for allergy sufferers), 512 = (Pets welcome), 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"featureidfilter\",\n              \"in\": \"query\",\n              \"description\": \"Feature Id Filter, filter over ALL Features vailable (Separator ',' List of Feature IDs, 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Feature Id Filter, filter over ALL Features vailable (Separator ',' List of Feature IDs, 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"themefilter\",\n              \"in\": \"query\",\n              \"description\": \"Themefilter (BITMASK values: 1 = (Gourmet), 2 = (At altitude), 4 = (Regional wellness offerings), 8 = (on the wheels), 16 = (With family), 32 = (Hiking), 64 = (In the vineyards), 128 = (Urban vibe), 256 = (At the ski resort), 512 = (Mediterranean), 1024 = (In the Dolomites), 2048 = (Alpine), 4096 = (Small and charming), 8192 = (Huts and mountain inns), 16384 = (Rural way of life), 32768 = (Balance), 65536 = (Christmas markets), 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Themefilter (BITMASK values: 1 = (Gourmet), 2 = (At altitude), 4 = (Regional wellness offerings), 8 = (on the wheels), 16 = (With family), 32 = (Hiking), 64 = (In the vineyards), 128 = (Urban vibe), 256 = (At the ski resort), 512 = (Mediterranean), 1024 = (In the Dolomites), 2048 = (Alpine), 4096 = (Small and charming), 8192 = (Huts and mountain inns), 16384 = (Rural way of life), 32768 = (Balance), 65536 = (Christmas markets), 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"badgefilter\",\n              \"in\": \"query\",\n              \"description\": \"BadgeFilter (BITMASK values: 1 = (Belvita Wellness Hotel), 2 = (Familyhotel), 4 = (Bikehotel), 8 = (Red Rooster Farm), 16 = (Barrier free certificated), 32 = (Vitalpina Hiking Hotel), 64 = (Private Rooms in South Tyrol), 128 = (Vinum Hotels), 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"BadgeFilter (BITMASK values: 1 = (Belvita Wellness Hotel), 2 = (Familyhotel), 4 = (Bikehotel), 8 = (Red Rooster Farm), 16 = (Barrier free certificated), 32 = (Vitalpina Hiking Hotel), 64 = (Private Rooms in South Tyrol), 128 = (Vinum Hotels), 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"idfilter\",\n              \"in\": \"query\",\n              \"description\": \"IDFilter (Separator ',' List of Accommodation IDs, 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"IDFilter (Separator ',' List of Accommodation IDs, 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction), 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction), 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"altitudefilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhtagfilter\",\n              \"in\": \"query\",\n              \"description\": \"ODHTag Filter (refers to Array SmgTags) (String, Separator ',' more ODHTags possible, 'null' = No Filter, available ODHTags reference to 'api/ODHTag?validforentity=accommodation'), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ODHTag Filter (refers to Array SmgTags) (String, Separator ',' more ODHTags possible, 'null' = No Filter, available ODHTags reference to 'api/ODHTag?validforentity=accommodation'), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhactive\",\n              \"in\": \"query\",\n              \"description\": \"ODHActive Filter (refers to field SmgActive) (possible Values: 'null' Displays all Accommodations, 'true' only ODH Active Accommodations, 'false' only ODH Disabled Accommodations, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"ODHActive Filter (refers to field SmgActive) (possible Values: 'null' Displays all Accommodations, 'true' only ODH Active Accommodations, 'false' only ODH Disabled Accommodations, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"active\",\n              \"in\": \"query\",\n              \"description\": \"TIC Active Filter (possible Values: 'null' Displays all Accommodations, 'true' only TIC Active Accommodations, 'false' only TIC Disabled Accommodations, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"TIC Active Filter (possible Values: 'null' Displays all Accommodations, 'true' only TIC Active Accommodations, 'false' only TIC Disabled Accommodations, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"bookablefilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"arrival\",\n              \"in\": \"query\",\n              \"description\": \"Arrival Date (yyyy-MM-dd) REQUIRED, (default:'Today')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Arrival Date (yyyy-MM-dd) REQUIRED, (default:'Today')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"departure\",\n              \"in\": \"query\",\n              \"description\": \"Departure Date (yyyy-MM-dd) REQUIRED, (default:'Tomorrow')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Departure Date (yyyy-MM-dd) REQUIRED, (default:'Tomorrow')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"roominfo\",\n              \"in\": \"query\",\n              \"description\": \"Roominfo Filter REQUIRED (Splitter for Rooms '|' Splitter for Persons Ages ',') (Room Types: 0=notprovided, 1=room, 2=apartment, 4=pitch/tent(onlyLTS), 8=dorm(onlyLTS)) possible Values Example 1-18,10|1-18 = 2 Rooms, Room 1 for 2 person Age 18 and Age 10, Room 2 for 1 Person Age 18), (default:'1-18,18')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Roominfo Filter REQUIRED (Splitter for Rooms '|' Splitter for Persons Ages ',') (Room Types: 0=notprovided, 1=room, 2=apartment, 4=pitch/tent(onlyLTS), 8=dorm(onlyLTS)) possible Values Example 1-18,10|1-18 = 2 Rooms, Room 1 for 2 person Age 18 and Age 10, Room 2 for 1 Person Age 18), (default:'1-18,18')\",\n                \"default\": \"1-18,18\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"bokfilter\",\n              \"in\": \"query\",\n              \"description\": \"Booking Channels Filter REQUIRED (Separator ',' possible values: hgv = (Booking Südtirol), htl = (Hotel.de), exp = (Expedia), bok = (Booking.com), lts = (LTS Availability check)), (default:'hgv')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Booking Channels Filter REQUIRED (Separator ',' possible values: hgv = (Booking Südtirol), htl = (Hotel.de), exp = (Expedia), bok = (Booking.com), lts = (LTS Availability check)), (default:'hgv')\",\n                \"default\": \"hgv\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"source\",\n              \"in\": \"query\",\n              \"description\": \"Source for MSS availability check, (default:'sinfo')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Source for MSS availability check, (default:'sinfo')\",\n                \"default\": \"sinfo\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"availabilitychecklanguage\",\n              \"in\": \"query\",\n              \"description\": \"Language of the Availability Response (possible values: 'de','it','en'), (default:'en')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language of the Availability Response (possible values: 'de','it','en'), (default:'en')\",\n                \"default\": \"en\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"availabilitycheck\",\n              \"in\": \"query\",\n              \"description\": \"Availability Check enabled/disabled (possible Values: 'true', 'false), (default Value: 'false') NOT AVAILABLE AS OPEN DATA\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Availability Check enabled/disabled (possible Values: 'true', 'false), (default Value: 'false') NOT AVAILABLE AS OPEN DATA\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"updatefrom\",\n              \"in\": \"query\",\n              \"description\": \"Date from Format (yyyy-MM-dd) (all GBActivityPoi with LastChange >= datefrom are passed), (default: null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Date from Format (yyyy-MM-dd) (all GBActivityPoi with LastChange >= datefrom are passed), (default: null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/AccommodationJsonResult\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/AccommodationJsonResult\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/AccommodationJsonResult\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/AccommodationJsonResult\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Accommodation/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Accommodation\"\n          ],\n          \"summary\": \"GET Accommodation Single\",\n          \"operationId\": \"SingleAccommodation\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the Accommodation\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the Accommodation\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"idsource\",\n              \"in\": \"query\",\n              \"description\": \"ID Source Filter (possible values:'lts','hgv'), (default:'lts')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID Source Filter (possible values:'lts','hgv'), (default:'lts')\",\n                \"default\": \"lts\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"availabilitychecklanguage\",\n              \"in\": \"query\",\n              \"description\": \"Language of the Availability Response (possible values: 'de','it','en'), (default:'de')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language of the Availability Response (possible values: 'de','it','en'), (default:'de')\",\n                \"default\": \"en\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"boardfilter\",\n              \"in\": \"query\",\n              \"description\": \"Boardfilter (BITMASK values: 0 = (all boards), 1 = (without board), 2 = (breakfast), 4 = (half board), 8 = (full board), 16 = (All inclusive), 'null' = No Filter), (default:'0')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Boardfilter (BITMASK values: 0 = (all boards), 1 = (without board), 2 = (breakfast), 4 = (half board), 8 = (full board), 16 = (All inclusive), 'null' = No Filter), (default:'0')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"arrival\",\n              \"in\": \"query\",\n              \"description\": \"Arrival Date (yyyy-MM-dd) REQUIRED, (default:'Today')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Arrival Date (yyyy-MM-dd) REQUIRED, (default:'Today')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"departure\",\n              \"in\": \"query\",\n              \"description\": \"Departure Date (yyyy-MM-dd) REQUIRED, (default:'Tomorrow')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Departure Date (yyyy-MM-dd) REQUIRED, (default:'Tomorrow')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"roominfo\",\n              \"in\": \"query\",\n              \"description\": \"Roominfo Filter REQUIRED (Splitter for Rooms '|' Splitter for Persons Ages ',') (Room Types: 0=notprovided, 1=room, 2=apartment, 4=pitch/tent(onlyLTS), 8=dorm(onlyLTS)) possible Values Example 1-18,10|1-18 = 2 Rooms, Room 1 for 2 person Age 18 and Age 10, Room 2 for 1 Person Age 18), (default:'1-18,18')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Roominfo Filter REQUIRED (Splitter for Rooms '|' Splitter for Persons Ages ',') (Room Types: 0=notprovided, 1=room, 2=apartment, 4=pitch/tent(onlyLTS), 8=dorm(onlyLTS)) possible Values Example 1-18,10|1-18 = 2 Rooms, Room 1 for 2 person Age 18 and Age 10, Room 2 for 1 Person Age 18), (default:'1-18,18')\",\n                \"default\": \"1-18,18\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"bokfilter\",\n              \"in\": \"query\",\n              \"description\": \"Booking Channels Filter REQUIRED (Separator ',' possible values: hgv = (Booking Südtirol), htl = (Hotel.de), exp = (Expedia), bok = (Booking.com), lts = (LTS Availability check)), (default:'hgv')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Booking Channels Filter REQUIRED (Separator ',' possible values: hgv = (Booking Südtirol), htl = (Hotel.de), exp = (Expedia), bok = (Booking.com), lts = (LTS Availability check)), (default:'hgv')\",\n                \"default\": \"hgv\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"source\",\n              \"in\": \"query\",\n              \"description\": \"Source for MSS availability check, (default:'sinfo')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Source for MSS availability check, (default:'sinfo')\",\n                \"default\": \"sinfo\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"availabilitycheck\",\n              \"in\": \"query\",\n              \"description\": \"Availability Check enabled/disabled (possible Values: 'true', 'false), (default Value: 'false') NOT AVAILABLE AS OPEN DATA\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Availability Check enabled/disabled (possible Values: 'true', 'false), (default Value: 'false') NOT AVAILABLE AS OPEN DATA\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Accommodation\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Accommodation\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Accommodation\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Accommodation\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/AccommodationTypes\": {\n        \"get\": {\n          \"tags\": [\n            \"Accommodation\"\n          ],\n          \"summary\": \"GET Accommodation Types List\",\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ArticleTypes\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ArticleTypes\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ArticleTypes\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ArticleTypes\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/AccommodationTypes/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Accommodation\"\n          ],\n          \"summary\": \"GET Accommodation Types Single\",\n          \"operationId\": \"SingleAccommodationTypes\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the AccommodationType\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the AccommodationType\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleTypes\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleTypes\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleTypes\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleTypes\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/AccommodationFeatures\": {\n        \"get\": {\n          \"tags\": [\n            \"Accommodation\"\n          ],\n          \"summary\": \"GET Accommodation Feature List (LTS Features)\",\n          \"parameters\": [\n            {\n              \"name\": \"source\",\n              \"in\": \"query\",\n              \"description\": \"IF source = \\\"lts\\\" the Features list is returned in XML Format directly from LTS, (default: blank)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"IF source = \\\"lts\\\" the Features list is returned in XML Format directly from LTS, (default: blank)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/AccoFeature\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/AccoFeature\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/AccoFeature\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/AccoFeature\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/AccommodationFeatures/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Accommodation\"\n          ],\n          \"summary\": \"GET Accommodation Feature Single (LTS Features)\",\n          \"operationId\": \"SingleAccommodationFeatures\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the AccommodationFeature\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the AccommodationFeature\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/AccoFeature\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/AccoFeature\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/AccoFeature\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/AccoFeature\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/AccommodationAvailable\": {\n        \"post\": {\n          \"tags\": [\n            \"Accommodation\"\n          ],\n          \"summary\": \"POST Available Accommodations HGV(Booking Suedtirol MSS) / LTS on posted IDs\",\n          \"parameters\": [\n            {\n              \"name\": \"availabilitychecklanguage\",\n              \"in\": \"query\",\n              \"description\": \"Language of the Availability Response\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language of the Availability Response\",\n                \"default\": \"en\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"boardfilter\",\n              \"in\": \"query\",\n              \"description\": \"Boardfilter (BITMASK values: 0 = (all boards), 1 = (without board), 2 = (breakfast), 4 = (half board), 8 = (full board), 16 = (All inclusive), 'null' = No Filter)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Boardfilter (BITMASK values: 0 = (all boards), 1 = (without board), 2 = (breakfast), 4 = (half board), 8 = (full board), 16 = (All inclusive), 'null' = No Filter)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"arrival\",\n              \"in\": \"query\",\n              \"description\": \"Arrival Date (yyyy-MM-dd) REQUIRED\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Arrival Date (yyyy-MM-dd) REQUIRED\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"departure\",\n              \"in\": \"query\",\n              \"description\": \"Departure Date (yyyy-MM-dd) REQUIRED\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Departure Date (yyyy-MM-dd) REQUIRED\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"roominfo\",\n              \"in\": \"query\",\n              \"description\": \"Roominfo Filter REQUIRED (Splitter for Rooms '|' Splitter for Persons Ages ',') (Room Types: 0=notprovided, 1=room, 2=apartment, 4=pitch/tent(onlyLTS), 8=dorm(onlyLTS)) possible Values Example 1-18,10|1-18 = 2 Rooms, Room 1 for 2 person Age 18 and Age 10, Room 2 for 1 Person Age 18), (default:'1-18,18')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Roominfo Filter REQUIRED (Splitter for Rooms '|' Splitter for Persons Ages ',') (Room Types: 0=notprovided, 1=room, 2=apartment, 4=pitch/tent(onlyLTS), 8=dorm(onlyLTS)) possible Values Example 1-18,10|1-18 = 2 Rooms, Room 1 for 2 person Age 18 and Age 10, Room 2 for 1 Person Age 18), (default:'1-18,18')\",\n                \"default\": \"1-18,18\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"bokfilter\",\n              \"in\": \"query\",\n              \"description\": \"Booking Channels Filter (Separator ',' possible values: hgv = (Booking Südtirol), htl = (Hotel.de), exp = (Expedia), bok = (Booking.com), lts = (LTS Availability check), (default:hgv)) REQUIRED\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Booking Channels Filter (Separator ',' possible values: hgv = (Booking Südtirol), htl = (Hotel.de), exp = (Expedia), bok = (Booking.com), lts = (LTS Availability check), (default:hgv)) REQUIRED\",\n                \"default\": \"hgv\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"source\",\n              \"in\": \"query\",\n              \"description\": \"Source of the Requester (possible value: 'sinfo' = Suedtirol.info, 'sbalance' = Südtirol Balance) REQUIRED\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Source of the Requester (possible value: 'sinfo' = Suedtirol.info, 'sbalance' = Südtirol Balance) REQUIRED\",\n                \"default\": \"sinfo\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"detail\",\n              \"in\": \"query\",\n              \"description\": \"Include Offer Details (Boolean, 1 = full Details)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Include Offer Details (Boolean, 1 = full Details)\",\n                \"format\": \"int32\",\n                \"default\": 0\n              }\n            },\n            {\n              \"name\": \"withoutmssids\",\n              \"in\": \"query\",\n              \"description\": \"Search over all bookable Accommodations on HGV MSS (No Ids have to be provided as Post Data) (default: false)\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Search over all bookable Accommodations on HGV MSS (No Ids have to be provided as Post Data) (default: false)\",\n                \"default\": false\n              }\n            },\n            {\n              \"name\": \"withoutlcsids\",\n              \"in\": \"query\",\n              \"description\": \"Search over all Accommodations on LTS (No Ids have to be provided as Post Data) (default: false)\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Search over all Accommodations on LTS (No Ids have to be provided as Post Data) (default: false)\",\n                \"default\": false\n              }\n            }\n          ],\n          \"requestBody\": {\n            \"description\": \"Posted Accommodation IDs (Separated by ,)\",\n            \"content\": {\n              \"application/json-patch+json\": {\n                \"schema\": {\n                  \"type\": \"string\",\n                  \"description\": \"Posted Accommodation IDs (Separated by ,)\",\n                  \"nullable\": true\n                }\n              },\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"string\",\n                  \"description\": \"Posted Accommodation IDs (Separated by ,)\",\n                  \"nullable\": true\n                }\n              },\n              \"text/json\": {\n                \"schema\": {\n                  \"type\": \"string\",\n                  \"description\": \"Posted Accommodation IDs (Separated by ,)\",\n                  \"nullable\": true\n                }\n              },\n              \"application/*+json\": {\n                \"schema\": {\n                  \"type\": \"string\",\n                  \"description\": \"Posted Accommodation IDs (Separated by ,)\",\n                  \"nullable\": true\n                }\n              }\n            }\n          },\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Accommodation\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Accommodation\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Accommodation\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Accommodation\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/AvailabilityCheck\": {\n        \"post\": {\n          \"tags\": [\n            \"Accommodation\"\n          ],\n          \"summary\": \"POST Available Accommodations HGV(Booking Suedtirol MSS) / LTS on posted IDs only Availability Response NOT AVAILABLE AS OPEN DATA\",\n          \"parameters\": [\n            {\n              \"name\": \"availabilitychecklanguage\",\n              \"in\": \"query\",\n              \"description\": \"Language of the Availability Response\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language of the Availability Response\",\n                \"default\": \"en\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"boardfilter\",\n              \"in\": \"query\",\n              \"description\": \"Boardfilter (BITMASK values: 0 = (all boards), 1 = (without board), 2 = (breakfast), 4 = (half board), 8 = (full board), 16 = (All inclusive), 'null' = No Filter)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Boardfilter (BITMASK values: 0 = (all boards), 1 = (without board), 2 = (breakfast), 4 = (half board), 8 = (full board), 16 = (All inclusive), 'null' = No Filter)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"arrival\",\n              \"in\": \"query\",\n              \"description\": \"Arrival Date (yyyy-MM-dd) REQUIRED\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Arrival Date (yyyy-MM-dd) REQUIRED\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"departure\",\n              \"in\": \"query\",\n              \"description\": \"Departure Date (yyyy-MM-dd) REQUIRED\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Departure Date (yyyy-MM-dd) REQUIRED\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"roominfo\",\n              \"in\": \"query\",\n              \"description\": \"Roominfo Filter REQUIRED (Splitter for Rooms '|' Splitter for Persons Ages ',') (Room Types: 0=notprovided, 1=room, 2=apartment, 4=pitch/tent(onlyLTS), 8=dorm(onlyLTS)) possible Values Example 1-18,10|1-18 = 2 Rooms, Room 1 for 2 person Age 18 and Age 10, Room 2 for 1 Person Age 18), (default:'1-18,18')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Roominfo Filter REQUIRED (Splitter for Rooms '|' Splitter for Persons Ages ',') (Room Types: 0=notprovided, 1=room, 2=apartment, 4=pitch/tent(onlyLTS), 8=dorm(onlyLTS)) possible Values Example 1-18,10|1-18 = 2 Rooms, Room 1 for 2 person Age 18 and Age 10, Room 2 for 1 Person Age 18), (default:'1-18,18')\",\n                \"default\": \"1-18,18\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"bokfilter\",\n              \"in\": \"query\",\n              \"description\": \"Booking Channels Filter (Separator ',' possible values: hgv = (Booking Südtirol), htl = (Hotel.de), exp = (Expedia), bok = (Booking.com), lts = (LTS Availability check), (default:hgv)) REQUIRED\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Booking Channels Filter (Separator ',' possible values: hgv = (Booking Südtirol), htl = (Hotel.de), exp = (Expedia), bok = (Booking.com), lts = (LTS Availability check), (default:hgv)) REQUIRED\",\n                \"default\": \"hgv\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"source\",\n              \"in\": \"query\",\n              \"description\": \"Source of the Requester (possible value: 'sinfo' = Suedtirol.info, 'sbalance' = Südtirol Balance) REQUIRED\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Source of the Requester (possible value: 'sinfo' = Suedtirol.info, 'sbalance' = Südtirol Balance) REQUIRED\",\n                \"default\": \"sinfo\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"detail\",\n              \"in\": \"query\",\n              \"description\": \"Include Offer Details (Boolean, 1 = full Details)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Include Offer Details (Boolean, 1 = full Details)\",\n                \"format\": \"int32\",\n                \"default\": 0\n              }\n            },\n            {\n              \"name\": \"withoutmssids\",\n              \"in\": \"query\",\n              \"description\": \"Search over all bookable Accommodations on HGV MSS (No Ids have to be provided as Post Data) (default: false)\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Search over all bookable Accommodations on HGV MSS (No Ids have to be provided as Post Data) (default: false)\",\n                \"default\": false\n              }\n            },\n            {\n              \"name\": \"withoutlcsids\",\n              \"in\": \"query\",\n              \"description\": \"Search over all Accommodations on LTS (No Ids have to be provided as Post Data) (default: false)\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Search over all Accommodations on LTS (No Ids have to be provided as Post Data) (default: false)\",\n                \"default\": false\n              }\n            }\n          ],\n          \"requestBody\": {\n            \"description\": \"Posted Accommodation IDs (Separated by ,)\",\n            \"content\": {\n              \"application/json-patch+json\": {\n                \"schema\": {\n                  \"type\": \"string\",\n                  \"description\": \"Posted Accommodation IDs (Separated by ,)\",\n                  \"nullable\": true\n                }\n              },\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"string\",\n                  \"description\": \"Posted Accommodation IDs (Separated by ,)\",\n                  \"nullable\": true\n                }\n              },\n              \"text/json\": {\n                \"schema\": {\n                  \"type\": \"string\",\n                  \"description\": \"Posted Accommodation IDs (Separated by ,)\",\n                  \"nullable\": true\n                }\n              },\n              \"application/*+json\": {\n                \"schema\": {\n                  \"type\": \"string\",\n                  \"description\": \"Posted Accommodation IDs (Separated by ,)\",\n                  \"nullable\": true\n                }\n              }\n            }\n          },\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/MssResponseShort\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/MssResponseShort\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/MssResponseShort\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/MssResponseShort\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Activity\": {\n        \"get\": {\n          \"tags\": [\n            \"Activity\"\n          ],\n          \"summary\": \"GET Activity List\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"pagenumber\",\n              \"in\": \"query\",\n              \"description\": \"Pagenumber, (default:1)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Pagenumber, (default:1)\",\n                \"format\": \"int32\",\n                \"default\": 1\n              }\n            },\n            {\n              \"name\": \"pagesize\",\n              \"in\": \"query\",\n              \"description\": \"Elements per Page, (default:10)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Elements per Page, (default:10)\",\n                \"format\": \"int32\",\n                \"default\": 10\n              }\n            },\n            {\n              \"name\": \"activitytype\",\n              \"in\": \"query\",\n              \"description\": \"Type of the Activity ('null' = Filter disabled, possible values: BITMASK: 'Mountains = 1','Cycling = 2','Local tours = 4','Horses = 8','Hiking = 16','Running and fitness = 32','Cross-country ski-track = 64','Tobbogan run = 128','Slopes = 256','Lifts = 512'), (default:'1023' == ALL), REFERENCE TO: GET /api/ActivityTypes\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Type of the Activity ('null' = Filter disabled, possible values: BITMASK: 'Mountains = 1','Cycling = 2','Local tours = 4','Horses = 8','Hiking = 16','Running and fitness = 32','Cross-country ski-track = 64','Tobbogan run = 128','Slopes = 256','Lifts = 512'), (default:'1023' == ALL), REFERENCE TO: GET /api/ActivityTypes\",\n                \"default\": \"1023\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"subtype\",\n              \"in\": \"query\",\n              \"description\": \"Subtype of the Activity (BITMASK Filter = available SubTypes depends on the selected Activity Type), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Subtype of the Activity (BITMASK Filter = available SubTypes depends on the selected Activity Type), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"idlist\",\n              \"in\": \"query\",\n              \"description\": \"IDFilter (Separator ',' List of Activity IDs), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"IDFilter (Separator ',' List of Activity IDs), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction)), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction)), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"areafilter\",\n              \"in\": \"query\",\n              \"description\": \"AreaFilter (Separator ',' IDList of AreaIDs separated by ','), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"AreaFilter (Separator ',' IDList of AreaIDs separated by ','), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"distancefilter\",\n              \"in\": \"query\",\n              \"description\": \"Distance Range Filter (Separator ',' example Value: 15,40 Distance from 15 up to 40 Km), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Distance Range Filter (Separator ',' example Value: 15,40 Distance from 15 up to 40 Km), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"altitudefilter\",\n              \"in\": \"query\",\n              \"description\": \"Altitude Range Filter (Separator ',' example Value: 500,1000 Altitude from 500 up to 1000 metres), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Altitude Range Filter (Separator ',' example Value: 500,1000 Altitude from 500 up to 1000 metres), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"durationfilter\",\n              \"in\": \"query\",\n              \"description\": \"Duration Range Filter (Separator ',' example Value: 1,3 Duration from 1 to 3 hours), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Duration Range Filter (Separator ',' example Value: 1,3 Duration from 1 to 3 hours), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"highlight\",\n              \"in\": \"query\",\n              \"description\": \"Hightlight Filter (possible values: 'false' = only Activities with Highlight false, 'true' = only Activities with Highlight true), (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Hightlight Filter (possible values: 'false' = only Activities with Highlight false, 'true' = only Activities with Highlight true), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"difficultyfilter\",\n              \"in\": \"query\",\n              \"description\": \"Difficulty Filter (possible values: '1' = easy, '2' = medium, '3' = difficult), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Difficulty Filter (possible values: '1' = easy, '2' = medium, '3' = difficult), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhtagfilter\",\n              \"in\": \"query\",\n              \"description\": \"Taglist Filter (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=activity'), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Taglist Filter (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=activity'), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"active\",\n              \"in\": \"query\",\n              \"description\": \"Active Activities Filter (possible Values: 'true' only Active Activities, 'false' only Disabled Activities\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Active Activities Filter (possible Values: 'true' only Active Activities, 'false' only Disabled Activities\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhactive\",\n              \"in\": \"query\",\n              \"description\": \"odhactive (Published) Activities Filter (possible Values: 'true' only published Activities, 'false' only not published Activities, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"odhactive (Published) Activities Filter (possible Values: 'true' only published Activities, 'false' only not published Activities, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"lastchange\",\n              \"in\": \"query\",\n              \"description\": \"Returns data changed after this date Format (yyyy-MM-dd), (default: 'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Returns data changed after this date Format (yyyy-MM-dd), (default: 'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivityJsonResult\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivityJsonResult\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivityJsonResult\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivityJsonResult\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Activity/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Activity\"\n          ],\n          \"summary\": \"GET Activity Single\",\n          \"operationId\": \"SingleActivity\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the Activity\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the Activity\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivity\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivity\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivity\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivity\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ActivityTypes\": {\n        \"get\": {\n          \"tags\": [\n            \"Activity\"\n          ],\n          \"summary\": \"GET Activity Types List\",\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ActivityTypes\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ActivityTypes\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ActivityTypes\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ActivityTypes\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ActivityTypes/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Activity\"\n          ],\n          \"summary\": \"GET Activity Types Single\",\n          \"operationId\": \"SingleActivityTypes\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ActivityTypes\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ActivityTypes\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ActivityTypes\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ActivityTypes\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Article\": {\n        \"get\": {\n          \"tags\": [\n            \"Article\"\n          ],\n          \"summary\": \"GET Article List\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"pagenumber\",\n              \"in\": \"query\",\n              \"description\": \"Pagenumber, (default:1)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Pagenumber, (default:1)\",\n                \"format\": \"int32\",\n                \"default\": 1\n              }\n            },\n            {\n              \"name\": \"pagesize\",\n              \"in\": \"query\",\n              \"description\": \"Elements per Page, (default:10)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Elements per Page, (default:10)\",\n                \"format\": \"int32\",\n                \"default\": 10\n              }\n            },\n            {\n              \"name\": \"articletype\",\n              \"in\": \"query\",\n              \"description\": \"Type of the Article ('null' = Filter disabled, possible values: BITMASK values: 1 = basearticle, 2 = book article, 4 = contentarticle, 8 = eventarticle, 16 = pressarticle, 32 = recipe, 64 = touroperator , 128 = b2b), (also possible for compatibily reasons: basisartikel, buchtippartikel, contentartikel, veranstaltungsartikel, presseartikel, rezeptartikel, reiseveranstalter, b2bartikel ) (default:'255' == ALL), REFERENCE TO: GET /api/ArticleTypes\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Type of the Article ('null' = Filter disabled, possible values: BITMASK values: 1 = basearticle, 2 = book article, 4 = contentarticle, 8 = eventarticle, 16 = pressarticle, 32 = recipe, 64 = touroperator , 128 = b2b), (also possible for compatibily reasons: basisartikel, buchtippartikel, contentartikel, veranstaltungsartikel, presseartikel, rezeptartikel, reiseveranstalter, b2bartikel ) (default:'255' == ALL), REFERENCE TO: GET /api/ArticleTypes\",\n                \"default\": \"255\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"articlesubtype\",\n              \"in\": \"query\",\n              \"description\": \"Sub Type of the Article (depends on the Maintype of the Article 'null' = Filter disabled)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Sub Type of the Article (depends on the Maintype of the Article 'null' = Filter disabled)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"idlist\",\n              \"in\": \"query\",\n              \"description\": \"IDFilter (Separator ',' List of Article IDs), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"IDFilter (Separator ',' List of Article IDs), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"langfilter\",\n              \"in\": \"query\",\n              \"description\": \"Language Filter (Gets only Articles Available in the passed Language)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language Filter (Gets only Articles Available in the passed Language)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"sortbyarticledate\",\n              \"in\": \"query\",\n              \"description\": \"Sort By Articledate ('true' sorts Articles by Articledate)\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Sort By Articledate ('true' sorts Articles by Articledate)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhtagfilter\",\n              \"in\": \"query\",\n              \"description\": \"ODH Taglist Filter (refers to Array SmgTags) (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=article'), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ODH Taglist Filter (refers to Array SmgTags) (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=article'), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhactive\",\n              \"in\": \"query\",\n              \"description\": \"ODH Active (Published) Activities Filter (Refers to field SmgActive) Article Filter (possible Values: 'true' only published Article, 'false' only not published Articles, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"ODH Active (Published) Activities Filter (Refers to field SmgActive) Article Filter (possible Values: 'true' only published Article, 'false' only not published Articles, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"active\",\n              \"in\": \"query\",\n              \"description\": \"Active Articles Filter (possible Values: 'true' only Active Articles, 'false' only Disabled Articles\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Active Articles Filter (possible Values: 'true' only Active Articles, 'false' only Disabled Articles\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"lastchange\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleJsonResult\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleJsonResult\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleJsonResult\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleJsonResult\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Article/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Article\"\n          ],\n          \"summary\": \"GET Article Single\",\n          \"operationId\": \"SingleArticle\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the Poi\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the Poi\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Article\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Article\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Article\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Article\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ArticleTypes\": {\n        \"get\": {\n          \"tags\": [\n            \"Article\"\n          ],\n          \"summary\": \"GET Article Types List\",\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ArticleTypes\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ArticleTypes\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ArticleTypes\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ArticleTypes\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ArticleTypes/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Article\"\n          ],\n          \"summary\": \"GET Article Types Single\",\n          \"operationId\": \"SingleArticleTypes\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleTypes\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleTypes\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleTypes\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ArticleTypes\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/MetaRegion\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET MetaRegion List\",\n          \"parameters\": [\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/MetaRegion\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/MetaRegion\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/MetaRegion\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/MetaRegion\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/MetaRegion/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET MetaRegion Single\",\n          \"operationId\": \"SingleMetaRegion\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the requested data\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the requested data\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/MetaRegion\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/MetaRegion\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/MetaRegion\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/MetaRegion\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ExperienceArea\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET Experiencearea List\",\n          \"parameters\": [\n            {\n              \"name\": \"visibleinsearch\",\n              \"in\": \"query\",\n              \"description\": \"Filter only Elements flagged with visibleinsearch: (possible values: 'true','false'), (default:'false')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Filter only Elements flagged with visibleinsearch: (possible values: 'true','false'), (default:'false')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ExperienceArea\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ExperienceArea\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ExperienceArea\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/ExperienceArea\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ExperienceArea/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET ExperienceArea Single\",\n          \"operationId\": \"SingleExperienceArea\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the requested data\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the requested data\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ExperienceArea\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ExperienceArea\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ExperienceArea\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ExperienceArea\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Region\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET Region List\",\n          \"parameters\": [\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Region\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Region\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Region\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Region\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Region/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET Region Single\",\n          \"operationId\": \"SingleRegion\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the requested data\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the requested data\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Region\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Region\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Region\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Region\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/TourismAssociation\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET TourismAssociation List\",\n          \"parameters\": [\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Tourismverein\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Tourismverein\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Tourismverein\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Tourismverein\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/TourismAssociation/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET TourismAssociation Single\",\n          \"operationId\": \"SingleTourismAssociation\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the requested data\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the requested data\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Tourismverein\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Tourismverein\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Tourismverein\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Tourismverein\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Municipality\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET Municipality List\",\n          \"parameters\": [\n            {\n              \"name\": \"visibleinsearch\",\n              \"in\": \"query\",\n              \"description\": \"Filter only Elements flagged with visibleinsearch: (possible values: 'true','false'), (default:'false')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Filter only Elements flagged with visibleinsearch: (possible values: 'true','false'), (default:'false')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Municipality\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Municipality\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Municipality\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Municipality\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Municipality/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET Municipality Single\",\n          \"operationId\": \"SingleMunicipality\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the requested data\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the requested data\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Municipality\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Municipality\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Municipality\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Municipality\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/District\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET District List\",\n          \"parameters\": [\n            {\n              \"name\": \"visibleinsearch\",\n              \"in\": \"query\",\n              \"description\": \"Filter only Elements flagged with visibleinsearch: (possible values: 'true','false'), (default:'false')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Filter only Elements flagged with visibleinsearch: (possible values: 'true','false'), (default:'false')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/District\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/District\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/District\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/District\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/District/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET District Single\",\n          \"operationId\": \"SingleDistrict\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the requested data\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the requested data\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/District\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/District\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/District\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/District\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Area\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET Area List\",\n          \"parameters\": [\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Area\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Area\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Area\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Area\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Area/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET Area Single\",\n          \"operationId\": \"SingleArea\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the requested data\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the requested data\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Area\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Area\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Area\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Area\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/SkiRegion\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET SkiRegion List\",\n          \"parameters\": [\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SkiRegion\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SkiRegion\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SkiRegion\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SkiRegion\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/SkiRegion/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET SkiRegion Single\",\n          \"operationId\": \"SingleSkiRegion\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the requested data\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the requested data\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiRegion\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiRegion\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiRegion\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiRegion\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/SkiArea\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET SkiArea List\",\n          \"parameters\": [\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SkiArea\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SkiArea\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SkiArea\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SkiArea\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/SkiArea/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET SkiArea Single\",\n          \"operationId\": \"SingleSkiArea\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the requested data\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the requested data\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiArea\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiArea\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiArea\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiArea\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/WineAward\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET Wine Awards List\",\n          \"parameters\": [\n            {\n              \"name\": \"wineid\",\n              \"in\": \"query\",\n              \"description\": \"WineId\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"WineId\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"companyid\",\n              \"in\": \"query\",\n              \"description\": \"Company Id\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Company Id\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Wine\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Wine\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Wine\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Wine\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/WineAward/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Common\"\n          ],\n          \"summary\": \"GET Wine Award Single\",\n          \"operationId\": \"SingleWineAward\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the requested data\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the requested data\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiArea\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiArea\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiArea\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SkiArea\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Event\": {\n        \"get\": {\n          \"tags\": [\n            \"Event\"\n          ],\n          \"summary\": \"GET Event List\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"pagenumber\",\n              \"in\": \"query\",\n              \"description\": \"Pagenumber, (default:1)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Pagenumber, (default:1)\",\n                \"format\": \"int32\",\n                \"default\": 1\n              }\n            },\n            {\n              \"name\": \"pagesize\",\n              \"in\": \"query\",\n              \"description\": \"Elements per Page, (default:10)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Elements per Page, (default:10)\",\n                \"format\": \"int32\",\n                \"default\": 10\n              }\n            },\n            {\n              \"name\": \"idlist\",\n              \"in\": \"query\",\n              \"description\": \"IDFilter (Separator ',' List of Event IDs, 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"IDFilter (Separator ',' List of Event IDs, 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction), 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction), 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rancfilter\",\n              \"in\": \"query\",\n              \"description\": \"Rancfilter (Ranc 0-5 possible)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Rancfilter (Ranc 0-5 possible)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"typefilter\",\n              \"in\": \"query\",\n              \"description\": \"Typefilter (Type of Event: not used yet)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Typefilter (Type of Event: not used yet)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"topicfilter\",\n              \"in\": \"query\",\n              \"description\": \"Topic ID Filter (Filter by Topic ID) BITMASK\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Topic ID Filter (Filter by Topic ID) BITMASK\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"orgfilter\",\n              \"in\": \"query\",\n              \"description\": \"Organization Filter (Filter by Organizer RID)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Organization Filter (Filter by Organizer RID)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhtagfilter\",\n              \"in\": \"query\",\n              \"description\": \"ODH Taglist Filter (refers to Array SmgTags) (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=event'), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ODH Taglist Filter (refers to Array SmgTags) (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=event'), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"active\",\n              \"in\": \"query\",\n              \"description\": \"Active Events Filter (possible Values: 'true' only Active Events, 'false' only Disabled Events, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Active Events Filter (possible Values: 'true' only Active Events, 'false' only Disabled Events, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhactive\",\n              \"in\": \"query\",\n              \"description\": \"ODH Active (Published) Events Filter (Refers to field SmgActive) Events Filter (possible Values: 'true' only published Events, 'false' only not published Events, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"ODH Active (Published) Events Filter (Refers to field SmgActive) Events Filter (possible Values: 'true' only published Events, 'false' only not published Events, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"begindate\",\n              \"in\": \"query\",\n              \"description\": \"BeginDate of Events (Format: yyyy-MM-dd)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"BeginDate of Events (Format: yyyy-MM-dd)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"enddate\",\n              \"in\": \"query\",\n              \"description\": \"EndDate of Events (Format: yyyy-MM-dd)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"EndDate of Events (Format: yyyy-MM-dd)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"sort\",\n              \"in\": \"query\",\n              \"description\": \"Sorting of Events ('desc': Descending, default, 'asc': Ascending)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Sorting of Events ('desc': Descending, default, 'asc': Ascending)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"lastchange\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"langfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"source\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventJsonResult\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventJsonResult\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventJsonResult\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventJsonResult\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Event/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Event\"\n          ],\n          \"summary\": \"GET Event Single\",\n          \"operationId\": \"SingleEvent\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the Event\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the Event\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Event\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Event\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Event\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Event\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/EventTopics\": {\n        \"get\": {\n          \"tags\": [\n            \"Event\"\n          ],\n          \"summary\": \"GET Event Topic List\",\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/EventTypes\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/EventTypes\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/EventTypes\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/EventTypes\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/EventTopics/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Event\"\n          ],\n          \"summary\": \"GET Event Topic Single\",\n          \"operationId\": \"SingleEventTopics\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventTypes\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventTypes\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventTypes\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventTypes\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/EventShort\": {\n        \"get\": {\n          \"tags\": [\n            \"EventShort\"\n          ],\n          \"summary\": \"GET EventShort List\",\n          \"parameters\": [\n            {\n              \"name\": \"pagenumber\",\n              \"in\": \"query\",\n              \"description\": \"Pagenumber (Integer)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Pagenumber (Integer)\",\n                \"format\": \"int32\",\n                \"default\": 1\n              }\n            },\n            {\n              \"name\": \"pagesize\",\n              \"in\": \"query\",\n              \"description\": \"Pagesize (Integer)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Pagesize (Integer)\",\n                \"format\": \"int32\",\n                \"default\": 1024\n              }\n            },\n            {\n              \"name\": \"startdate\",\n              \"in\": \"query\",\n              \"description\": \"Format (yyyy-MM-dd HH:mm) default or Unix Timestamp\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Format (yyyy-MM-dd HH:mm) default or Unix Timestamp\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"enddate\",\n              \"in\": \"query\",\n              \"description\": \"Format (yyyy-MM-dd HH:mm) default or Unix Timestamp\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Format (yyyy-MM-dd HH:mm) default or Unix Timestamp\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"datetimeformat\",\n              \"in\": \"query\",\n              \"description\": \"not provided, use default format, for unix timestamp pass \\\"uxtimestamp\\\"\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"not provided, use default format, for unix timestamp pass \\\"uxtimestamp\\\"\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"source\",\n              \"in\": \"query\",\n              \"description\": \"Source of the data, (possible values 'Content' or 'EBMS')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Source of the data, (possible values 'Content' or 'EBMS')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"eventlocation\",\n              \"in\": \"query\",\n              \"description\": \"Event Location, (possible values, 'NOI' or 'EC')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Event Location, (possible values, 'NOI' or 'EC')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"onlyactive\",\n              \"in\": \"query\",\n              \"description\": \"'true' if only Events marked as Active by Eurac should be displayed\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"'true' if only Events marked as Active by Eurac should be displayed\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"eventids\",\n              \"in\": \"query\",\n              \"description\": \"comma separated list of event ids\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"comma separated list of event ids\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"webaddress\",\n              \"in\": \"query\",\n              \"description\": \"Searches the webaddress\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Searches the webaddress\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"sortorder\",\n              \"in\": \"query\",\n              \"description\": \"ASC or DESC by StartDate\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ASC or DESC by StartDate\",\n                \"default\": \"ASC\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"lastchange\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShortResult\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShortResult\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShortResult\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShortResult\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/EventShort/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"EventShort\"\n          ],\n          \"summary\": \"GET EventShort Single\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"Id of the Event\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Id of the Event\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShort\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShort\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShort\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShort\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/EventShort/Detail/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"EventShort\"\n          ],\n          \"summary\": \"GET EventShort Single\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"Id of the Event\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Id of the Event\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShort\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShort\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShort\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/EventShort\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/EventShort/GetbyRoomBooked\": {\n        \"get\": {\n          \"tags\": [\n            \"EventShort\"\n          ],\n          \"summary\": \"GET EventShort List by Room Occupation\",\n          \"parameters\": [\n            {\n              \"name\": \"startdate\",\n              \"in\": \"query\",\n              \"description\": \"Format (yyyy-MM-dd HH:mm) default or Unix Timestamp\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Format (yyyy-MM-dd HH:mm) default or Unix Timestamp\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"enddate\",\n              \"in\": \"query\",\n              \"description\": \"Format (yyyy-MM-dd HH:mm) default or Unix Timestamp\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Format (yyyy-MM-dd HH:mm) default or Unix Timestamp\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"datetimeformat\",\n              \"in\": \"query\",\n              \"description\": \"not provided, use default format, for unix timestamp pass \\\"uxtimestamp\\\"\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"not provided, use default format, for unix timestamp pass \\\"uxtimestamp\\\"\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"source\",\n              \"in\": \"query\",\n              \"description\": \"Source of the data, (possible values 'Content' or 'EBMS')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Source of the data, (possible values 'Content' or 'EBMS')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"eventlocation\",\n              \"in\": \"query\",\n              \"description\": \"Event Location, (possible values, 'NOI' or 'EC')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Event Location, (possible values, 'NOI' or 'EC')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"onlyactive\",\n              \"in\": \"query\",\n              \"description\": \"'true' if only Events marked as Active by Eurac should be displayed\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"'true' if only Events marked as Active by Eurac should be displayed\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"eventids\",\n              \"in\": \"query\",\n              \"description\": \"comma separated list of event ids\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"comma separated list of event ids\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"webaddress\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/EventShortByRoom\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/EventShortByRoom\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/EventShortByRoom\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/EventShortByRoom\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/EventShort/RoomMapping\": {\n        \"get\": {\n          \"tags\": [\n            \"EventShort\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"object\",\n                    \"additionalProperties\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"object\",\n                    \"additionalProperties\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"object\",\n                    \"additionalProperties\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"object\",\n                    \"additionalProperties\": {\n                      \"type\": \"string\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Gastronomy\": {\n        \"get\": {\n          \"tags\": [\n            \"Gastronomy\"\n          ],\n          \"summary\": \"GET Gastronomy List\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"pagenumber\",\n              \"in\": \"query\",\n              \"description\": \"Pagenumber, (default:1)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Pagenumber, (default:1)\",\n                \"format\": \"int32\",\n                \"default\": 1\n              }\n            },\n            {\n              \"name\": \"pagesize\",\n              \"in\": \"query\",\n              \"description\": \"Elements per Page, (default:10)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Elements per Page, (default:10)\",\n                \"format\": \"int32\",\n                \"default\": 10\n              }\n            },\n            {\n              \"name\": \"idlist\",\n              \"in\": \"query\",\n              \"description\": \"IDFilter (Separator ',' List of Activity IDs), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"IDFilter (Separator ',' List of Activity IDs), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction)), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction)), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"dishcodefilter\",\n              \"in\": \"query\",\n              \"description\": \"Dish Code Filter (BITMASK values: 1 = (Speisen), 2 = (Vorspeise), 4 = (Hauptspeise), 8 = (Nachspeise), 16 = (Tagesgericht), 32 = (Menü), 64 = (Degustationsmenü), 128 = (Kindermenüs), 256 = (Mittagsmenüs)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Dish Code Filter (BITMASK values: 1 = (Speisen), 2 = (Vorspeise), 4 = (Hauptspeise), 8 = (Nachspeise), 16 = (Tagesgericht), 32 = (Menü), 64 = (Degustationsmenü), 128 = (Kindermenüs), 256 = (Mittagsmenüs)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"ceremonycodefilter\",\n              \"in\": \"query\",\n              \"description\": \"Ceremony Code Filter (BITMASK  values: 1 = (Familienfeiern), 2 = (Hochzeiten), 4 = (Geburtstagsfeiern), 8 = (Firmenessen), 16 = (Weihnachtsessen), 32 = (Sylvestermenü), 64 = (Seminare / Tagungen), 128 = (Versammlungen)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Ceremony Code Filter (BITMASK  values: 1 = (Familienfeiern), 2 = (Hochzeiten), 4 = (Geburtstagsfeiern), 8 = (Firmenessen), 16 = (Weihnachtsessen), 32 = (Sylvestermenü), 64 = (Seminare / Tagungen), 128 = (Versammlungen)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"categorycodefilter\",\n              \"in\": \"query\",\n              \"description\": \"Category Code Filter (BITMASK  values: 1 = (Restaurant), 2 = (Bar / Café / Bistro), 4 = (Pub / Disco), 8 = (Apres Ski), 16 = (Jausenstation), 32 = (Pizzeria), 64 = (Bäuerlicher Schankbetrieb), 128 = (Buschenschank), 256 = (Hofschank), 512 = (Törggele Lokale), 1024 = (Schnellimbiss), 2048 = (Mensa), 4096 = (Vinothek /Weinhaus / Taverne), 8192 = (Eisdiele), 16348 = (Gasthaus), 32768 = (Gasthof), 65536 = (Braugarten), 131072 = (Schutzhütte), 262144 = (Alm), 524288 = (Skihütte)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Category Code Filter (BITMASK  values: 1 = (Restaurant), 2 = (Bar / Café / Bistro), 4 = (Pub / Disco), 8 = (Apres Ski), 16 = (Jausenstation), 32 = (Pizzeria), 64 = (Bäuerlicher Schankbetrieb), 128 = (Buschenschank), 256 = (Hofschank), 512 = (Törggele Lokale), 1024 = (Schnellimbiss), 2048 = (Mensa), 4096 = (Vinothek /Weinhaus / Taverne), 8192 = (Eisdiele), 16348 = (Gasthaus), 32768 = (Gasthof), 65536 = (Braugarten), 131072 = (Schutzhütte), 262144 = (Alm), 524288 = (Skihütte)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"facilitycodefilter\",\n              \"in\": \"query\",\n              \"description\": \"Facility Code Filter (BITMASK  values: 1 = (American Express), 2 = (Diners Club), 4 = (Eurocard / Mastercard), 8 = (Visa), 16 = (Hunde erlaubt), 32 = (Geeignet für Busse), 64 = (Garten), 128 = (Garagen), 256 = (Bierbar), 512 = (Kinderspielplatz), 1024 = (Spielzimmer), 2048 = (Spielplatz), 4096 = (Parkplätze), 8192 = (Raucherräume), 16348 = (Terrasse), 32768 = (Behindertengerecht), 65536 = (Biergarten), 131072 = (Aussichtsterrasse), 262144 = (Wintergarten), 524288 = (Gault Millau Südtirol), 1048576 = (Guida Espresso), 2097152 = (Gambero Rosso), 4194304 = (Feinschmecker), 8388608 = (Aral Schlemmer Atlas), 16777216 = (Varta Führer), 33554432 = (Bertelsmann), 67108864 = (Preis für Südtiroler Weinkultur), 134217728 = (Michelin), 268435456 = (Roter Hahn), 536870912 = (Tafelspitz))\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Facility Code Filter (BITMASK  values: 1 = (American Express), 2 = (Diners Club), 4 = (Eurocard / Mastercard), 8 = (Visa), 16 = (Hunde erlaubt), 32 = (Geeignet für Busse), 64 = (Garten), 128 = (Garagen), 256 = (Bierbar), 512 = (Kinderspielplatz), 1024 = (Spielzimmer), 2048 = (Spielplatz), 4096 = (Parkplätze), 8192 = (Raucherräume), 16348 = (Terrasse), 32768 = (Behindertengerecht), 65536 = (Biergarten), 131072 = (Aussichtsterrasse), 262144 = (Wintergarten), 524288 = (Gault Millau Südtirol), 1048576 = (Guida Espresso), 2097152 = (Gambero Rosso), 4194304 = (Feinschmecker), 8388608 = (Aral Schlemmer Atlas), 16777216 = (Varta Führer), 33554432 = (Bertelsmann), 67108864 = (Preis für Südtiroler Weinkultur), 134217728 = (Michelin), 268435456 = (Roter Hahn), 536870912 = (Tafelspitz))\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"cuisinecodefilter\",\n              \"in\": \"query\",\n              \"description\": \"Cuisine Code Filter (BITMASK  values: 1 = (Vegetarische Küche), 2 = (Glutenfreie Küche), 4 = (Laktosefreie Kost), 8 = (Warme Küche), 16 = (Südtiroler Spezialitäten), 32 = (Gourmet Küche), 64 = (Italienische Küche), 128 = (Internationale Küche), 256 = (Pizza), 512 = (Fischspezialitäten), 1024 = (Asiatische Küche), 2048 = (Wildspezialitäten), 4096 = (Produkte eigener Erzeugung), 8192 = (Diätküche), 16348 = (Grillspezialitäten), 32768 = (Ladinische Küche), 65536 = (Kleine Karte), 131072 = (Fischwochen), 262144 = (Spargelwochen), 524288 = (Lammwochen), 1048576 = (Wildwochen), 2097152 = (Vorspeisewochen), 4194304 = (Nudelwochen), 8388608 = (Kräuterwochen), 16777216 = (Kindermenüs), 33554432 = (Mittagsmenüs))\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Cuisine Code Filter (BITMASK  values: 1 = (Vegetarische Küche), 2 = (Glutenfreie Küche), 4 = (Laktosefreie Kost), 8 = (Warme Küche), 16 = (Südtiroler Spezialitäten), 32 = (Gourmet Küche), 64 = (Italienische Küche), 128 = (Internationale Küche), 256 = (Pizza), 512 = (Fischspezialitäten), 1024 = (Asiatische Küche), 2048 = (Wildspezialitäten), 4096 = (Produkte eigener Erzeugung), 8192 = (Diätküche), 16348 = (Grillspezialitäten), 32768 = (Ladinische Küche), 65536 = (Kleine Karte), 131072 = (Fischwochen), 262144 = (Spargelwochen), 524288 = (Lammwochen), 1048576 = (Wildwochen), 2097152 = (Vorspeisewochen), 4194304 = (Nudelwochen), 8388608 = (Kräuterwochen), 16777216 = (Kindermenüs), 33554432 = (Mittagsmenüs))\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhtagfilter\",\n              \"in\": \"query\",\n              \"description\": \"ODH Taglist Filter (refers to Array SmgTags) (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=gastronomy'), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ODH Taglist Filter (refers to Array SmgTags) (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=gastronomy'), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"active\",\n              \"in\": \"query\",\n              \"description\": \"Active Gastronomies Filter (possible Values: 'true' only Active Gastronomies, 'false' only Disabled Gastronomies\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Active Gastronomies Filter (possible Values: 'true' only Active Gastronomies, 'false' only Disabled Gastronomies\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhactive\",\n              \"in\": \"query\",\n              \"description\": \"ODH Active (Published) Gastronomies Filter (Refers to field SmgActive) Gastronomies Filter (possible Values: 'true' only published Gastronomies, 'false' only not published Gastronomies, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"ODH Active (Published) Gastronomies Filter (Refers to field SmgActive) Gastronomies Filter (possible Values: 'true' only published Gastronomies, 'false' only not published Gastronomies, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"lastchange\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GastronomyJsonResult\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GastronomyJsonResult\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GastronomyJsonResult\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GastronomyJsonResult\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Gastronomy/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Gastronomy\"\n          ],\n          \"summary\": \"GET Gastronomy Single\",\n          \"operationId\": \"SingleGastronomy\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the Gastronomy\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the Gastronomy\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivity\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivity\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivity\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSActivity\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/GastronomyTypes\": {\n        \"get\": {\n          \"tags\": [\n            \"Gastronomy\"\n          ],\n          \"summary\": \"GET Gastronomy Types List\",\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/GastronomyTypes\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/GastronomyTypes\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/GastronomyTypes\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/GastronomyTypes\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/GastronomyTypes/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Gastronomy\"\n          ],\n          \"summary\": \"GET Gastronomy Types Single\",\n          \"operationId\": \"SingleGastronomyTypes\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GastronomyTypes\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GastronomyTypes\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GastronomyTypes\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GastronomyTypes\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Location\": {\n        \"get\": {\n          \"tags\": [\n            \"Location\"\n          ],\n          \"summary\": \"GET Location List (Use in locfilter)\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Localization Language, (default:'en')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Localization Language, (default:'en')\",\n                \"default\": \"en\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"type\",\n              \"in\": \"query\",\n              \"description\": \"Type ('mta','reg','tvs','mun','fra') Separator ',' : 'null' returns all Location Objects (default)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Type ('mta','reg','tvs','mun','fra') Separator ',' : 'null' returns all Location Objects (default)\",\n                \"default\": \"null\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"showall\",\n              \"in\": \"query\",\n              \"description\": \"Show all Data (true = all, false = show only data market as visible)\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Show all Data (true = all, false = show only data market as visible)\",\n                \"default\": true\n              }\n            },\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"description\": \"Locfilter (Separator ',' possible values: mta + MetaREGIONID = (Filter by MetaRegion), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction)), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Locfilter (Separator ',' possible values: mta + MetaREGIONID = (Filter by MetaRegion), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction)), (default:'null')\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/LocHelperclass\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/LocHelperclass\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/LocHelperclass\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/LocHelperclass\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Location/Skiarea\": {\n        \"get\": {\n          \"tags\": [\n            \"Location\"\n          ],\n          \"summary\": \"GET Skiarea List (Use in locfilter as \\\"ska\\\")\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Localization Language, (default:'en')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Localization Language, (default:'en')\",\n                \"default\": \"en\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"description\": \"Locfilter (Separator ',' possible values: mta + MetaREGIONID = (Filter by MetaRegion), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Locfilter (Separator ',' possible values: mta + MetaREGIONID = (Filter by MetaRegion), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), (default:'null')\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/LocHelperclass\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/LocHelperclass\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/LocHelperclass\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/LocHelperclass\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api\": {\n        \"get\": {\n          \"tags\": [\n            \"Main\"\n          ],\n          \"operationId\": \"TourismApi\",\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ODHActivityPoi\": {\n        \"get\": {\n          \"tags\": [\n            \"ODHActivityPoi\"\n          ],\n          \"summary\": \"GET ODHActivityPoi List\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"pagenumber\",\n              \"in\": \"query\",\n              \"description\": \"Pagenumber, (default:1)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Pagenumber, (default:1)\",\n                \"format\": \"int32\",\n                \"default\": 1\n              }\n            },\n            {\n              \"name\": \"pagesize\",\n              \"in\": \"query\",\n              \"description\": \"Elements per Page, (default:10)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Elements per Page, (default:10)\",\n                \"format\": \"int32\",\n                \"default\": 10\n              }\n            },\n            {\n              \"name\": \"type\",\n              \"in\": \"query\",\n              \"description\": \"Type of the ODHActivityPoi ('null' = Filter disabled, possible values: BITMASK: 1 = Wellness, 2 = Winter, 4 = Summer, 8 = Culture, 16 = Other, 32 = Gastronomy), (default: 63 == ALL), REFERENCE TO: GET /api/ODHActivityPoiTypes\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Type of the ODHActivityPoi ('null' = Filter disabled, possible values: BITMASK: 1 = Wellness, 2 = Winter, 4 = Summer, 8 = Culture, 16 = Other, 32 = Gastronomy), (default: 63 == ALL), REFERENCE TO: GET /api/ODHActivityPoiTypes\",\n                \"default\": \"63\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"subtype\",\n              \"in\": \"query\",\n              \"description\": \"Subtype of the ODHActivityPoi ('null' = Filter disabled, BITMASK Filter, available SubTypes depends on the selected Maintype reference to ODHActivityPoiTypes)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Subtype of the ODHActivityPoi ('null' = Filter disabled, BITMASK Filter, available SubTypes depends on the selected Maintype reference to ODHActivityPoiTypes)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"poitype\",\n              \"in\": \"query\",\n              \"description\": \"Additional Type of the ODHActivityPoi ('null' = Filter disabled, BITMASK Filter, available SubTypes depends on the selected Maintype, SubType reference to ODHActivityPoiTypes)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Additional Type of the ODHActivityPoi ('null' = Filter disabled, BITMASK Filter, available SubTypes depends on the selected Maintype, SubType reference to ODHActivityPoiTypes)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"idlist\",\n              \"in\": \"query\",\n              \"description\": \"IDFilter (Separator ',' List of ODHActivityPoi IDs), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"IDFilter (Separator ',' List of ODHActivityPoi IDs), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMASSOCIATIONID = (Filter by Tourismassociation), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction), 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMASSOCIATIONID = (Filter by Tourismassociation), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction), 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"langfilter\",\n              \"in\": \"query\",\n              \"description\": \"ODHActivityPoi Langfilter (returns only SmgPois available in the selected Language, Separator ',' possible values: 'de,it,en,nl,sc,pl,fr,ru', 'null': Filter disabled)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ODHActivityPoi Langfilter (returns only SmgPois available in the selected Language, Separator ',' possible values: 'de,it,en,nl,sc,pl,fr,ru', 'null': Filter disabled)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"areafilter\",\n              \"in\": \"query\",\n              \"description\": \"AreaFilter (Alternate Locfilter, can be combined with locfilter) (Separator ',' possible values: reg + REGIONID = (Filter by Region), tvs + TOURISMASSOCIATIONID = (Filter by Tourismassociation), skr + SKIREGIONID = (Filter by Skiregion), ska + SKIAREAID = (Filter by Skiarea), are + AREAID = (Filter by LTS Area), 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"AreaFilter (Alternate Locfilter, can be combined with locfilter) (Separator ',' possible values: reg + REGIONID = (Filter by Region), tvs + TOURISMASSOCIATIONID = (Filter by Tourismassociation), skr + SKIREGIONID = (Filter by Skiregion), ska + SKIAREAID = (Filter by Skiarea), are + AREAID = (Filter by LTS Area), 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"highlight\",\n              \"in\": \"query\",\n              \"description\": \"Hightlight Filter (possible values: 'false' = only ODHActivityPoi with Highlight false, 'true' = only ODHActivityPoi with Highlight true), (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Hightlight Filter (possible values: 'false' = only ODHActivityPoi with Highlight false, 'true' = only ODHActivityPoi with Highlight true), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"source\",\n              \"in\": \"query\",\n              \"description\": \"Source Filter (possible Values: 'null' Displays all ODHActivityPoi, 'None', 'ActivityData', 'PoiData', 'GastronomicData', 'MuseumData', 'Magnolia', 'Content', 'SuedtirolWein', 'ArchApp' (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Source Filter (possible Values: 'null' Displays all ODHActivityPoi, 'None', 'ActivityData', 'PoiData', 'GastronomicData', 'MuseumData', 'Magnolia', 'Content', 'SuedtirolWein', 'ArchApp' (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhtagfilter\",\n              \"in\": \"query\",\n              \"description\": \"ODH Taglist Filter (refers to Array SmgTags) (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=smgpoi'), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ODH Taglist Filter (refers to Array SmgTags) (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=smgpoi'), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhactive\",\n              \"in\": \"query\",\n              \"description\": \"ODH Active (Published) ODHActivityPoi Filter (Refers to field SmgActive) (possible Values: 'true' only published ODHActivityPoi, 'false' only not published ODHActivityPoi, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"ODH Active (Published) ODHActivityPoi Filter (Refers to field SmgActive) (possible Values: 'true' only published ODHActivityPoi, 'false' only not published ODHActivityPoi, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"active\",\n              \"in\": \"query\",\n              \"description\": \"Active ODHActivityPoi Filter (possible Values: 'true' only active ODHActivityPoi, 'false' only not active ODHActivityPoi, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Active ODHActivityPoi Filter (possible Values: 'true' only active ODHActivityPoi, 'false' only not active ODHActivityPoi, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"lastchange\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, not provided disables Random Sorting, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, not provided disables Random Sorting, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ODHActivityPoiJsonResult\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ODHActivityPoiJsonResult\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ODHActivityPoiJsonResult\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ODHActivityPoiJsonResult\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ODHActivityPoi/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"ODHActivityPoi\"\n          ],\n          \"summary\": \"GET ODHActivityPoi Single\",\n          \"operationId\": \"SingleODHActivityPoi\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the Poi\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the Poi\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ODHActivityPoi\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ODHActivityPoi\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ODHActivityPoi\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ODHActivityPoi\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ODHActivityPoiTypes\": {\n        \"get\": {\n          \"tags\": [\n            \"ODHActivityPoi\"\n          ],\n          \"summary\": \"GET ODHActivityPoi Types List\",\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SmgPoiTypes\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SmgPoiTypes\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SmgPoiTypes\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SmgPoiTypes\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ODHActivityPoiTypes/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"ODHActivityPoi\"\n          ],\n          \"summary\": \"GET ODHActivityPoi Types Single\",\n          \"operationId\": \"SingleODHActivityPoiTypes\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SmgPoiTypes\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SmgPoiTypes\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SmgPoiTypes\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SmgPoiTypes\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ODHTag\": {\n        \"get\": {\n          \"tags\": [\n            \"ODHTag\"\n          ],\n          \"summary\": \"GET ODHTag List\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"validforentity\",\n              \"in\": \"query\",\n              \"description\": \"Filter on Tags valid on Entitys (accommodation, activity, poi, smgpoi, package, gastronomy, event, article, common .. etc..)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Filter on Tags valid on Entitys (accommodation, activity, poi, smgpoi, package, gastronomy, event, article, common .. etc..)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"localizationlanguage\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SmgTags\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SmgTags\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SmgTags\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/SmgTags\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/ODHTag/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"ODHTag\"\n          ],\n          \"summary\": \"GET ODHTag Single\",\n          \"operationId\": \"SingleODHTag\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"localizationlanguage\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SmgTags\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SmgTags\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SmgTags\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SmgTags\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Poi\": {\n        \"get\": {\n          \"tags\": [\n            \"Poi\"\n          ],\n          \"summary\": \"GET Poi List\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"pagenumber\",\n              \"in\": \"query\",\n              \"description\": \"Pagenumber, (default:1)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Pagenumber, (default:1)\",\n                \"format\": \"int32\",\n                \"default\": 1\n              }\n            },\n            {\n              \"name\": \"pagesize\",\n              \"in\": \"query\",\n              \"description\": \"Elements per Page, (default:10)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Elements per Page, (default:10)\",\n                \"format\": \"int32\",\n                \"default\": 10\n              }\n            },\n            {\n              \"name\": \"poitype\",\n              \"in\": \"query\",\n              \"description\": \"Type of the Poi ('null' = Filter disabled, possible values: BITMASK 'Doctors, Pharmacies = 1','Shops = 2','Culture and sights= 4','Nightlife and entertainment = 8','Public institutions = 16','Sports and leisure = 32','Traffic and transport = 64', 'Service providers' = 128, 'Craft' = 256), (default:'511' == ALL), REFERENCE TO: GET /api/PoiTypes\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Type of the Poi ('null' = Filter disabled, possible values: BITMASK 'Doctors, Pharmacies = 1','Shops = 2','Culture and sights= 4','Nightlife and entertainment = 8','Public institutions = 16','Sports and leisure = 32','Traffic and transport = 64', 'Service providers' = 128, 'Craft' = 256), (default:'511' == ALL), REFERENCE TO: GET /api/PoiTypes\",\n                \"default\": \"511\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"subtype\",\n              \"in\": \"query\",\n              \"description\": \"Subtype of the Poi ('null' = Filter disabled, available Subtypes depends on the poitype BITMASK), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Subtype of the Poi ('null' = Filter disabled, available Subtypes depends on the poitype BITMASK), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"idlist\",\n              \"in\": \"query\",\n              \"description\": \"IDFilter (Separator ',' List of Activity IDs, 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"IDFilter (Separator ',' List of Activity IDs, 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"areafilter\",\n              \"in\": \"query\",\n              \"description\": \"AreaFilter (Alternate Locfilter, can be combined with locfilter) (Separator ',' possible values: reg + REGIONID = (Filter by Region), tvs + TOURISMASSOCIATIONID = (Filter by Tourismassociation), skr + SKIREGIONID = (Filter by Skiregion), ska + SKIAREAID = (Filter by Skiarea), are + AREAID = (Filter by LTS Area), 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"AreaFilter (Alternate Locfilter, can be combined with locfilter) (Separator ',' possible values: reg + REGIONID = (Filter by Region), tvs + TOURISMASSOCIATIONID = (Filter by Tourismassociation), skr + SKIREGIONID = (Filter by Skiregion), ska + SKIAREAID = (Filter by Skiarea), are + AREAID = (Filter by LTS Area), 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"highlight\",\n              \"in\": \"query\",\n              \"description\": \"Highlight Filter (Show only Highlights possible values: 'true' : show only Highlight Pois, 'null' Filter disabled), (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Highlight Filter (Show only Highlights possible values: 'true' : show only Highlight Pois, 'null' Filter disabled), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMASSOCIATIONID = (Filter by Tourismassociation), 'null' = No Filter), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Locfilter (Separator ',' possible values: reg + REGIONID = (Filter by Region), reg + REGIONID = (Filter by Region), tvs + TOURISMASSOCIATIONID = (Filter by Tourismassociation), 'null' = No Filter), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhtagfilter\",\n              \"in\": \"query\",\n              \"description\": \"ODH Taglist Filter (refers to Array SmgTags) (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=poi'), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ODH Taglist Filter (refers to Array SmgTags) (String, Separator ',' more Tags possible, available Tags reference to 'api/ODHTag?validforentity=poi'), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"active\",\n              \"in\": \"query\",\n              \"description\": \"Active Pois Filter (possible Values: 'true' only Active Pois, 'false' only Disabled Pois, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Active Pois Filter (possible Values: 'true' only Active Pois, 'false' only Disabled Pois, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhactive\",\n              \"in\": \"query\",\n              \"description\": \"ODH Active (Published) Pois Filter (Refers to field SmgActive) Pois Filter (possible Values: 'true' only published Pois, 'false' only not published Pois, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"ODH Active (Published) Pois Filter (Refers to field SmgActive) Pois Filter (possible Values: 'true' only published Pois, 'false' only not published Pois, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"lastchange\",\n              \"in\": \"query\",\n              \"description\": \"Returns data changed after this date Format (yyyy-MM-dd), (default: 'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Returns data changed after this date Format (yyyy-MM-dd), (default: 'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, 'null' disables Random Sorting, (default:null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in Meters. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSPoiJsonResult\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSPoiJsonResult\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSPoiJsonResult\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSPoiJsonResult\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Poi/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Poi\"\n          ],\n          \"summary\": \"GET Poi Single\",\n          \"operationId\": \"SinglePoi\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the Poi\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the Poi\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSPoi\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSPoi\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSPoi\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/GBLTSPoi\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/PoiTypes\": {\n        \"get\": {\n          \"tags\": [\n            \"Poi\"\n          ],\n          \"summary\": \"GET Poi Types List\",\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/PoiTypes\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/PoiTypes\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/PoiTypes\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/PoiTypes\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/PoiTypes/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Poi\"\n          ],\n          \"summary\": \"GET Poi Types Single\",\n          \"operationId\": \"SinglePoiTypes\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/PoiTypes\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/PoiTypes\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/PoiTypes\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/PoiTypes\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Venue\": {\n        \"get\": {\n          \"tags\": [\n            \"Venue\"\n          ],\n          \"summary\": \"GET Venue List\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"pagenumber\",\n              \"in\": \"query\",\n              \"description\": \"Pagenumber, (default:1)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Pagenumber, (default:1)\",\n                \"format\": \"int32\",\n                \"default\": 1\n              }\n            },\n            {\n              \"name\": \"pagesize\",\n              \"in\": \"query\",\n              \"description\": \"Elements per Page (max 1024), (default:10)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Elements per Page (max 1024), (default:10)\",\n                \"format\": \"int32\",\n                \"default\": 10\n              }\n            },\n            {\n              \"name\": \"categoryfilter\",\n              \"in\": \"query\",\n              \"description\": \"Venue Category Filter (BITMASK) (Separator ',' List of Venuetype Bitmasks, refer to api/VenueTypes type:category), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Venue Category Filter (BITMASK) (Separator ',' List of Venuetype Bitmasks, refer to api/VenueTypes type:category), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"capacityfilter\",\n              \"in\": \"query\",\n              \"description\": \"Capacity Range Filter (Separator ',' example Value: 50,100 All Venues with rooms from 50 to 100 people), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Capacity Range Filter (Separator ',' example Value: 50,100 All Venues with rooms from 50 to 100 people), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"roomcountfilter\",\n              \"in\": \"query\",\n              \"description\": \"Room Count Range Filter (Separator ',' example Value: 2,5 All Venues with 2 to 5 rooms), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Room Count Range Filter (Separator ',' example Value: 2,5 All Venues with 2 to 5 rooms), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"idlist\",\n              \"in\": \"query\",\n              \"description\": \"IDFilter (Separator ',' List of Venue IDs), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"IDFilter (Separator ',' List of Venue IDs), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"description\": \"Locfilter (Separator ',' possible values: mta + METAREGIONID = (Filter by Metaregion), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction)), (default:'null' = disabled)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Locfilter (Separator ',' possible values: mta + METAREGIONID = (Filter by Metaregion), reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction)), (default:'null' = disabled)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"featurefilter\",\n              \"in\": \"query\",\n              \"description\": \"Venue Features Filter (BITMASK) (Separator ',' List of Venuetype Bitmasks, refer to api/VenueTypes type:feature), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Venue Features Filter (BITMASK) (Separator ',' List of Venuetype Bitmasks, refer to api/VenueTypes type:feature), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"setuptypefilter\",\n              \"in\": \"query\",\n              \"description\": \"Venue SetupType Filter (BITMASK) (Separator ',' List of Venuetype Bitmasks, refer to api/VenueTypes type:seatType), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Venue SetupType Filter (BITMASK) (Separator ',' List of Venuetype Bitmasks, refer to api/VenueTypes type:seatType), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhtagfilter\",\n              \"in\": \"query\",\n              \"description\": \"ODH Taglist Filter (refers to Array SmgTags)(String, Separator ',' more Tags possible, available Tags reference to 'api/SmgTag/ByMainEntity/SmgPoi'), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ODH Taglist Filter (refers to Array SmgTags)(String, Separator ',' more Tags possible, available Tags reference to 'api/SmgTag/ByMainEntity/SmgPoi'), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"source\",\n              \"in\": \"query\",\n              \"description\": \"Source Filter(String, ), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Source Filter(String, ), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"active\",\n              \"in\": \"query\",\n              \"description\": \"Active Venue Filter (possible Values: 'true' only Active Gastronomies, 'false' only Disabled Venues\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Active Venue Filter (possible Values: 'true' only Active Gastronomies, 'false' only Disabled Venues\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhactive\",\n              \"in\": \"query\",\n              \"description\": \"ODH Active (Published) Venue Filter (possible Values: 'true' only published Venue, 'false' only not published Venue, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"ODH Active (Published) Venue Filter (possible Values: 'true' only published Venue, 'false' only not published Venue, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"lastchange\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, not provided disables Random Sorting, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, not provided disables Random Sorting, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in KM. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in KM. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"String to search for, Title in all languages are searched, (default: null)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/DDVenueJsonResult\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/DDVenueJsonResult\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/DDVenueJsonResult\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/DDVenueJsonResult\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Venue/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Venue\"\n          ],\n          \"summary\": \"GET Venue Single\",\n          \"operationId\": \"SingleVenue\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the Venue\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the Venue\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Object created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/DDVenue\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/DDVenue\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/DDVenue\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/DDVenue\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/VenueTypes\": {\n        \"get\": {\n          \"tags\": [\n            \"Venue\"\n          ],\n          \"summary\": \"GET Venue Types List\",\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/VenueType\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/VenueType\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/VenueType\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/VenueType\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/VenueTypes/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Venue\"\n          ],\n          \"summary\": \"GET Venue Types Single\",\n          \"operationId\": \"SingleVenueTypes\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/VenueType\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/VenueType\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/VenueType\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/VenueType\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Weather\": {\n        \"get\": {\n          \"tags\": [\n            \"Weather\"\n          ],\n          \"summary\": \"GET Current Suedtirol Weather LIVE\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language\",\n                \"default\": \"en\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"description\": \"Locfilter (possible values: filter by StationData 1 = Schlanders, 2 = Meran, 3 = Bozen, 4 = Sterzing, 5 = Brixen, 6 = Bruneck | filter nearest Station to Region,TV,Municipality,Fraction reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction), '' = No Filter). IF a Locfilter is set, only Stationdata is provided.\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Locfilter (possible values: filter by StationData 1 = Schlanders, 2 = Meran, 3 = Bozen, 4 = Sterzing, 5 = Brixen, 6 = Bruneck | filter nearest Station to Region,TV,Municipality,Fraction reg + REGIONID = (Filter by Region), tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction), '' = No Filter). IF a Locfilter is set, only Stationdata is provided.\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"extended\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"default\": false\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Weather\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Weather\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Weather\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Weather\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Weather/District\": {\n        \"get\": {\n          \"tags\": [\n            \"Weather\"\n          ],\n          \"summary\": \"GET District Weather LIVE\",\n          \"parameters\": [\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"description\": \"Locfilter (possible values: filter by District 1 = Etschtal/Überetsch/Unterland, 2 = Burggrafenamt, 3 = Vinschgau, 4 = Eisacktal und Sarntal, 5 = Wipptal, 6 = Pustertal/Dolomiten, 7 = Ladinien-Dolomiten | filter nearest DistrictWeather to Region,TV,Municipality,Fraction tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction))\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Locfilter (possible values: filter by District 1 = Etschtal/Überetsch/Unterland, 2 = Burggrafenamt, 3 = Vinschgau, 4 = Eisacktal und Sarntal, 5 = Wipptal, 6 = Pustertal/Dolomiten, 7 = Ladinien-Dolomiten | filter nearest DistrictWeather to Region,TV,Municipality,Fraction tvs + TOURISMVEREINID = (Filter by Tourismverein), mun + MUNICIPALITYID = (Filter by Municipality), fra + FRACTIONID = (Filter by Fraction))\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language\",\n                \"default\": \"en\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/BezirksWeather\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/BezirksWeather\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/BezirksWeather\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/BezirksWeather\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Weather/Realtime\": {\n        \"get\": {\n          \"tags\": [\n            \"Weather\"\n          ],\n          \"summary\": \"GET Current Realtime Weather LIVE\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language\",\n                \"default\": \"en\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/WeatherRealTime\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/WeatherRealTime\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/WeatherRealTime\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/WeatherRealTime\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Weather/Measuringpoint\": {\n        \"get\": {\n          \"tags\": [\n            \"Weather\"\n          ],\n          \"summary\": \"GET Measuringpoint LIST\",\n          \"parameters\": [\n            {\n              \"name\": \"idlist\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"locfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"areafilter\",\n              \"in\": \"query\",\n              \"description\": \"Area ID (multiple IDs possible, separated by \\\",\\\")\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Area ID (multiple IDs possible, separated by \\\",\\\")\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"skiareafilter\",\n              \"in\": \"query\",\n              \"description\": \"Skiarea ID\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Skiarea ID\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"active\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhactive\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"lastchange\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Measuringpoint\"\n                    }\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Measuringpoint\"\n                    }\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Measuringpoint\"\n                    }\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"type\": \"array\",\n                    \"items\": {\n                      \"$ref\": \"#/components/schemas/Measuringpoint\"\n                    }\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Weather/Measuringpoint/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"Weather\"\n          ],\n          \"summary\": \"GET Measuringpoint SINGLE\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"Measuringpoint ID\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Measuringpoint ID\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Measuringpoint\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Measuringpoint\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Measuringpoint\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/Measuringpoint\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/Weather/SnowReport\": {\n        \"get\": {\n          \"tags\": [\n            \"Weather\"\n          ],\n          \"summary\": \"GET Snowreport Data LIVE\",\n          \"parameters\": [\n            {\n              \"name\": \"skiareaid\",\n              \"in\": \"query\",\n              \"description\": \"Skiarea ID\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Skiarea ID\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"lang\",\n              \"in\": \"query\",\n              \"description\": \"Language\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language\",\n                \"default\": \"de\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SnowReportBaseData\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SnowReportBaseData\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SnowReportBaseData\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/SnowReportBaseData\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/WebcamInfo\": {\n        \"get\": {\n          \"tags\": [\n            \"WebcamInfo\"\n          ],\n          \"summary\": \"GET Webcam List\",\n          \"parameters\": [\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"pagenumber\",\n              \"in\": \"query\",\n              \"description\": \"Pagenumber, (default:1)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Pagenumber, (default:1)\",\n                \"format\": \"int32\",\n                \"default\": 1\n              }\n            },\n            {\n              \"name\": \"pagesize\",\n              \"in\": \"query\",\n              \"description\": \"Elements per Page (max 1024), (default:10)\",\n              \"schema\": {\n                \"type\": \"integer\",\n                \"description\": \"Elements per Page (max 1024), (default:10)\",\n                \"format\": \"int32\",\n                \"default\": 25\n              }\n            },\n            {\n              \"name\": \"source\",\n              \"in\": \"query\",\n              \"description\": \"Source Filter(String, ), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Source Filter(String, ), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"idlist\",\n              \"in\": \"query\",\n              \"description\": \"IDFilter (Separator ',' List of Gastronomy IDs), (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"IDFilter (Separator ',' List of Gastronomy IDs), (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"active\",\n              \"in\": \"query\",\n              \"description\": \"Active Webcam Filter (possible Values: 'true' only Active Gastronomies, 'false' only Disabled Gastronomies\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"Active Webcam Filter (possible Values: 'true' only Active Gastronomies, 'false' only Disabled Gastronomies\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"odhactive\",\n              \"in\": \"query\",\n              \"description\": \"ODH Active (refers to field SmgActive) (Published) Webcam Filter (possible Values: 'true' only published Webcam, 'false' only not published Webcam, (default:'null')\",\n              \"schema\": {\n                \"type\": \"boolean\",\n                \"description\": \"ODH Active (refers to field SmgActive) (Published) Webcam Filter (possible Values: 'true' only published Webcam, 'false' only not published Webcam, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"seed\",\n              \"in\": \"query\",\n              \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, not provided disables Random Sorting, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Seed '1 - 10' for Random Sorting, '0' generates a Random Seed, not provided disables Random Sorting, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"latitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Latitude Format: '46.624975', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"longitude\",\n              \"in\": \"query\",\n              \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"GeoFilter Longitude Format: '11.369909', 'null' = disabled, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"radius\",\n              \"in\": \"query\",\n              \"description\": \"Radius to Search in KM. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Radius to Search in KM. Only Object withhin the given point and radius are returned and sorted by distance. Random Sorting is disabled if the GeoFilter Informations are provided, (default:'null')\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"updatefrom\",\n              \"in\": \"query\",\n              \"description\": \"Date from Format (yyyy-MM-dd) (all Gastronomy with LastChange >= datefrom are passed), (default: null = disabled)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Date from Format (yyyy-MM-dd) (all Gastronomy with LastChange >= datefrom are passed), (default: null = disabled)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"searchfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawfilter\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"rawsort\",\n              \"in\": \"query\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"List created\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/WebcamInfoJsonResult\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/WebcamInfoJsonResult\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/WebcamInfoJsonResult\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/WebcamInfoJsonResult\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Request Error\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Internal Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      },\n      \"/api/WebcamInfo/{id}\": {\n        \"get\": {\n          \"tags\": [\n            \"WebcamInfo\"\n          ],\n          \"summary\": \"GET Webcam Single\",\n          \"operationId\": \"SingleWebcamInfo\",\n          \"parameters\": [\n            {\n              \"name\": \"id\",\n              \"in\": \"path\",\n              \"description\": \"ID of the Webcam\",\n              \"required\": true,\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"ID of the Webcam\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"language\",\n              \"in\": \"query\",\n              \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n              \"schema\": {\n                \"type\": \"string\",\n                \"description\": \"Language field selector, displays data and fields available in the selected language (default:'null' all languages are displayed)\",\n                \"nullable\": true\n              }\n            },\n            {\n              \"name\": \"fields\",\n              \"in\": \"query\",\n              \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n              \"schema\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"description\": \"Select fields to display, More fields are indicated by separator ',' example fields=Id,Active,Shortname. Select also Dictionary fields, example Detail.de.Title, or Elements of Arrays example ImageGallery[0].ImageUrl. (default:'null' all fields are displayed)\",\n                \"nullable\": true\n              }\n            }\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"Success\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/WebcamInfo\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/WebcamInfo\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/WebcamInfo\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/WebcamInfo\"\n                  }\n                }\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad Request\",\n              \"content\": {\n                \"text/plain\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"application/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/json\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                },\n                \"text/csv\": {\n                  \"schema\": {\n                    \"$ref\": \"#/components/schemas/ProblemDetails\"\n                  }\n                }\n              }\n            },\n            \"500\": {\n              \"description\": \"Server Error\"\n            }\n          },\n          \"security\": [\n            {\n              \"oauth2\": [ ]\n            }\n          ]\n        }\n      }\n    },\n    \"components\": {\n      \"schemas\": {\n        \"LicenseInfo\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"License\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"LicenseHolder\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Author\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ClosedData\": {\n              \"type\": \"boolean\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"AccoFeature\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Name\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"HgvId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OtaCodes\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"RoomAmenityCodes\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"integer\",\n                \"format\": \"int32\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"AccoDetail\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Language\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Name\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"NameAddition\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Street\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Zip\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Phone\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Mobile\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Fax\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Firstname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Lastname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Email\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Website\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"City\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortdesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Longdesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Vat\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CountryCode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"AccoBookingChannel\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Pos1ID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Portalname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"BookingId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"ImageGallery\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"ImageName\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ImageUrl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Width\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Height\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"ImageSource\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ImageTitle\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"ImageDesc\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"ImageAltText\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"IsInGallery\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"ListPosition\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"ValidFrom\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"nullable\": true\n            },\n            \"ValidTo\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"nullable\": true\n            },\n            \"CopyRight\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"License\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"LicenseHolder\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ImageTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"RegionInfo\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Name\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"TvInfo\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Name\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"MunicipalityInfo\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Name\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DistrictInfo\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Name\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"AreaInfo\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Name\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"LocationInfo\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"RegionInfo\": {\n              \"$ref\": \"#/components/schemas/RegionInfo\"\n            },\n            \"TvInfo\": {\n              \"$ref\": \"#/components/schemas/TvInfo\"\n            },\n            \"MunicipalityInfo\": {\n              \"$ref\": \"#/components/schemas/MunicipalityInfo\"\n            },\n            \"DistrictInfo\": {\n              \"$ref\": \"#/components/schemas/DistrictInfo\"\n            },\n            \"AreaInfo\": {\n              \"$ref\": \"#/components/schemas/AreaInfo\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"RoomPictures\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Pictureurl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Bank\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Name\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Iban\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Swift\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"PaymentTerm\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Methods\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Prepayment\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Ccards\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Priority\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Description\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Bank\": {\n              \"$ref\": \"#/components/schemas/Bank\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Penalty\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Percent\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"Datefrom\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"nullable\": true\n            },\n            \"Daysarrival\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"CancelPolicy\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Refundable\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"RefundableUntil\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"nullable\": true\n            },\n            \"Description\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Penalties\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Penalty\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"RoomDetails\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"RoomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"RoomSeq\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"TotalPrice\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"OfferId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Price_ws\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"Price_bb\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"Price_hb\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"Price_fb\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"Price_ai\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"Roomtype\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"Roomfree\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"Roommax\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"Roommin\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"Roomstd\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"Roomtitle\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Roomdesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"RoomChannelLink\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TotalPriceString\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"RoomPictures\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RoomPictures\"\n              },\n              \"nullable\": true\n            },\n            \"PaymentTerm\": {\n              \"$ref\": \"#/components/schemas/PaymentTerm\"\n            },\n            \"CancelPolicy\": {\n              \"$ref\": \"#/components/schemas/CancelPolicy\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"MssResponseShort\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"HotelId\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"A0RID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Bookable\": {\n              \"type\": \"boolean\"\n            },\n            \"ChannelID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Channellink\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OfferId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OfferGid\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OfferTyp\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"OfferShow\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"CheapestOffer\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"CheapestOfferString\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OnlinepaymentMethods\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OnlinepaymentPrepayment\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OnlinepaymentCCards\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CheapestOffer_ws\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"CheapestOffer_bb\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"CheapestOffer_hb\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"CheapestOffer_fb\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"CheapestOffer_ai\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"RoomDetails\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RoomDetails\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"IndependentDescription\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Language\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Description\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"BacklinkUrl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"IndependentData\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"IndependentDescription\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/IndependentDescription\"\n              },\n              \"nullable\": true\n            },\n            \"IndependentRating\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"Enabled\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"AccoRoomInfo\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Source\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Accommodation\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"HgvId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Units\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Beds\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Representation\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"HasApartment\": {\n              \"type\": \"boolean\"\n            },\n            \"HasRoom\": {\n              \"type\": \"boolean\"\n            },\n            \"IsCamping\": {\n              \"type\": \"boolean\"\n            },\n            \"IsGastronomy\": {\n              \"type\": \"boolean\"\n            },\n            \"IsBookable\": {\n              \"type\": \"boolean\"\n            },\n            \"IsAccommodation\": {\n              \"type\": \"boolean\"\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"TVMember\": {\n              \"type\": \"boolean\"\n            },\n            \"TourismVereinId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MainLanguage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"FirstImport\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AccoCategoryId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AccoTypeId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"DistrictId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"BoardIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"MarketingGroupIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"Features\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/AccoFeature\"\n              },\n              \"nullable\": true\n            },\n            \"BadgeIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"ThemeIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SpecialFeaturesIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"AccoDetail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/AccoDetail\"\n              },\n              \"nullable\": true\n            },\n            \"AccoBookingChannel\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/AccoBookingChannel\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"LocationInfo\": {\n              \"$ref\": \"#/components/schemas/LocationInfo\"\n            },\n            \"GastronomyId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"MssResponseShort\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/MssResponseShort\"\n              },\n              \"nullable\": true\n            },\n            \"IndependentData\": {\n              \"$ref\": \"#/components/schemas/IndependentData\"\n            },\n            \"AccoRoomInfo\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/AccoRoomInfo\"\n              },\n              \"nullable\": true\n            },\n            \"TrustYouID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TrustYouScore\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"TrustYouResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TrustYouActive\": {\n              \"type\": \"boolean\"\n            },\n            \"TrustYouState\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"AccommodationJsonResult\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"TotalResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TotalPages\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CurrentPage\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"PreviousPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"NextPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Seed\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Items\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Accommodation\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"ProblemDetails\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Title\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Status\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Instance\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": { }\n        },\n        \"ArticleTypes\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Bitmask\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\"\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Parent\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Key\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TypeDesc\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"GpsInfo\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"LTSTags\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Level\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TagName\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"OperationScheduleTime\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Start\": {\n              \"type\": \"string\",\n              \"format\": \"date-span\"\n            },\n            \"End\": {\n              \"type\": \"string\",\n              \"format\": \"date-span\"\n            },\n            \"Monday\": {\n              \"type\": \"boolean\"\n            },\n            \"Tuesday\": {\n              \"type\": \"boolean\"\n            },\n            \"Wednesday\": {\n              \"type\": \"boolean\"\n            },\n            \"Thuresday\": {\n              \"type\": \"boolean\"\n            },\n            \"Friday\": {\n              \"type\": \"boolean\"\n            },\n            \"Saturday\": {\n              \"type\": \"boolean\"\n            },\n            \"Sunday\": {\n              \"type\": \"boolean\"\n            },\n            \"State\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Timecode\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"OperationSchedule\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"OperationscheduleName\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"Start\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"Stop\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OperationScheduleTime\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/OperationScheduleTime\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"GpsTrack\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"GpxTrackDesc\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"GpxTrackUrl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Detail\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Header\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SubHeader\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"IntroText\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"BaseText\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Title\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AdditionalText\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MetaTitle\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MetaDesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"GetThereText\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Language\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Keywords\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"ContactInfos\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Address\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"City\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ZipCode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CountryCode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CountryName\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Surname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Givenname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"NamePrefix\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Email\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Phonenumber\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Faxnumber\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Url\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Language\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyName\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Vat\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Tax\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"LogoUrl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"AdditionalPoiInfos\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Novelty\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MainType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SubType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"PoiType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Language\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Ratings\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Stamina\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Experience\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Landscape\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Difficulty\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Technique\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"GBLTSActivity\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"GpsPoints\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/GpsInfo\"\n              },\n              \"nullable\": true\n            },\n            \"LTSTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/LTSTags\"\n              },\n              \"nullable\": true\n            },\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OutdooractiveID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OutdooractiveElevationID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CopyrightChecked\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SmgId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Highlight\": {\n              \"type\": \"boolean\"\n            },\n            \"Difficulty\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SubType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"PoiType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"FirstImport\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"LocationInfo\": {\n              \"$ref\": \"#/components/schemas/LocationInfo\"\n            },\n            \"TourismorganizationId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AreaId\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"AltitudeDifference\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeHighestPoint\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeLowestPoint\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeSumUp\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeSumDown\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"DistanceDuration\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"DistanceLength\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"IsOpen\": {\n              \"type\": \"boolean\"\n            },\n            \"IsPrepared\": {\n              \"type\": \"boolean\"\n            },\n            \"RunToValley\": {\n              \"type\": \"boolean\"\n            },\n            \"IsWithLigth\": {\n              \"type\": \"boolean\"\n            },\n            \"HasRentals\": {\n              \"type\": \"boolean\"\n            },\n            \"HasFreeEntrance\": {\n              \"type\": \"boolean\"\n            },\n            \"LiftAvailable\": {\n              \"type\": \"boolean\"\n            },\n            \"FeetClimb\": {\n              \"type\": \"boolean\"\n            },\n            \"BikeTransport\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"OperationSchedule\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/OperationSchedule\"\n              },\n              \"nullable\": true\n            },\n            \"GpsInfo\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsInfo\"\n              },\n              \"nullable\": true\n            },\n            \"GpsTrack\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsTrack\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"AdditionalPoiInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/AdditionalPoiInfos\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"Ratings\": {\n              \"$ref\": \"#/components/schemas/Ratings\"\n            },\n            \"Exposition\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"OwnerRid\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ChildPoiIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"MasterPoiIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"WayNumber\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"GBLTSActivityJsonResult\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"TotalResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TotalPages\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CurrentPage\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"PreviousPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"NextPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Seed\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Items\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GBLTSActivity\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"ActivityTypes\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Bitmask\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\"\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Parent\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Key\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TypeDesc\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"AdditionalArticleInfos\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Language\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Elements\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"ArticleLinkInfo\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Language\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Elements\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Article\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Highlight\": {\n              \"type\": \"boolean\"\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SubType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"FirstImport\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"ArticleDate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"nullable\": true\n            },\n            \"ArticleDateTo\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"nullable\": true\n            },\n            \"OperationSchedule\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/OperationSchedule\"\n              },\n              \"nullable\": true\n            },\n            \"GpsInfo\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsInfo\"\n              },\n              \"nullable\": true\n            },\n            \"GpsTrack\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsTrack\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"AdditionalArticleInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/AdditionalArticleInfos\"\n              },\n              \"nullable\": true\n            },\n            \"ArticleLinkInfo\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ArticleLinkInfo\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"ArticleJsonResult\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"TotalResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TotalPages\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CurrentPage\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"PreviousPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"NextPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Seed\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Items\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Article\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DetailsThemed\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Title\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Intro\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MetaTitle\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MetaDesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DetailThemed\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"DetailsThemed\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/DetailsThemed\"\n              },\n              \"nullable\": true\n            },\n            \"Language\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"GpsPolygon\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Webcam\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"WebcamId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Webcamname\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"Webcamurl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"GpsInfo\": {\n              \"$ref\": \"#/components/schemas/GpsInfo\"\n            },\n            \"ListPosition\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"RelatedContent\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Name\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Link\": {\n              \"type\": \"string\",\n              \"nullable\": true,\n              \"readOnly\": true\n            },\n            \"Self\": {\n              \"type\": \"string\",\n              \"nullable\": true,\n              \"readOnly\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"MetaRegion\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"DetailThemed\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/DetailThemed\"\n              },\n              \"nullable\": true\n            },\n            \"DistrictIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"TourismvereinIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"RegionIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"GpsPolygon\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsPolygon\"\n              },\n              \"nullable\": true\n            },\n            \"Webcam\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Webcam\"\n              },\n              \"nullable\": true\n            },\n            \"VisibleInSearch\": {\n              \"type\": \"boolean\"\n            },\n            \"RelatedContent\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RelatedContent\"\n              },\n              \"nullable\": true\n            },\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"CustomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"ExperienceArea\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"DistrictIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"TourismvereinIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"GpsPolygon\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsPolygon\"\n              },\n              \"nullable\": true\n            },\n            \"VisibleInSearch\": {\n              \"type\": \"boolean\"\n            },\n            \"RelatedContent\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RelatedContent\"\n              },\n              \"nullable\": true\n            },\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"CustomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Region\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"DetailThemed\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/DetailThemed\"\n              },\n              \"nullable\": true\n            },\n            \"GpsPolygon\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsPolygon\"\n              },\n              \"nullable\": true\n            },\n            \"Webcam\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Webcam\"\n              },\n              \"nullable\": true\n            },\n            \"VisibleInSearch\": {\n              \"type\": \"boolean\"\n            },\n            \"SkiareaIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"RelatedContent\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RelatedContent\"\n              },\n              \"nullable\": true\n            },\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"CustomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Tourismverein\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"RegionId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"GpsPolygon\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsPolygon\"\n              },\n              \"nullable\": true\n            },\n            \"Webcam\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Webcam\"\n              },\n              \"nullable\": true\n            },\n            \"VisibleInSearch\": {\n              \"type\": \"boolean\"\n            },\n            \"SkiareaIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"RelatedContent\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RelatedContent\"\n              },\n              \"nullable\": true\n            },\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"CustomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Municipality\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Plz\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"RegionId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TourismvereinId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SiagId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"GpsPolygon\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsPolygon\"\n              },\n              \"nullable\": true\n            },\n            \"Webcam\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Webcam\"\n              },\n              \"nullable\": true\n            },\n            \"VisibleInSearch\": {\n              \"type\": \"boolean\"\n            },\n            \"Inhabitants\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"IstatNumber\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"RelatedContent\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RelatedContent\"\n              },\n              \"nullable\": true\n            },\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"CustomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"District\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"IsComune\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"RegionId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TourismvereinId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MunicipalityId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SiagId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"GpsPolygon\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsPolygon\"\n              },\n              \"nullable\": true\n            },\n            \"Webcam\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Webcam\"\n              },\n              \"nullable\": true\n            },\n            \"VisibleInSearch\": {\n              \"type\": \"boolean\"\n            },\n            \"RelatedContent\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RelatedContent\"\n              },\n              \"nullable\": true\n            },\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"CustomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Area\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CustomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"RegionId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TourismvereinId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MunicipalityId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SkiAreaID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"GID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"LtsID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AreaType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"SkiRegion\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"GpsPolygon\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsPolygon\"\n              },\n              \"nullable\": true\n            },\n            \"Webcam\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Webcam\"\n              },\n              \"nullable\": true\n            },\n            \"RelatedContent\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RelatedContent\"\n              },\n              \"nullable\": true\n            },\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"CustomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"SkiArea\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"SkiRegionId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SkiAreaMapURL\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TotalSlopeKm\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SlopeKmBlue\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SlopeKmRed\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SlopeKmBlack\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"LiftCount\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AltitudeFrom\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"AltitudeTo\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"SkiRegionName\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"AreaId\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"Webcam\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Webcam\"\n              },\n              \"nullable\": true\n            },\n            \"LocationInfo\": {\n              \"$ref\": \"#/components/schemas/LocationInfo\"\n            },\n            \"OperationSchedule\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/OperationSchedule\"\n              },\n              \"nullable\": true\n            },\n            \"TourismvereinIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"RegionIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"GpsPolygon\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsPolygon\"\n              },\n              \"nullable\": true\n            },\n            \"RelatedContent\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RelatedContent\"\n              },\n              \"nullable\": true\n            },\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"CustomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Wine\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"Vintage\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Awardyear\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CustomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"Awards\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"FirstImport\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Topic\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"TopicRID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TopicInfo\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"EventPublisher\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"PublisherRID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Ranc\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Publish\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"EventAdditionalInfos\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Mplace\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Reg\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Location\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Language\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"EventPrice\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Price\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Pstd\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ShortDesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Description\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Language\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"EventDate\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"From\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"To\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"SingleDays\": {\n              \"type\": \"boolean\"\n            },\n            \"MinPersons\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"MaxPersons\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Ticket\": {\n              \"type\": \"boolean\"\n            },\n            \"GpsNorth\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"GpsEast\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Begin\": {\n              \"type\": \"string\",\n              \"format\": \"date-span\"\n            },\n            \"End\": {\n              \"type\": \"string\",\n              \"format\": \"date-span\"\n            },\n            \"Entrance\": {\n              \"type\": \"string\",\n              \"format\": \"date-span\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Event\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"DateBegin\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"nullable\": true\n            },\n            \"DateEnd\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"nullable\": true\n            },\n            \"FirstImport\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OrgRID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Ranc\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Ticket\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SignOn\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"PayMet\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"DistrictId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"DistrictIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"TopicRIDs\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"Topics\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Topic\"\n              },\n              \"nullable\": true\n            },\n            \"EventPublisher\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/EventPublisher\"\n              },\n              \"nullable\": true\n            },\n            \"EventAdditionalInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/EventAdditionalInfos\"\n              },\n              \"nullable\": true\n            },\n            \"EventPrice\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/EventPrice\"\n              },\n              \"nullable\": true\n            },\n            \"EventDate\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/EventDate\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"OrganizerInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"LocationInfo\": {\n              \"$ref\": \"#/components/schemas/LocationInfo\"\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"EventJsonResult\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"TotalResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TotalPages\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CurrentPage\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"PreviousPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"NextPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Seed\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Items\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Event\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"EventTypes\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Bitmask\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TypeDesc\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"RoomBooked\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Space\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SpaceDesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SpaceAbbrev\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SpaceType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Subtitle\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Comment\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"StartDate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"EndDate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"StartDateUTC\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"EndDateUTC\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DocumentPDF\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"DocumentURL\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Language\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"EventShort\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Source\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventLocation\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventId\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"EventDescription\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventDescriptionDE\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventDescriptionIT\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventDescriptionEN\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AnchorVenue\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AnchorVenueShort\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ChangedOn\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"StartDate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"EndDate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"StartDateUTC\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"EndDateUTC\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"WebAddress\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Display1\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Display2\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Display3\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Display4\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Display5\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Display6\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Display7\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Display8\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Display9\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyName\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyAddressLine1\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyAddressLine2\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyAddressLine3\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyPostalCode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyCity\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyCountry\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyPhone\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyFax\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyMail\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyUrl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactCode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactFirstName\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactLastName\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactPhone\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactCell\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactFax\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactEmail\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactAddressLine1\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactAddressLine2\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactAddressLine3\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactPostalCode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactCity\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactCountry\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"RoomBooked\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RoomBooked\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"VideoUrl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ActiveWeb\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"EventTextDE\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventTextIT\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventTextEN\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TechnologyFields\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"CustomTagging\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SoldOut\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"EventDocument\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DocumentPDF\"\n              },\n              \"nullable\": true\n            },\n            \"ExternalOrganizer\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"EventShortResult\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"TotalResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TotalPages\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CurrentPage\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"OnlineResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"ResultId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Seed\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Items\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/EventShort\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"EventShortByRoom\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"SpaceDescList\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SpaceDesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SpaceType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Subtitle\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"RoomStartDate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"RoomEndDate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"RoomStartDateUTC\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"RoomEndDateUTC\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"EventId\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"EventDescription\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"EventDescriptionDE\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventDescriptionIT\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventDescriptionEN\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventAnchorVenue\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventAnchorVenueShort\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventStartDate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"EventEndDate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"EventStartDateUTC\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"EventEndDateUTC\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"EventWebAddress\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventSource\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventLocation\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CompanyName\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"VideoUrl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ActiveWeb\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"EventTextDE\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventTextIT\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"EventTextEN\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TechnologyFields\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"CustomTagging\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SoldOut\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"EventDocument\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"ExternalOrganizer\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"CategoryCodes\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DishRates\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MinAmount\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"MaxAmount\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"CurrencyCode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"CapacityCeremony\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MaxSeatingCapacity\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Facilities\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Gastronomy\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"DistrictId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"FirstImport\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OperationSchedule\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/OperationSchedule\"\n              },\n              \"nullable\": true\n            },\n            \"MaxSeatingCapacity\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"CategoryCodes\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/CategoryCodes\"\n              },\n              \"nullable\": true\n            },\n            \"DishRates\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DishRates\"\n              },\n              \"nullable\": true\n            },\n            \"CapacityCeremony\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/CapacityCeremony\"\n              },\n              \"nullable\": true\n            },\n            \"Facilities\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Facilities\"\n              },\n              \"nullable\": true\n            },\n            \"MarketinggroupId\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"LocationInfo\": {\n              \"$ref\": \"#/components/schemas/LocationInfo\"\n            },\n            \"AccommodationId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"RepresentationRestriction\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"GastronomyJsonResult\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"TotalResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TotalPages\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CurrentPage\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"PreviousPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"NextPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Seed\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Items\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Gastronomy\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"GastronomyTypes\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Bitmask\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Key\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TypeDesc\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"LocHelperclass\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"typ\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"name\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"PoiProperty\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Name\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Value\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"AdditionalContact\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"$ref\": \"#/components/schemas/ContactInfos\"\n            },\n            \"Description\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"ODHActivityPoi\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"GpsPoints\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/GpsInfo\"\n              },\n              \"nullable\": true\n            },\n            \"CustomId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Webcam\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Webcam\"\n              },\n              \"nullable\": true\n            },\n            \"PoiProperty\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"$ref\": \"#/components/schemas/PoiProperty\"\n                }\n              },\n              \"nullable\": true\n            },\n            \"PoiServices\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"Source\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SyncSourceInterface\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SyncUpdateMode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AgeFrom\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"AgeTo\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"MaxSeatingCapacity\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CategoryCodes\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/CategoryCodes\"\n              },\n              \"nullable\": true\n            },\n            \"DishRates\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DishRates\"\n              },\n              \"nullable\": true\n            },\n            \"CapacityCeremony\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/CapacityCeremony\"\n              },\n              \"nullable\": true\n            },\n            \"Facilities\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Facilities\"\n              },\n              \"nullable\": true\n            },\n            \"RelatedContent\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RelatedContent\"\n              },\n              \"nullable\": true\n            },\n            \"AdditionalContact\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"$ref\": \"#/components/schemas/AdditionalContact\"\n                }\n              },\n              \"nullable\": true\n            },\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OutdooractiveID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OutdooractiveElevationID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CopyrightChecked\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SmgId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Highlight\": {\n              \"type\": \"boolean\"\n            },\n            \"Difficulty\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SubType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"PoiType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"FirstImport\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"LocationInfo\": {\n              \"$ref\": \"#/components/schemas/LocationInfo\"\n            },\n            \"TourismorganizationId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AreaId\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"AltitudeDifference\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeHighestPoint\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeLowestPoint\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeSumUp\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeSumDown\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"DistanceDuration\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"DistanceLength\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"IsOpen\": {\n              \"type\": \"boolean\"\n            },\n            \"IsPrepared\": {\n              \"type\": \"boolean\"\n            },\n            \"RunToValley\": {\n              \"type\": \"boolean\"\n            },\n            \"IsWithLigth\": {\n              \"type\": \"boolean\"\n            },\n            \"HasRentals\": {\n              \"type\": \"boolean\"\n            },\n            \"HasFreeEntrance\": {\n              \"type\": \"boolean\"\n            },\n            \"LiftAvailable\": {\n              \"type\": \"boolean\"\n            },\n            \"FeetClimb\": {\n              \"type\": \"boolean\"\n            },\n            \"BikeTransport\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"OperationSchedule\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/OperationSchedule\"\n              },\n              \"nullable\": true\n            },\n            \"GpsInfo\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsInfo\"\n              },\n              \"nullable\": true\n            },\n            \"GpsTrack\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsTrack\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"AdditionalPoiInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/AdditionalPoiInfos\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"Ratings\": {\n              \"$ref\": \"#/components/schemas/Ratings\"\n            },\n            \"Exposition\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"OwnerRid\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ChildPoiIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"MasterPoiIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"WayNumber\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"ODHActivityPoiJsonResult\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"TotalResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TotalPages\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CurrentPage\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"PreviousPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"NextPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Seed\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Items\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ODHActivityPoi\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"SmgPoiTypes\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Bitmask\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\"\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Parent\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Key\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TypeDesc\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"SmgTags\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TagName\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"ValidForEntity\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"MainEntity\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"GBLTSPoi\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"GpsPoints\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/GpsInfo\"\n              },\n              \"nullable\": true\n            },\n            \"LTSTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/LTSTags\"\n              },\n              \"nullable\": true\n            },\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OutdooractiveID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"OutdooractiveElevationID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"CopyrightChecked\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SmgId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Highlight\": {\n              \"type\": \"boolean\"\n            },\n            \"Difficulty\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SubType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"PoiType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"FirstImport\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"LocationInfo\": {\n              \"$ref\": \"#/components/schemas/LocationInfo\"\n            },\n            \"TourismorganizationId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AreaId\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"AltitudeDifference\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeHighestPoint\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeLowestPoint\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeSumUp\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"AltitudeSumDown\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"DistanceDuration\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"DistanceLength\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"IsOpen\": {\n              \"type\": \"boolean\"\n            },\n            \"IsPrepared\": {\n              \"type\": \"boolean\"\n            },\n            \"RunToValley\": {\n              \"type\": \"boolean\"\n            },\n            \"IsWithLigth\": {\n              \"type\": \"boolean\"\n            },\n            \"HasRentals\": {\n              \"type\": \"boolean\"\n            },\n            \"HasFreeEntrance\": {\n              \"type\": \"boolean\"\n            },\n            \"LiftAvailable\": {\n              \"type\": \"boolean\"\n            },\n            \"FeetClimb\": {\n              \"type\": \"boolean\"\n            },\n            \"BikeTransport\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"OperationSchedule\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/OperationSchedule\"\n              },\n              \"nullable\": true\n            },\n            \"GpsInfo\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsInfo\"\n              },\n              \"nullable\": true\n            },\n            \"GpsTrack\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsTrack\"\n              },\n              \"nullable\": true\n            },\n            \"ImageGallery\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ImageGallery\"\n              },\n              \"nullable\": true\n            },\n            \"Detail\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/Detail\"\n              },\n              \"nullable\": true\n            },\n            \"ContactInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/ContactInfos\"\n              },\n              \"nullable\": true\n            },\n            \"AdditionalPoiInfos\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"$ref\": \"#/components/schemas/AdditionalPoiInfos\"\n              },\n              \"nullable\": true\n            },\n            \"SmgTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"Ratings\": {\n              \"$ref\": \"#/components/schemas/Ratings\"\n            },\n            \"Exposition\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"OwnerRid\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ChildPoiIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"MasterPoiIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"WayNumber\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"GBLTSPoiJsonResult\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"TotalResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TotalPages\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CurrentPage\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"PreviousPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"NextPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Seed\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Items\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GBLTSPoi\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"PoiTypes\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Bitmask\": {\n              \"type\": \"integer\",\n              \"format\": \"int64\"\n            },\n            \"Type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Parent\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Key\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TypeDesc\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDMeta\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"lastUpdate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"dataProvider\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDLinks\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"self\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDGeometry\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"coordinates\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"number\",\n                \"format\": \"double\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDContactpoint\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"email\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"telephone\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"address\": {\n              \"$ref\": \"#/components/schemas/DDAddress\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDAddress\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"street\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"city\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"region\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"country\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"complement\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"categories\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"zipcode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"contactPoint\": {\n              \"$ref\": \"#/components/schemas/DDContactpoint\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDOpeningTimes\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"opens\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"closes\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDOpeninghoursweekly\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"validFrom\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"validTo\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"monday\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDOpeningTimes\"\n              },\n              \"nullable\": true\n            },\n            \"tuesday\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDOpeningTimes\"\n              },\n              \"nullable\": true\n            },\n            \"wednesday\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDOpeningTimes\"\n              },\n              \"nullable\": true\n            },\n            \"thursday\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDOpeningTimes\"\n              },\n              \"nullable\": true\n            },\n            \"friday\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDOpeningTimes\"\n              },\n              \"nullable\": true\n            },\n            \"saturday\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDOpeningTimes\"\n              },\n              \"nullable\": true\n            },\n            \"sunday\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDOpeningTimes\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDOpeninghours\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"weeklySchedules\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDOpeninghoursweekly\"\n              },\n              \"nullable\": true\n            },\n            \"dailySchedules\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"$ref\": \"#/components/schemas/DDOpeningTimes\"\n                }\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDAttributes\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"abstract\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"categories\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"description\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"geometries\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDGeometry\"\n              },\n              \"nullable\": true\n            },\n            \"howToArrive\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"name\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"shortName\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"url\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"address\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDAddress\"\n              },\n              \"nullable\": true\n            },\n            \"openingHours\": {\n              \"$ref\": \"#/components/schemas/DDOpeninghours\"\n            },\n            \"beds\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDAttributesMultimedia\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"abstract\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"contentType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"url\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"categories\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"description\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"duration\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"height\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"license\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"name\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"shortName\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"width\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDCopyrightownerData\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"attributes\": {\n              \"$ref\": \"#/components/schemas/DDAttributesMultimedia\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDLinksRelated\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"related\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDCopyrightowner\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"data\": {\n              \"$ref\": \"#/components/schemas/DDCopyrightownerData\"\n            },\n            \"links\": {\n              \"$ref\": \"#/components/schemas/DDLinksRelated\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDRelationshipsMultiMedia\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"copyrightOwner\": {\n              \"$ref\": \"#/components/schemas/DDCopyrightowner\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDMultimediadescriptions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"categories\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"attributes\": {\n              \"$ref\": \"#/components/schemas/DDAttributesMultimedia\"\n            },\n            \"links\": {\n              \"$ref\": \"#/components/schemas/DDLinks\"\n            },\n            \"relationships\": {\n              \"$ref\": \"#/components/schemas/DDRelationshipsMultiMedia\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDAvailablesetup\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"setup\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"capacity\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDDimension\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"squareMeters\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"doorHeight\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"doorWidth\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"height\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"length\": {\n              \"type\": \"number\",\n              \"format\": \"float\"\n            },\n            \"width\": {\n              \"type\": \"number\",\n              \"format\": \"float\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDAttributesSubVenues\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"availableSetups\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDAvailablesetup\"\n              },\n              \"nullable\": true\n            },\n            \"dimension\": {\n              \"$ref\": \"#/components/schemas/DDDimension\"\n            },\n            \"abstract\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"categories\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"description\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"geometries\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDGeometry\"\n              },\n              \"nullable\": true\n            },\n            \"howToArrive\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"name\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"shortName\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"url\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"address\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDAddress\"\n              },\n              \"nullable\": true\n            },\n            \"openingHours\": {\n              \"$ref\": \"#/components/schemas/DDOpeninghours\"\n            },\n            \"beds\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"ODHTags\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Self\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"VenueType\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"VenueCode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Self\": {\n              \"type\": \"string\",\n              \"nullable\": true,\n              \"readOnly\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"VenueSetup\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Capacity\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"VenueCode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Self\": {\n              \"type\": \"string\",\n              \"nullable\": true,\n              \"readOnly\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"VenueRoomDetails\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SquareMeters\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Indoor\": {\n              \"type\": \"boolean\"\n            },\n            \"VenueFeatures\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/VenueType\"\n              },\n              \"nullable\": true\n            },\n            \"VenueSetup\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/VenueSetup\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"ODHData\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"ODHActive\": {\n              \"type\": \"boolean\"\n            },\n            \"ODHTags\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/ODHTags\"\n              },\n              \"nullable\": true\n            },\n            \"LocationInfo\": {\n              \"$ref\": \"#/components/schemas/LocationInfo\"\n            },\n            \"HasLanguage\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"VenueCategory\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/VenueType\"\n              },\n              \"nullable\": true\n            },\n            \"GpsInfo\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/GpsInfo\"\n              },\n              \"nullable\": true\n            },\n            \"Source\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SyncSourceInterface\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"RoomCount\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            },\n            \"RoomDetails\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/VenueRoomDetails\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDSubVenue\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"attributes\": {\n              \"$ref\": \"#/components/schemas/DDAttributesSubVenues\"\n            },\n            \"type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"meta\": {\n              \"$ref\": \"#/components/schemas/DDMeta\"\n            },\n            \"links\": {\n              \"$ref\": \"#/components/schemas/DDLinks\"\n            },\n            \"relationships\": {\n              \"$ref\": \"#/components/schemas/DDRelationships\"\n            },\n            \"odhdata\": {\n              \"$ref\": \"#/components/schemas/ODHData\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDRelationships\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"multimediaDescriptions\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"array\",\n                \"items\": {\n                  \"$ref\": \"#/components/schemas/DDMultimediadescriptions\"\n                }\n              },\n              \"nullable\": true\n            },\n            \"subVenues\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDSubVenue\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDVenue\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"type\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"meta\": {\n              \"$ref\": \"#/components/schemas/DDMeta\"\n            },\n            \"links\": {\n              \"$ref\": \"#/components/schemas/DDLinks\"\n            },\n            \"attributes\": {\n              \"$ref\": \"#/components/schemas/DDAttributes\"\n            },\n            \"relationships\": {\n              \"$ref\": \"#/components/schemas/DDRelationships\"\n            },\n            \"odhdata\": {\n              \"$ref\": \"#/components/schemas/ODHData\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"DDVenueJsonResult\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"TotalResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TotalPages\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CurrentPage\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"PreviousPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"NextPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Seed\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Items\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/DDVenue\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Conditions\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"date\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"Title\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"WeatherCondition\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"WeatherImgurl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Temperatures\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Weatherdesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Reliability\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"TempMaxmax\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TempMaxmin\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TempMinmax\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TempMinmin\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"bulletinStatus\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Forecast\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"date\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"TempMaxmax\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TempMaxmin\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TempMinmax\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TempMinmin\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Weatherdesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Weathercode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"WeatherImgurl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Reliability\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Mountain\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"date\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"Title\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Conditions\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Weatherdesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Zerolimit\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MountainImgurl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Reliability\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Sunrise\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Sunset\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Moonrise\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Moonset\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Northcode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Northdesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Northimgurl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Southcode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Southdesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Southimgurl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Temp1000\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Temp2000\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Temp3000\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Temp4000\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Windcode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Winddesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"WindImgurl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Snowlimit\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Stationdata\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"date\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"Id\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CityName\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"WeatherCode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"WeatherDesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"WeatherImgUrl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MinTemp\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Maxtemp\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"MaxTemp\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"readOnly\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Weather\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"date\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"evolutiontitle\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"evolution\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Conditions\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Conditions\"\n              },\n              \"nullable\": true\n            },\n            \"Forecast\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Forecast\"\n              },\n              \"nullable\": true\n            },\n            \"Mountain\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Mountain\"\n              },\n              \"nullable\": true\n            },\n            \"Stationdata\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/Stationdata\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"BezirksForecast\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"date\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"WeatherCode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"WeatherDesc\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"WeatherImgUrl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"MaxTemp\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"MinTemp\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Freeze\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"RainFrom\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"RainTo\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Part1\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Part2\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Part3\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Part4\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"Thunderstorm\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"BezirksWeather\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"DistrictName\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"date\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"TourismVereinIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"BezirksForecast\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/BezirksForecast\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"RealTimeMeasurements\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"code\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"description\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"imageUrl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"WeatherRealTime\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"categoryId\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"code\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"dd\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"ff\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"hs\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"lastUpdated\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"lwdType\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"n\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"name\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"p\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"q\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"rh\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"t\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"vaxcode\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"w\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"wmax\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"sd\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"visibility\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"zoomLevel\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"measurements\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/RealTimeMeasurements\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"WeatherObservation\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Level\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"LevelId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"WeatherStatus\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"IconID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Date\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"Measuringpoint\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"FirstImport\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"LastUpdate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"Active\": {\n              \"type\": \"boolean\"\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\"\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Gpstype\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Latitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Longitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\"\n            },\n            \"Altitude\": {\n              \"type\": \"number\",\n              \"format\": \"double\",\n              \"nullable\": true\n            },\n            \"AltitudeUnitofMeasure\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SnowHeight\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"newSnowHeight\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Temperature\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"LastSnowDate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"WeatherObservation\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/WeatherObservation\"\n              },\n              \"nullable\": true\n            },\n            \"LocationInfo\": {\n              \"$ref\": \"#/components/schemas/LocationInfo\"\n            },\n            \"OwnerId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"AreaIds\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"MeasuringpointReduced\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"LastUpdate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SnowHeight\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"newSnowHeight\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Temperature\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"LastSnowDate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"WeatherObservation\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/WeatherObservation\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"SnowReportBaseData\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"Id\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"RID\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Skiregion\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Areaname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"LastUpdate\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\"\n            },\n            \"lang\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SkiAreaSlopeKm\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"SkiMapUrl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Measuringpoints\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/MeasuringpointReduced\"\n              },\n              \"nullable\": true\n            },\n            \"WebcamUrl\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"totalskilift\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"openskilift\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"totalskiliftkm\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"openskiliftkm\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"totalskislopes\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"openskislopes\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"totalskislopeskm\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"openskislopeskm\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"totaltracks\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"opentracks\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"totaltrackskm\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"opentrackskm\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"totalslides\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"opentslides\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"totalslideskm\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"opentslideskm\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"totaliceskating\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"openiceskating\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"contactadress\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"contacttel\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"contactcap\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"contactcity\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"contactfax\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"contactweburl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"contactmail\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"contactlogo\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"contactgpsnorth\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"contactgpseast\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"WebcamInfo\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"LicenseInfo\": {\n              \"$ref\": \"#/components/schemas/LicenseInfo\"\n            },\n            \"Id\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Streamurl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Previewurl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"LastChange\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"nullable\": true\n            },\n            \"FirstImport\": {\n              \"type\": \"string\",\n              \"format\": \"date-time\",\n              \"nullable\": true\n            },\n            \"Shortname\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Active\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"SmgActive\": {\n              \"type\": \"boolean\",\n              \"nullable\": true\n            },\n            \"Source\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"WebcamId\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Webcamname\": {\n              \"type\": \"object\",\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"nullable\": true\n            },\n            \"Webcamurl\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"GpsInfo\": {\n              \"$ref\": \"#/components/schemas/GpsInfo\"\n            },\n            \"ListPosition\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        },\n        \"WebcamInfoJsonResult\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"TotalResults\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"TotalPages\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"CurrentPage\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            },\n            \"PreviousPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"NextPage\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Seed\": {\n              \"type\": \"string\",\n              \"nullable\": true\n            },\n            \"Items\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/WebcamInfo\"\n              },\n              \"nullable\": true\n            }\n          },\n          \"additionalProperties\": false\n        }\n      },\n      \"securitySchemes\": {\n        \"oauth2\": {\n          \"type\": \"oauth2\",\n          \"flows\": {\n            \"password\": {\n              \"tokenUrl\": \"https://auth.opendatahub.testingmachine.eu/auth/realms/noi/protocol/openid-connect/token\",\n              \"scopes\": { }\n            }\n          }\n        }\n      }\n    }\n  }\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/issue181.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: my-api-book\n  version: '1.0'\nservers:\n  - url: 'https://myapi.staging.acme.com'\n    description: Staging\npaths:\n  '/apis/products/quantitys/v1.0/{quantityIdentityId}':\n    parameters:\n      - schema:\n          type: string\n        name: quantityIdentityId\n        in: path\n        required: true\n        description: quantity Identity ID\n    get:\n      summary: Retrieve product quantity\n      tags: []\n      responses:\n        '200':\n          description: OK\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/BlaBlaResponse'\n        '401':\n          description: Unauthorized\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Error'\n        '500':\n          description: Internal Server Error\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Error'\n      operationId: product-book-retrieve\n      description: Retrieve product quantity\n      parameters: []\n      security:\n        - OAuth2: []\ncomponents:\n  schemas:\n    Error:\n      title: Error\n      type: object\n      properties:\n        details:\n          type: object\n          properties: {}\n        errorCode:\n          type: string\n    BlaBlaResponse:\n      title: BlaBlaResponse\n      type: object\n      properties:\n        accountingAccountNumber:\n          type: string\n          description: description\n        alerts:\n          type: array\n          items:\n            type: string\n  securitySchemes:\n    OAuth2:\n      type: oauth2\n      description: OAuth2\n      flows:\n        clientCredentials:\n          tokenUrl: /oauth/client_credential/accesstoken?grant_type=client_credentials\n          refreshUrl: /oauth/client_credential/accesstoken?grant_type=client_credentials\n          scopes: {}\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/issue219.yaml",
    "content": "openapi: \"3.0.3\"\ninfo:\n  title: \"Sample Api\"\n  description: |\n    # Some ACME API\n  termsOfService: \"https://acmed3hdhhd5dhdh.com/license.html\"\n  contact:\n    name: \"API Support\"\n    url: \"https://ACMEdbbe3hbdbcg4ge.com\"\n    email: \"acmeacmehdhhebbfdb4n@ACME.com\"\n  version: \"v1.0\"\nservers:\n- url: \"https://acm4353436ddfdee.com/test\"\n  description: \"Test server\"\npaths:\n  /ApplyDiscount:\n    post:\n      tags:\n      - \"Service\"\n      summary: |\n        ApplyDiscount\n      description: |\n        blabla\n      operationId: \"Test\"\n      requestBody:\n        description: |\n          \n        $ref: \"#/components/requestBodies/ApplyDiscountRequest\"\n      responses:\n        default:\n          description: |\n            \n          $ref: \"#/components/responses/ApplyDiscountResponse\"\n      x-codeSamples:\n      - lang: \"C#\"\n        source: |\n          fill C# source code here\n  /ConfirmTransactionb2b:\n    post:\n      tags:\n      - \"Service\"\n      summary: |\n        ConfirmTransactionb2b\n      description: |\n        blablabla\n      operationId: \"ConfirmTransactionb2b\"\n      requestBody:\n        description: |\n          blablabla\n        $ref: \"#/components/requestBodies/ConfirmTransactionb2bRequest\"\n      responses:\n        default:\n          description: |\n            blabla\n          $ref: \"#/components/responses/ConfirmTransactionb2bResponse\"\n      x-codeSamples:\n      - lang: \"C#\"\n        source: |\n          fill C# source code here\n  /AskFlight:\n    post:\n      tags:\n      - \"Service\"\n      summary: |\n        AskFlight\n      description: |\n        bla blabla\n      operationId: \"AskFlight\"\n      requestBody:\n        description: |\n          blabla\n        $ref: \"#/components/requestBodies/AskFlightRequest\"\n      responses:\n        default:\n          description: |\n            blabla\n          $ref: \"#/components/responses/AskFlightResponse\"\n      x-codeSamples:\n      - lang: \"C#\"\n        source: |\n          fill C# source code here\n  /AskDetail:\n    post:\n      tags:\n      - \"Service\"\n      summary: |\n        AskDetail\n      description: |\n        bla blabla\n      operationId: \"AskDetail\"\n      requestBody:\n        description: |\n          bla bla\n        $ref: \"#/components/requestBodies/AskDetailRequest\"\n      responses:\n        default:\n          description: |\n            bla bla\n          $ref: \"#/components/responses/AskDetailResponse\"\n      x-codeSamples:\n      - lang: \"C#\"\n        source: |\n          fill C# source code here\ncomponents:\n  schemas:\n    AdditionalFeeDetail:\n      type: \"object\"\n      properties:\n        TaxDeductionCommisssion:\n          type: \"number\"\n          description: |\n            commission bla bla\n          format: \"decimal\"\n    ApplyInfo:\n      type: \"object\"\n      required:\n      - \"ApplyID\"\n      - \"BookingIdentifier\"\n      properties:\n        AdditionalRefundInfo:\n          description: |\n            refund info bla bla\n          $ref: \"#/components/schemas/RefundBlablaInfoType\"\n        ApplyID:\n          type: \"string\"\n          description: |\n            The AppyID for a refund application.\n          format: \"\"\n        JourneyInfo:\n          type: \"array\"\n          description: |\n            babba\n          items:\n            description: |\n              babab.\n            $ref: \"#/components/schemas/RefundOrderFlightInfo\"\n        BookingIdentifier:\n          type: \"integer\"\n          description: |\n            babbdbd\n          format: \"int64\"\n        RouteType:\n          type: \"string\"\n          description: |\n            abchdhekf\n          format: \"\"\n    ApplyDiscountRequest:\n      type: \"object\"\n      properties:\n        ApplyInfoList:\n          type: \"array\"\n          description: |\n            The list of info on refund application\n          items:\n            description: |\n              The list of info on refund application\n            $ref: \"#/components/schemas/ApplyInfo\"\n    ApplyDiscountResponse:\n      type: \"object\"\n      properties:\n        ApplyResultList:\n          type: \"array\"\n          description: |\n            The application result\n          items:\n            description: |\n              The application result\n            $ref: \"#/components/schemas/ApplyResult\"\n        Status:\n          description: |\n            \n          $ref: \"#/components/schemas/Status\"\n    ApplyResult:\n      type: \"object\"\n      properties:\n        ApplyID:\n          type: \"string\"\n          description: |\n            The AppyID for a refund application.\n          format: \"\"\n        ErrorCode:\n          type: \"string\"\n          description: |\n            Error code\n          format: \"\"\n        ErrorMessage:\n          type: \"string\"\n          description: |\n            Error message\n          format: \"\"\n        BookingIdentifier:\n          type: \"integer\"\n          description: |\n            blublu\n          format: \"int64\"\n        RefundID:\n          type: \"integer\"\n          description: |\n            The refund ID\n          format: \"int64\"\n        RefundSuspensionType:\n          type: \"integer\"\n          description: |\n            hey ho he\n          format: \"int32\"\n    BasicRefundFeeInfo:\n      type: \"object\"\n      properties:\n        CanCalculate:\n          type: \"boolean\"\n          description: |\n            hoho\n            ho ho ho.\n          format: \"\"\n        RefundPrice:\n          type: \"number\"\n          description: |\n            huhu\n          format: \"decimal\"\n        Refundable:\n          type: \"boolean\"\n          description: |\n            hohoho\n          format: \"\"\n    CityType:\n      type: \"object\"\n      properties:\n        CityCode:\n          type: \"string\"\n          description: |\n            blabla\n          format: \"\"\n        CityID:\n          type: \"integer\"\n          description: |\n            CityID\n          format: \"int32\"\n        CityName:\n          type: \"string\"\n          description: |\n            CityName\n          format: \"\"\n    ConfirmTransactionb2bRequest:\n      type: \"object\"\n      required:\n      - \"BookingIdentifier\"\n      - \"ActionType\"\n      - \"RefundID\"\n      properties:\n        ActionType:\n          type: \"integer\"\n          description: |\n            The types of action that you can take on the refund application. 1 means confirm; 2 means cancel. If you cancel a refund application, you need to pass the cancellation reason in the CancelReasonType node.\n          format: \"int32\"\n        CancelReasonType:\n          type: \"integer\"\n          description: |\n            Reasons for cancelling a refund application: 1 means the passenger does not want to refund; 2 means change the refund type; 3 means exchanged tickets need to be refunded by airlines; 4 means refund the through check-in ticket bought from China Express Airlines;  5 means the customer can not accept the refund fee; 6 means no refunds for the refund; 7 means ticket used; 8 means changes with the refund details; 9 means the airline does not allow refund but allow you to cancel the current ACME and save the open ticket for a pending travelling date (usually within one year); 10 means other reasons.\n          format: \"int32\"\n        BookingIdentifier:\n          type: \"integer\"\n          description: |\n            The internal order ID from us CACME.\n          format: \"int64\"\n        RefundID:\n          type: \"integer\"\n          description: |\n            The Refund ID\n          format: \"int64\"\n    ConfirmTransactionb2bResponse:\n      type: \"object\"\n      properties:\n        Status:\n          description: |\n            \n          $ref: \"#/components/schemas/Status\"\n    ContactType:\n      type: \"object\"\n      properties:\n        ContactEmail:\n          type: \"string\"\n          description: |\n            The email of the contact\n          format: \"\"\n        ContactID:\n          type: \"integer\"\n          description: |\n            The index of the contact\n          format: \"int32\"\n        ContactName:\n          type: \"string\"\n          description: |\n            The name of the contact\n          format: \"\"\n        ForeignMobilePhone:\n          description: |\n            The foreign contact info.\n          $ref: \"#/components/schemas/PhoneType\"\n        MobilePhone:\n          description: |\n            Info on the contact's mobile phone\n          $ref: \"#/components/schemas/PhoneType\"\n    EmdFeeDetail:\n      type: \"object\"\n      properties:\n        EmdAmount:\n          type: \"number\"\n          description: |\n            The amount of an EMD.\n          format: \"decimal\"\n        EmdID:\n          type: \"integer\"\n          description: |\n            The ID for a certain EMD.\n          format: \"int64\"\n        EmdId:\n          type: \"integer\"\n          description: |\n            \n          format: \"int64\"\n        EmdMoneyType:\n          type: \"number\"\n          description: |\n            bdhdhuf\n          format: \"decimal\"\n    FlagType:\n      type: \"object\"\n      properties:\n        Key:\n          type: \"string\"\n          description: |\n            Key\n          format: \"\"\n        Value:\n          type: \"string\"\n          description: |\n            Value\n          format: \"\"\n    FlightInfo:\n      type: \"object\"\n      properties:\n        ArrivalDateTimeGMT:\n          type: \"string\"\n          description: |\n            hshs\n          format: \"\"\n        ArriveDateTime:\n          type: \"string\"\n          description: |\n            hshs\n          format: \"\"\n        ArrivePoint:\n          description: |\n            jfjjd\n          $ref: \"#/components/schemas/StationType\"\n        DepartDateTime:\n          type: \"string\"\n          description: |\n            gaga\n          format: \"\"\n        DepartPoint:\n          description: |\n            agag\n          $ref: \"#/components/schemas/StationType\"\n        DepartureDateTimeGMT:\n          type: \"string\"\n          description: |\n            agagaag\n          format: \"\"\n        Duration:\n          type: \"integer\"\n          description: |\n            agagaga\n          format: \"int32\"\n        JourneyNo:\n          type: \"integer\"\n          description: |\n            agag\n          format: \"int32\"\n        OperatingFlightNo:\n          type: \"string\"\n          description: |\n            agagag\n          format: \"\"\n        SegmentNo:\n          type: \"integer\"\n          description: |\n            Segment number\n          format: \"int32\"\n        TransportNo:\n          type: \"string\"\n          description: |\n            agagag\n          format: \"\"\n    ItineraryInfo:\n      type: \"object\"\n      required:\n      - \"PaxName\"\n      - \"DepartureAirportCode\"\n      - \"ArrivalAirportCode\"\n      - \"MarketingFlightNo\"\n      - \"DepartureDateTime\"\n      properties:\n        ArrivalAirportCode:\n          type: \"string\"\n          description: |\n            acac\n          format: \"\"\n        DepartureAirportCode:\n          type: \"string\"\n          description: |\n            acaca\n          format: \"\"\n        DepartureDateTime:\n          type: \"string\"\n          description: |\n            acaca\n          format: \"\"\n        MarketingFlightNo:\n          type: \"string\"\n          description: |\n            acaca\n          format: \"\"\n        PaxName:\n          type: \"string\"\n          description: |\n            acaca\n          format: \"\"\n    OrderInfo:\n      type: \"object\"\n      properties:\n        CurrencyCode:\n          type: \"string\"\n          description: |\n            acacacaa\n          format: \"\"\n        MinimumPerson:\n          type: \"integer\"\n          description: |\n            acaca\n          format: \"int32\"\n    OrderItem:\n      type: \"object\"\n      required:\n      - \"BookingIdentifier\"\n      properties:\n        JourneyList:\n          type: \"array\"\n          description: |\n            acacaca\n          items:\n            description: |\n              acaaca\n            $ref: \"#/components/schemas/SegmentInfo\"\n        BookingIdentifier:\n          type: \"integer\"\n          description: |\n            acacac\n          format: \"int64\"\n        OrderInfo:\n          description: |\n            acaca\n          $ref: \"#/components/schemas/OrderInfo\"\n        RefundFeeList:\n          type: \"array\"\n          description: |\n            cacac\n          items:\n            description: |\n              acacac\n            $ref: \"#/components/schemas/RefundFeeDetailInfo\"\n        SicknessRefundInfo:\n          type: \"array\"\n          description: |\n            acacac\n          items:\n            description: |\n              acacaca\n            $ref: \"#/components/schemas/SicknessRefundInfo\"\n        SpecialEventInfo:\n          type: \"array\"\n          description: |\n            acacaca\n          items:\n            description: |\n              acacaca\n            $ref: \"#/components/schemas/SpecialEventInfo\"\n    PhoneType:\n      type: \"object\"\n      properties:\n        CountryCode:\n          type: \"string\"\n          description: |\n            acaca\n          format: \"\"\n        PhoneNo:\n          type: \"string\"\n          description: |\n            acaca\n          format: \"\"\n    AskFlightRequest:\n      type: \"object\"\n      required:\n      - \"BookingIdentifier\"\n      properties:\n        BookingIdentifier:\n          type: \"integer\"\n          description: |\n            acac\n          format: \"int64\"\n        Source:\n          type: \"string\"\n          description: |\n            \n          format: \"\"\n    AskFlightResponse:\n      type: \"object\"\n      required:\n      - \"Status\"\n      properties:\n        OrderItemList:\n          type: \"array\"\n          description: |\n            aca\n          items:\n            description: |\n              accac\n            $ref: \"#/components/schemas/OrderItem\"\n        Status:\n          description: |\n            \n          $ref: \"#/components/schemas/Status\"\n    AskDetailRequest:\n      type: \"object\"\n      required:\n      - \"BookingIdentifier\"\n      properties:\n        BookingIdentifier:\n          type: \"integer\"\n          description: |\n            fdfdff\n          format: \"int64\"\n    AskDetailResponse:\n      type: \"object\"\n      properties:\n        JourneyInfo:\n          type: \"array\"\n          description: |\n            fdsdf\n          items:\n            description: |\n              sfdsf\n            $ref: \"#/components/schemas/RefundFlightInfo\"\n        PaxInfoList:\n          type: \"array\"\n          description: |\n            fdsfs\n          items:\n            description: |\n              sdfs\n            $ref: \"#/components/schemas/RefundPassengerInfo\"\n        RefundDetailList:\n          type: \"array\"\n          description: |\n            sdfsfd\n          items:\n            description: |\n              fdsfds\n            $ref: \"#/components/schemas/RefundInfo\"\n        Status:\n          description: |\n            \n          $ref: \"#/components/schemas/Status\"\n    RefundFeeDetail:\n      type: \"object\"\n      properties:\n        Amount:\n          type: \"number\"\n          description: |\n            sfdsfd\n          format: \"decimal\"\n        Type:\n          type: \"string\"\n          description: |\n            sfdsfd\n          format: \"\"\n    RefundFeeDetailInfo:\n      type: \"object\"\n      properties:\n        AdditionalFeeDetail:\n          description: |\n            sdfs\n          $ref: \"#/components/schemas/AdditionalFeeDetail\"\n        BasicRefundFeeInfo:\n          description: |\n            sdfsfd\n          $ref: \"#/components/schemas/BasicRefundFeeInfo\"\n        EMDRefundTypeCode:\n          type: \"integer\"\n          description: |\n            sdfds\n          format: \"int32\"\n        EmdFeeDetail:\n          description: |\n            Details on airline EMD.\n          $ref: \"#/components/schemas/EmdFeeDetail\"\n        RefundFeeID:\n          type: \"integer\"\n          description: |\n            sdfsfdsf\n          format: \"int32\"\n        RefundScenario:\n          type: \"integer\"\n          description: |\n            dsfsf\n          format: \"int32\"\n        RefundTypeCode:\n          type: \"integer\"\n          description: |\n            sdfsfdsf\n          format: \"int32\"\n        ServiceFeeDetail:\n          description: |\n            sdfsfs\n          $ref: \"#/components/schemas/ServiceFeeDetail\"\n        UsedFeeDetail:\n          description: |\n            sdfsfd\n          $ref: \"#/components/schemas/UsedFeeDetail\"\n    RefundFlagType:\n      type: \"object\"\n      properties:\n        Key:\n          type: \"string\"\n          description: |\n            Key\n          format: \"\"\n        Value:\n          type: \"string\"\n          description: |\n            Value\n          format: \"\"\n    RefundFlightInfo:\n      type: \"object\"\n      properties:\n        ArriveDateTime:\n          type: \"string\"\n          description: |\n            sdfsdf\n          format: \"\"\n        ArrivePoint:\n          description: |\n            sdfsfds\n          $ref: \"#/components/schemas/StationType\"\n        DepartDateTime:\n          type: \"string\"\n          description: |\n            sdfsf\n          format: \"\"\n        DepartPoint:\n          description: |\n            sdfsfd\n          $ref: \"#/components/schemas/StationType\"\n        Duration:\n          type: \"integer\"\n          description: |\n            sdfs\n          format: \"int32\"\n        FlightIndex:\n          type: \"integer\"\n          description: |\n            The index of the flight.\n          format: \"int32\"\n        TransportNo:\n          type: \"string\"\n          description: |\n            sdfsfd\n          format: \"\"\n    RefundInfo:\n      type: \"object\"\n      properties:\n        BookingIdentifier:\n          type: \"integer\"\n          description: |\n            sdfsf\n          format: \"int64\"\n        RefundFeeDetailInfoList:\n          type: \"array\"\n          description: |\n            sdfsd\n          items:\n            description: |\n              sdfs\n            $ref: \"#/components/schemas/RefundTicketFeeDetailInfo\"\n        RefundOrderDetailList:\n          type: \"array\"\n          description: |\n            sdfsf\n          items:\n            description: |\n              sdfsdfs\n            $ref: \"#/components/schemas/RefundOrderDetailInfo\"\n    RefundOrderDetailInfo:\n      type: \"object\"\n      properties:\n        ApplyDateTime:\n          type: \"string\"\n          description: |\n            sdfsd\n          format: \"\"\n        ContactInfo:\n          description: |\n            The contact info\n          $ref: \"#/components/schemas/ContactType\"\n        DenialReason:\n          type: \"string\"\n          description: |\n            The denial reason for a refund request\n          format: \"\"\n        JourneyRelatedInfoList:\n          type: \"array\"\n          description: |\n            Related info on the refunded flight.\n          items:\n            description: |\n              Related info on the refunded flight.\n            $ref: \"#/components/schemas/RefundACMEItineraryRelationInfo\"\n        RefundFeeInfolist:\n          type: \"array\"\n          description: |\n            The list of info on refund fee.\n          items:\n            description: |\n              The list of info on refund fee.\n            $ref: \"#/components/schemas/RefundOrderFeeInfo\"\n        RefundFlagType:\n          type: \"array\"\n          description: |\n            The flag for refund\n          items:\n            description: |\n              The flag for refund\n            $ref: \"#/components/schemas/RefundFlagType\"\n        RefundID:\n          type: \"integer\"\n          description: |\n            The refund ID\n          format: \"int64\"\n        RefundWorkflowInfo:\n          type: \"array\"\n          description: |\n            sdfsdfs\n          items:\n            description: |\n              The info on the refund process or workflow\n            $ref: \"#/components/schemas/RefundProcessInfo\"\n        Status:\n          type: \"string\"\n          description: |\n            sdfsfds\n          format: \"\"\n    RefundOrderFeeInfo:\n      type: \"object\"\n      properties:\n        Currency:\n          type: \"string\"\n          description: |\n            sdfsdfs\n          format: \"\"\n        CurrencyType:\n          type: \"string\"\n          description: |\n            sdfsdfs\n          format: \"\"\n        ExchangeRate:\n          type: \"number\"\n          description: |\n            The exchange rate between RMB and\n          format: \"decimal\"\n        FeeDetailList:\n          type: \"array\"\n          description: |\n            The details of refund fee\n          items:\n            description: |\n              The details of refund fee\n            $ref: \"#/components/schemas/RefundFeeDetail\"\n    RefundOrderFlightInfo:\n      type: \"object\"\n      required:\n      - \"RefundTypeCode\"\n      - \"AutoCalculate\"\n      - \"RefundFee\"\n      - \"RefundScenario\"\n      properties:\n        AutoCalculate:\n          type: \"boolean\"\n          description: |\n            sdfdsfds\n          format: \"\"\n        JourneyDetail:\n          description: |\n            sdfs\n          $ref: \"#/components/schemas/ItineraryInfo\"\n        RefundFee:\n          type: \"number\"\n          description: |\n            The refund fee.\n          format: \"decimal\"\n        RefundScenario:\n          type: \"integer\"\n          description: |\n            sdfsfdsfsfd\n          format: \"int32\"\n        RefundTypeCode:\n          type: \"string\"\n          description: |\n            sdfsdfsf\n          format: \"\"\n    RefundBlablaInfoType:\n      type: \"object\"\n      properties:\n        RefundMaterialToken:\n          type: \"string\"\n          description: |\n            sdfsdfs\n          format: \"\"\n        UploadDocument:\n          type: \"integer\"\n          description: |\n            sdfsdfs\n          format: \"int32\"\n    RefundPassengerInfo:\n      type: \"object\"\n      properties:\n        PaxDetailIndex:\n          type: \"integer\"\n          description: |\n            The index of passenger detail\n          format: \"int32\"\n        PaxID:\n          type: \"integer\"\n          description: |\n            Passenger ID\n          format: \"int64\"\n        PaxName:\n          type: \"string\"\n          description: |\n            Passenger Name\n          format: \"\"\n    RefundProcessInfo:\n      type: \"object\"\n      properties:\n        EstimatedFinishDateTime:\n          type: \"string\"\n          description: |\n            sdfs\n          format: \"\"\n        FinishDateTime:\n          type: \"string\"\n          description: |\n            sdfsd\n          format: \"\"\n        FlowName:\n          type: \"string\"\n          description: |\n            sfdsdjfjdfj\n            fdshfhdf\n            fhdfh\n            hdhdhd j dj dh\n          format: \"\"\n        Operator:\n          type: \"string\"\n          description: |\n            The operator for refund.\n          format: \"\"\n        ProcessStatus:\n          type: \"integer\"\n          description: |\n            hhdsfhhefe\n          format: \"int32\"\n    RefundTicketFeeDetailInfo:\n      type: \"object\"\n      properties:\n        AirlineRefundFee:\n          type: \"number\"\n          description: |\n            The refund fee charged by the airline\n          format: \"decimal\"\n        AutoCalculate:\n          type: \"boolean\"\n          description: |\n            dhhfhhehe\n          format: \"\"\n        Currency:\n          type: \"string\"\n          description: |\n            sdfsfsdfs\n          format: \"\"\n        CurrencyType:\n          type: \"string\"\n          description: |\n            sfdsfds\n          format: \"\"\n        DiscountAmount:\n          type: \"number\"\n          description: |\n            The discount for the outbound ACME\n          format: \"decimal\"\n        ExchangeRate:\n          type: \"number\"\n          description: |\n            The exchange rate between RMB and the currency used by our b2b\n          format: \"decimal\"\n        OnlyRefundTax:\n          type: \"boolean\"\n          description: |\n            Whether to only refund tax\n          format: \"\"\n        RefundFee:\n          type: \"number\"\n          description: |\n            Refund fee\n          format: \"decimal\"\n        RefundFeeIndex:\n          type: \"integer\"\n          description: |\n            The index for the refund fee\n          format: \"int64\"\n        RefundTypeCode:\n          type: \"integer\"\n          description: |\n            sdfsfdsfds\n          format: \"int32\"\n        ServiceFeeType:\n          description: |\n            The types of service fees charged for refund\n          $ref: \"#/components/schemas/ServiceFeeType\"\n        UsedFeeInfo:\n          description: |\n            The fees concerning used segments\n          $ref: \"#/components/schemas/UsedFeeInfo\"\n    RefundACMEItineraryRelationInfo:\n      type: \"object\"\n      properties:\n        FlightIndex:\n          type: \"integer\"\n          description: |\n            The index of the flight.\n          format: \"int32\"\n        JourneyNo:\n          type: \"integer\"\n          description: |\n            Journey number\n          format: \"int32\"\n        PaxDetailIndex:\n          type: \"integer\"\n          description: |\n            The index of Passenger details\n          format: \"int32\"\n        RefundFeeIndex:\n          type: \"integer\"\n          description: |\n            The index of refund fee.\n          format: \"int64\"\n        SegmentNo:\n          type: \"integer\"\n          description: |\n            Segment number\n          format: \"int32\"\n    RetireMaterialInfo:\n      type: \"object\"\n      properties:\n        MaterialType:\n          type: \"integer\"\n          description: |\n            sdfsdfsfdsf\n          format: \"int32\"\n    SegmentInfo:\n      type: \"object\"\n      properties:\n        ExtensionInfolist:\n          type: \"array\"\n          description: |\n            The list of extension info (info on the original flight is supported now).\n          items:\n            description: |\n              The list of extension info (info on the original flight is supported now).\n            $ref: \"#/components/schemas/FlagType\"\n        FlightInfo:\n          description: |\n            The flight info\n          $ref: \"#/components/schemas/FlightInfo\"\n        FuelSurcharge:\n          type: \"number\"\n          description: |\n            sdfsdfs\n          format: \"decimal\"\n        PNR:\n          type: \"string\"\n          description: |\n            sdfsdfs\n          format: \"\"\n        PTC:\n          type: \"string\"\n          description: |\n            sdfs\n          format: \"\"\n        PaxName:\n          type: \"string\"\n          description: |\n            Passenger name\n          format: \"\"\n        RefundFeeInfoList:\n          type: \"array\"\n          description: |\n            The list of info on the refund fee\n          items:\n            type: \"integer\"\n            description: |\n              The list of info on the refund fee\n            format: \"int32\"\n        Refundable:\n          type: \"boolean\"\n          description: |\n            sdfsdfs\n          format: \"\"\n        SalePrice:\n          type: \"number\"\n          description: |\n            sdfsdfs\n          format: \"decimal\"\n        SicknessRefundID:\n          type: \"integer\"\n          description: |\n            sdfsfdds\n          format: \"int32\"\n        SpecialEventID:\n          type: \"integer\"\n          description: |\n            sdfsdf\n          format: \"int32\"\n        StudentSpecialEventID:\n          type: \"integer\"\n          description: |\n            sdfsdfsfd\n          format: \"int32\"\n        Tax:\n          type: \"number\"\n          description: |\n            sdfsdf\n          format: \"decimal\"\n        TicketNo:\n          type: \"string\"\n          description: |\n            Ticket number\n          format: \"\"\n        TicketStatus:\n          type: \"integer\"\n          description: |\n            Ticket status\n          format: \"int32\"\n        UnRefundableReasonCode:\n          type: \"string\"\n          description: |\n            The reason code for unrefundability\n          format: \"\"\n        Used:\n          type: \"boolean\"\n          description: |\n            Whether the flight ticket is used\n          format: \"\"\n    ServiceFeeDetail:\n      type: \"object\"\n      properties:\n        AgencyServiceFee:\n          type: \"number\"\n          description: |\n            sdfsdfs\n          format: \"decimal\"\n        AirlineServiceFee:\n          type: \"number\"\n          description: |\n            sdfsd\n          format: \"decimal\"\n        CACMEServiceFee:\n          type: \"number\"\n          description: |\n            sdfsdfs\n          format: \"decimal\"\n    ServiceFeeType:\n      type: \"object\"\n      properties:\n        AirlineServiceFee:\n          type: \"number\"\n          description: |\n            Service fees charged by airlines\n          format: \"decimal\"\n        CACMEServiceFee:\n          type: \"number\"\n          description: |\n            Service fees charged by CACME\n          format: \"decimal\"\n        SupplierServiceFee:\n          type: \"number\"\n          description: |\n            Service fees charged by supplier\n          format: \"decimal\"\n    SicknessRefundInfo:\n      type: \"object\"\n      properties:\n        MaterialInfoList:\n          type: \"array\"\n          description: |\n            The info concerning the supporting documents.\n          items:\n            description: |\n              The info concerning the supporting documents.\n            $ref: \"#/components/schemas/RetireMaterialInfo\"\n        SicknessRefundID:\n          type: \"integer\"\n          description: |\n            sdfsdfs\n          format: \"int32\"\n    SpecialEventInfo:\n      type: \"object\"\n      properties:\n        MaterialInfoList:\n          type: \"array\"\n          description: |\n            sdfsd\n          items:\n            description: |\n              sdfsd\n            $ref: \"#/components/schemas/RetireMaterialInfo\"\n        RuleNameCN:\n          type: \"string\"\n          description: |\n            sdfsdfsdfs\n          format: \"\"\n        SpecialEventID:\n          type: \"integer\"\n          description: |\n            sdfsdfs\n          format: \"int32\"\n    StationType:\n      type: \"object\"\n      properties:\n        City:\n          description: |\n            City information, includes ID、code、name\n          $ref: \"#/components/schemas/CityType\"\n        StationCode:\n          type: \"string\"\n          description: |\n            sdfsdfs\n          format: \"\"\n        StationID:\n          type: \"integer\"\n          description: |\n            StationID\n          format: \"int32\"\n        StationName:\n          type: \"string\"\n          description: |\n            sdfsdfs\n          format: \"\"\n        TerminalName:\n          type: \"string\"\n          description: |\n            sdfsdfs\n          format: \"\"\n    Status:\n      type: \"object\"\n      properties:\n        Code:\n          type: \"integer\"\n          description: |\n            sdfsdfs\n          format: \"int32\"\n        Message:\n          type: \"string\"\n          description: |\n            sdfsdfs\n          format: \"\"\n    UsedFeeDetail:\n      type: \"object\"\n      properties:\n        UsedSalePrice:\n          type: \"number\"\n          description: |\n            sdfs\n          format: \"decimal\"\n        UsedTax:\n          type: \"number\"\n          description: |\n            sdfsd\n          format: \"decimal\"\n    UsedFeeInfo:\n      type: \"object\"\n      properties:\n        UsedAmount:\n          type: \"number\"\n          description: |\n            sdfsdf\n          format: \"decimal\"\n        UsedTax:\n          type: \"number\"\n          description: |\n            The tax of used segments\n          format: \"decimal\"\n  responses:\n    ApplyDiscountResponse:\n      description: |\n        Success case\n      content:\n        application/json:\n          examples:\n            success:\n              summary: \"success\"\n              description: |\n                success response\n              externalValue: \"../b2b-refund-service/json/ApplyDiscount-Response.json\"\n          schema:\n            description: |\n            $ref: \"#/components/schemas/ApplyDiscountResponse\"\n    ConfirmTransactionb2bResponse:\n      description: |\n        Success case\n      content:\n        application/json:\n          examples:\n            success:\n              summary: \"success\"\n              description: |\n                success response\n              externalValue: \"../b2b-refund-service/json/ConfirmTransactionb2b-Response.json\"\n          schema:\n            description: |\n            $ref: \"#/components/schemas/ConfirmTransactionb2bResponse\"\n    AskFlightResponse:\n      description: |\n        Success case\n      content:\n        application/json:\n          examples:\n            success:\n              summary: \"success\"\n              description: |\n                success response\n              externalValue: \"../b2b-refund-service/json/AskFlight-Response.json\"\n          schema:\n            description: |\n            $ref: \"#/components/schemas/AskFlightResponse\"\n    AskDetailResponse:\n      description: |\n        Success case\n      content:\n        application/json:\n          examples:\n            success:\n              summary: \"success\"\n              description: |\n                success response\n              externalValue: \"../b2b-refund-service/json/AskDetail-Response.json\"\n          schema:\n            description: |\n            $ref: \"#/components/schemas/AskDetailResponse\"\n  requestBodies:\n    ApplyDiscountRequest:\n      description: |\n      content:\n        application/json:\n          examples:\n            common:\n              summary: \"common\"\n              description: |\n                common request\n              externalValue: \"../b2b-refund-service/json/ApplyDiscount-Request.json\"\n          schema:\n            description: |\n            $ref: \"#/components/schemas/ApplyDiscountRequest\"\n      required: true\n    ConfirmTransactionb2bRequest:\n      description: |\n      content:\n        application/json:\n          examples:\n            common:\n              summary: \"common\"\n              description: |\n                common request\n              externalValue: \"../b2b-refund-service/json/ConfirmTransactionb2b-Request.json\"\n          schema:\n            description: |\n            $ref: \"#/components/schemas/ConfirmTransactionb2bRequest\"\n      required: true\n    AskFlightRequest:\n      description: |\n      content:\n        application/json:\n          examples:\n            common:\n              summary: \"common\"\n              description: |\n                common request\n              externalValue: \"../b2b-refund-service/json/AskFlight-Request.json\"\n          schema:\n            description: |\n            $ref: \"#/components/schemas/AskFlightRequest\"\n      required: true\n    AskDetailRequest:\n      description: |\n      content:\n        application/json:\n          examples:\n            common:\n              summary: \"common\"\n              description: |\n                common request\n              externalValue: \"../b2b-refund-service/json/AskDetail-Request.json\"\n          schema:\n            description: |\n            $ref: \"#/components/schemas/AskDetailRequest\"\n      required: true\ntags:\n- name: \"Service\"\n  description: |\n  x-displayName: \"Service\"\n  x-traitTag: false\n- name: \"Getting Started\"\n  description: |\n    more examples you will find here\n  externalDocs:\n    description: \"external doc description\"\n    url: \"https://www.ac54554ggme.chfhehfe\"\n  x-displayName: \"Getting Started\"\n  x-traitTag: true\n- name: \"Support\"\n  description: |\n    bla bla bla\n  x-displayName: \"Technical Support\"\n  x-traitTag: true\n- name: \"Question\"\n  description: |\n    Q: Why bla bla?\n       > bla bla bla\n  x-displayName: \"FAQs\"\n  x-traitTag: true\nx-tagGroups:\n- name: \"General\"\n  tags:\n  - \"Service\"\n  - \"Getting Started\"\n- name: \"Support\"\n  tags:\n  - \"Question\"\n  - \"Support\""
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/issue255.yaml",
    "content": "openapi: 3.0.0\npaths:\n  /run:\n    summary: Do nothing.\ncomponents:\n  schemas:\n    Person:\n      title: Person\n      allOf:\n      - type: object\n        properties:\n          first_name:\n            type: string\n            description: \"First Name\"\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/issue279.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"paths\": {\n    \"/activities\": {\n      \"get\": {\n        \"description\": \"Returns a list of activities for the selected asset or album. The activities are returned in sorted order, with the oldest activities appearing first.\",\n        \"operationId\": \"getActivities\",\n        \"parameters\": [\n          {\n            \"name\": \"albumId\",\n            \"required\": true,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"assetId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"level\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/ReactionLevel\"\n            }\n          },\n          {\n            \"name\": \"type\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/ReactionType\"\n            }\n          },\n          {\n            \"name\": \"userId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/ActivityResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"List all activities\",\n        \"tags\": [\n          \"Activities\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"activity.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a like or a comment for an album, or an asset in an album.\",\n        \"operationId\": \"createActivity\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/ActivityCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ActivityResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create an activity\",\n        \"tags\": [\n          \"Activities\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"activity.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/activities/statistics\": {\n      \"get\": {\n        \"description\": \"Returns the number of likes and comments for a given album or asset in an album.\",\n        \"operationId\": \"getActivityStatistics\",\n        \"parameters\": [\n          {\n            \"name\": \"albumId\",\n            \"required\": true,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"assetId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ActivityStatisticsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve activity statistics\",\n        \"tags\": [\n          \"Activities\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"activity.statistics\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/activities/{id}\": {\n      \"delete\": {\n        \"description\": \"Removes a like or comment from a given album or asset in an album.\",\n        \"operationId\": \"deleteActivity\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete an activity\",\n        \"tags\": [\n          \"Activities\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"activity.delete\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/admin/auth/unlink-all\": {\n      \"post\": {\n        \"description\": \"Unlinks all OAuth accounts associated with user accounts in the system.\",\n        \"operationId\": \"unlinkAllOAuthAccountsAdmin\",\n        \"parameters\": [],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Unlink all OAuth accounts\",\n        \"tags\": [\n          \"Authentication (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"adminAuth.unlinkAll\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/admin/maintenance\": {\n      \"post\": {\n        \"description\": \"Put Immich into or take it out of maintenance mode\",\n        \"operationId\": \"setMaintenanceMode\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SetMaintenanceModeDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Set maintenance mode\",\n        \"tags\": [\n          \"Maintenance (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"maintenance\",\n        \"x-immich-state\": \"Alpha\"\n      }\n    },\n    \"/admin/maintenance/login\": {\n      \"post\": {\n        \"description\": \"Login with maintenance token or cookie to receive current information and perform further actions.\",\n        \"operationId\": \"maintenanceLogin\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/MaintenanceLoginDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/MaintenanceAuthDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Log into maintenance mode\",\n        \"tags\": [\n          \"Maintenance (admin)\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-state\": \"Alpha\"\n      }\n    },\n    \"/admin/notifications\": {\n      \"post\": {\n        \"description\": \"Create a new notification for a specific user.\",\n        \"operationId\": \"createNotification\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/NotificationCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/NotificationDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a notification\",\n        \"tags\": [\n          \"Notifications (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/admin/notifications/templates/{name}\": {\n      \"post\": {\n        \"description\": \"Retrieve a preview of the provided email template.\",\n        \"operationId\": \"getNotificationTemplateAdmin\",\n        \"parameters\": [\n          {\n            \"name\": \"name\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/TemplateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TemplateResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Render email template\",\n        \"tags\": [\n          \"Notifications (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/admin/notifications/test-email\": {\n      \"post\": {\n        \"description\": \"Send a test email using the provided SMTP configuration.\",\n        \"operationId\": \"sendTestEmailAdmin\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SystemConfigSmtpDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TestEmailResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Send test email\",\n        \"tags\": [\n          \"Notifications (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/admin/users\": {\n      \"get\": {\n        \"description\": \"Search for users.\",\n        \"operationId\": \"searchUsersAdmin\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"withDeleted\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Search users\",\n        \"tags\": [\n          \"Users (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"adminUser.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a new user.\",\n        \"operationId\": \"createUserAdmin\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UserAdminCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a user\",\n        \"tags\": [\n          \"Users (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"adminUser.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/admin/users/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete a user.\",\n        \"operationId\": \"deleteUserAdmin\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UserAdminDeleteDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete a user\",\n        \"tags\": [\n          \"Users (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"adminUser.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve  a specific user by their ID.\",\n        \"operationId\": \"getUserAdmin\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve a user\",\n        \"tags\": [\n          \"Users (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"adminUser.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update an existing user.\",\n        \"operationId\": \"updateUserAdmin\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UserAdminUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update a user\",\n        \"tags\": [\n          \"Users (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"adminUser.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/admin/users/{id}/preferences\": {\n      \"get\": {\n        \"description\": \"Retrieve the preferences of a specific user.\",\n        \"operationId\": \"getUserPreferencesAdmin\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserPreferencesResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve user preferences\",\n        \"tags\": [\n          \"Users (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"adminUser.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update the preferences of a specific user.\",\n        \"operationId\": \"updateUserPreferencesAdmin\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UserPreferencesUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserPreferencesResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update user preferences\",\n        \"tags\": [\n          \"Users (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"adminUser.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/admin/users/{id}/restore\": {\n      \"post\": {\n        \"description\": \"Restore a previously deleted user.\",\n        \"operationId\": \"restoreUserAdmin\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Restore a deleted user\",\n        \"tags\": [\n          \"Users (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"adminUser.delete\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/admin/users/{id}/sessions\": {\n      \"get\": {\n        \"description\": \"Retrieve all sessions for a specific user.\",\n        \"operationId\": \"getUserSessionsAdmin\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/SessionResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve user sessions\",\n        \"tags\": [\n          \"Users (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"adminSession.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/admin/users/{id}/statistics\": {\n      \"get\": {\n        \"description\": \"Retrieve asset statistics for a specific user.\",\n        \"operationId\": \"getUserStatisticsAdmin\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"isFavorite\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isTrashed\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"visibility\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/AssetVisibility\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AssetStatsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve user statistics\",\n        \"tags\": [\n          \"Users (admin)\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"adminUser.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/albums\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of albums available to the authenticated user.\",\n        \"operationId\": \"getAllAlbums\",\n        \"parameters\": [\n          {\n            \"name\": \"assetId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Only returns albums that contain the asset\\nIgnores the shared parameter\\nundefined: get all albums\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"shared\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AlbumResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"List all albums\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"album.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a new album. The album can also be created with initial users and assets.\",\n        \"operationId\": \"createAlbum\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CreateAlbumDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AlbumResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create an album\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"album.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/albums/assets\": {\n      \"put\": {\n        \"description\": \"Send a list of asset IDs and album IDs to add each asset to each album.\",\n        \"operationId\": \"addAssetsToAlbums\",\n        \"parameters\": [\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AlbumsAddAssetsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AlbumsAddAssetsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Add assets to albums\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"albumAsset.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/albums/statistics\": {\n      \"get\": {\n        \"description\": \"Returns statistics about the albums available to the authenticated user.\",\n        \"operationId\": \"getAlbumStatistics\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AlbumStatisticsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve album statistics\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"album.statistics\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/albums/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete a specific album by its ID. Note the album is initially trashed and then immediately scheduled for deletion, but relies on a background job to complete the process.\",\n        \"operationId\": \"deleteAlbum\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete an album\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"album.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve information about a specific album by its ID.\",\n        \"operationId\": \"getAlbumInfo\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"withoutAssets\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AlbumResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve an album\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"album.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"patch\": {\n        \"description\": \"Update the information of a specific album by its ID. This endpoint can be used to update the album name, description, sort order, etc. However, it is not used to add or remove assets or users from the album.\",\n        \"operationId\": \"updateAlbumInfo\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UpdateAlbumDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AlbumResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update an album\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"album.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/albums/{id}/assets\": {\n      \"delete\": {\n        \"description\": \"Remove multiple assets from a specific album by its ID.\",\n        \"operationId\": \"removeAssetFromAlbum\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BulkIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/BulkIdResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Remove assets from an album\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"albumAsset.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Add multiple assets to a specific album by its ID.\",\n        \"operationId\": \"addAssetsToAlbum\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BulkIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/BulkIdResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Add assets to an album\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"albumAsset.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/albums/{id}/user/{userId}\": {\n      \"delete\": {\n        \"description\": \"Remove a user from an album. Use an ID of \\\"me\\\" to leave a shared album.\",\n        \"operationId\": \"removeUserFromAlbum\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"userId\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Remove user from album\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"albumUser.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Change the role for a specific user in a specific album.\",\n        \"operationId\": \"updateAlbumUser\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"userId\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UpdateAlbumUserDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update user role\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"albumUser.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/albums/{id}/users\": {\n      \"put\": {\n        \"description\": \"Share an album with multiple users. Each user can be given a specific role in the album.\",\n        \"operationId\": \"addUsersToAlbum\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AddUsersDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AlbumResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Share album with users\",\n        \"tags\": [\n          \"Albums\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"albumUser.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/api-keys\": {\n      \"get\": {\n        \"description\": \"Retrieve all API keys of the current user.\",\n        \"operationId\": \"getApiKeys\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/APIKeyResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"List all API keys\",\n        \"tags\": [\n          \"API keys\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"apiKey.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Creates a new API key. It will be limited to the permissions specified.\",\n        \"operationId\": \"createApiKey\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/APIKeyCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/APIKeyCreateResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create an API key\",\n        \"tags\": [\n          \"API keys\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"apiKey.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/api-keys/me\": {\n      \"get\": {\n        \"description\": \"Retrieve the API key that is used to access this endpoint.\",\n        \"operationId\": \"getMyApiKey\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/APIKeyResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve the current API key\",\n        \"tags\": [\n          \"API keys\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/api-keys/{id}\": {\n      \"delete\": {\n        \"description\": \"Deletes an API key identified by its ID. The current user must own this API key.\",\n        \"operationId\": \"deleteApiKey\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete an API key\",\n        \"tags\": [\n          \"API keys\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"apiKey.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve an API key by its ID. The current user must own this API key.\",\n        \"operationId\": \"getApiKey\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/APIKeyResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve an API key\",\n        \"tags\": [\n          \"API keys\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"apiKey.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Updates the name and permissions of an API key by its ID. The current user must own this API key.\",\n        \"operationId\": \"updateApiKey\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/APIKeyUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/APIKeyResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update an API key\",\n        \"tags\": [\n          \"API keys\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"apiKey.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets\": {\n      \"delete\": {\n        \"description\": \"Deletes multiple assets at the same time.\",\n        \"operationId\": \"deleteAssets\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetBulkDeleteDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete assets\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Uploads a new asset to the server.\",\n        \"operationId\": \"uploadAsset\",\n        \"parameters\": [\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"x-immich-checksum\",\n            \"in\": \"header\",\n            \"description\": \"sha1 checksum that can be used for duplicate detection before the file is uploaded\",\n            \"required\": false,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"multipart/form-data\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetMediaCreateDto\"\n              }\n            }\n          },\n          \"description\": \"Asset Upload Information\",\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AssetMediaResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Upload asset\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.upload\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Updates multiple assets at the same time.\",\n        \"operationId\": \"updateAssets\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetBulkUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update assets\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets/bulk-upload-check\": {\n      \"post\": {\n        \"description\": \"Determine which assets have already been uploaded to the server based on their SHA1 checksums.\",\n        \"operationId\": \"checkBulkUpload\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetBulkUploadCheckDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AssetBulkUploadCheckResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Check bulk upload\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.upload\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets/copy\": {\n      \"put\": {\n        \"description\": \"Copy asset information like albums, tags, etc. from one asset to another.\",\n        \"operationId\": \"copyAsset\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetCopyDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Copy asset\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.copy\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets/device/{deviceId}\": {\n      \"get\": {\n        \"deprecated\": true,\n        \"description\": \"Get all asset of a device that are in the database, ID only.\",\n        \"operationId\": \"getAllUserAssetsByDeviceId\",\n        \"parameters\": [\n          {\n            \"name\": \"deviceId\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"type\": \"string\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve assets by device ID\",\n        \"tags\": [\n          \"Assets\",\n          \"Deprecated\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Deprecated\"\n          }\n        ],\n        \"x-immich-state\": \"Deprecated\"\n      }\n    },\n    \"/assets/exist\": {\n      \"post\": {\n        \"description\": \"Checks if multiple assets exist on the server and returns all existing - used by background backup\",\n        \"operationId\": \"checkExistingAssets\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CheckExistingAssetsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CheckExistingAssetsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Check existing assets\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets/jobs\": {\n      \"post\": {\n        \"description\": \"Run a specific job on a set of assets.\",\n        \"operationId\": \"runAssetJobs\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetJobsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Run an asset job\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets/random\": {\n      \"get\": {\n        \"deprecated\": true,\n        \"description\": \"Retrieve a specified number of random assets for the authenticated user.\",\n        \"operationId\": \"getRandom\",\n        \"parameters\": [\n          {\n            \"name\": \"count\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"minimum\": 1,\n              \"type\": \"number\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get random assets\",\n        \"tags\": [\n          \"Assets\",\n          \"Deprecated\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Deprecated\",\n            \"replacementId\": \"searchAssets\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Deprecated\"\n      }\n    },\n    \"/assets/statistics\": {\n      \"get\": {\n        \"description\": \"Retrieve various statistics about the assets owned by the authenticated user.\",\n        \"operationId\": \"getAssetStatistics\",\n        \"parameters\": [\n          {\n            \"name\": \"isFavorite\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isTrashed\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"visibility\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/AssetVisibility\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AssetStatsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get asset statistics\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.statistics\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets/{id}\": {\n      \"get\": {\n        \"description\": \"Retrieve detailed information about a specific asset.\",\n        \"operationId\": \"getAssetInfo\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AssetResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve an asset\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update information of a specific asset.\",\n        \"operationId\": \"updateAsset\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UpdateAssetDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AssetResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update an asset\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets/{id}/metadata\": {\n      \"get\": {\n        \"description\": \"Retrieve all metadata key-value pairs associated with the specified asset.\",\n        \"operationId\": \"getAssetMetadata\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetMetadataResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get asset metadata\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update or add metadata key-value pairs for the specified asset.\",\n        \"operationId\": \"updateAssetMetadata\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetMetadataUpsertDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetMetadataResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update asset metadata\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets/{id}/metadata/{key}\": {\n      \"delete\": {\n        \"description\": \"Delete a specific metadata key-value pair associated with the specified asset.\",\n        \"operationId\": \"deleteAssetMetadata\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/AssetMetadataKey\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete asset metadata by key\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.update\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve the value of a specific metadata key associated with the specified asset.\",\n        \"operationId\": \"getAssetMetadataByKey\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/AssetMetadataKey\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AssetMetadataResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve asset metadata by key\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets/{id}/ocr\": {\n      \"get\": {\n        \"description\": \"Retrieve all OCR (Optical Character Recognition) data associated with the specified asset.\",\n        \"operationId\": \"getAssetOcr\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetOcrResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve asset OCR data\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets/{id}/original\": {\n      \"get\": {\n        \"description\": \"Downloads the original file of the specified asset.\",\n        \"operationId\": \"downloadAsset\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/octet-stream\": {\n                \"schema\": {\n                  \"format\": \"binary\",\n                  \"type\": \"string\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Download original asset\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.download\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"deprecated\": true,\n        \"description\": \"Replace the asset with new file, without changing its id.\",\n        \"operationId\": \"replaceAsset\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"multipart/form-data\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetMediaReplaceDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AssetMediaResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Replace asset\",\n        \"tags\": [\n          \"Assets\",\n          \"Deprecated\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Deprecated\",\n            \"replacementId\": \"copyAsset\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.replace\",\n        \"x-immich-state\": \"Deprecated\"\n      }\n    },\n    \"/assets/{id}/thumbnail\": {\n      \"get\": {\n        \"description\": \"Retrieve the thumbnail image for the specified asset.\",\n        \"operationId\": \"viewAsset\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"size\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/AssetMediaSize\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/octet-stream\": {\n                \"schema\": {\n                  \"format\": \"binary\",\n                  \"type\": \"string\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"View asset thumbnail\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.view\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/assets/{id}/video/playback\": {\n      \"get\": {\n        \"description\": \"Streams the video file for the specified asset. This endpoint also supports byte range requests.\",\n        \"operationId\": \"playAssetVideo\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/octet-stream\": {\n                \"schema\": {\n                  \"format\": \"binary\",\n                  \"type\": \"string\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Play asset video\",\n        \"tags\": [\n          \"Assets\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.view\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/auth/admin-sign-up\": {\n      \"post\": {\n        \"description\": \"Create the first admin user in the system.\",\n        \"operationId\": \"signUpAdmin\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SignUpDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Register admin\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/auth/change-password\": {\n      \"post\": {\n        \"description\": \"Change the password of the current user.\",\n        \"operationId\": \"changePassword\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/ChangePasswordDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Change password\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"auth.changePassword\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/auth/login\": {\n      \"post\": {\n        \"description\": \"Login with username and password and receive a session token.\",\n        \"operationId\": \"login\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/LoginCredentialDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/LoginResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Login\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/auth/logout\": {\n      \"post\": {\n        \"description\": \"Logout the current user and invalidate the session token.\",\n        \"operationId\": \"logout\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/LogoutResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Logout\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/auth/pin-code\": {\n      \"delete\": {\n        \"description\": \"Reset the pin code for the current user by providing the account password\",\n        \"operationId\": \"resetPinCode\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/PinCodeResetDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Reset pin code\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"pinCode.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Setup a new pin code for the current user.\",\n        \"operationId\": \"setupPinCode\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/PinCodeSetupDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Setup pin code\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"pinCode.create\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Change the pin code for the current user.\",\n        \"operationId\": \"changePinCode\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/PinCodeChangeDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Change pin code\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"pinCode.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/auth/session/lock\": {\n      \"post\": {\n        \"description\": \"Remove elevated access to locked assets from the current session.\",\n        \"operationId\": \"lockAuthSession\",\n        \"parameters\": [],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Lock auth session\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/auth/session/unlock\": {\n      \"post\": {\n        \"description\": \"Temporarily grant the session elevated access to locked assets by providing the correct PIN code.\",\n        \"operationId\": \"unlockAuthSession\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SessionUnlockDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Unlock auth session\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/auth/status\": {\n      \"get\": {\n        \"description\": \"Get information about the current session, including whether the user has a password, and if the session can access locked assets.\",\n        \"operationId\": \"getAuthStatus\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AuthStatusResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve auth status\",\n        \"tags\": [\n          \"Authentication\"\n        ]\n      }\n    },\n    \"/auth/validateToken\": {\n      \"post\": {\n        \"description\": \"Validate the current authorization method is still valid.\",\n        \"operationId\": \"validateAccessToken\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ValidateAccessTokenResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Validate access token\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/download/archive\": {\n      \"post\": {\n        \"description\": \"Download a ZIP archive containing the specified assets. The assets must have been previously requested via the \\\"getDownloadInfo\\\" endpoint.\",\n        \"operationId\": \"downloadArchive\",\n        \"parameters\": [\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/octet-stream\": {\n                \"schema\": {\n                  \"format\": \"binary\",\n                  \"type\": \"string\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Download asset archive\",\n        \"tags\": [\n          \"Download\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.download\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/download/info\": {\n      \"post\": {\n        \"description\": \"Retrieve information about how to request a download for the specified assets or album. The response includes groups of assets that can be downloaded together.\",\n        \"operationId\": \"getDownloadInfo\",\n        \"parameters\": [\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/DownloadInfoDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/DownloadResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve download information\",\n        \"tags\": [\n          \"Download\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.download\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/duplicates\": {\n      \"delete\": {\n        \"description\": \"Delete multiple duplicate assets specified by their IDs.\",\n        \"operationId\": \"deleteDuplicates\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BulkIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete duplicates\",\n        \"tags\": [\n          \"Duplicates\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"duplicate.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve a list of duplicate assets available to the authenticated user.\",\n        \"operationId\": \"getAssetDuplicates\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/DuplicateResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve duplicates\",\n        \"tags\": [\n          \"Duplicates\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"duplicate.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/duplicates/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete a single duplicate asset specified by its ID.\",\n        \"operationId\": \"deleteDuplicate\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete a duplicate\",\n        \"tags\": [\n          \"Duplicates\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"duplicate.delete\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/faces\": {\n      \"get\": {\n        \"description\": \"Retrieve all faces belonging to an asset.\",\n        \"operationId\": \"getFaces\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetFaceResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve faces for asset\",\n        \"tags\": [\n          \"Faces\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"face.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a new face that has not been discovered by facial recognition. The content of the bounding box is considered a face.\",\n        \"operationId\": \"createFace\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetFaceCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a face\",\n        \"tags\": [\n          \"Faces\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"face.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/faces/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete a face identified by the id. Optionally can be force deleted.\",\n        \"operationId\": \"deleteFace\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetFaceDeleteDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete a face\",\n        \"tags\": [\n          \"Faces\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"face.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Re-assign the face provided in the body to the person identified by the id in the path parameter.\",\n        \"operationId\": \"reassignFacesById\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/FaceDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/PersonResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Re-assign a face to another person\",\n        \"tags\": [\n          \"Faces\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"face.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/jobs\": {\n      \"get\": {\n        \"deprecated\": true,\n        \"description\": \"Retrieve the counts of the current queue, as well as the current status.\",\n        \"operationId\": \"getQueuesLegacy\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/QueuesResponseLegacyDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve queue counts and status\",\n        \"tags\": [\n          \"Jobs\",\n          \"Deprecated\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          },\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Deprecated\"\n          }\n        ],\n        \"x-immich-permission\": \"job.read\",\n        \"x-immich-state\": \"Deprecated\"\n      },\n      \"post\": {\n        \"description\": \"Run a specific job. Most jobs are queued automatically, but this endpoint allows for manual creation of a handful of jobs, including various cleanup tasks, as well as creating a new database backup.\",\n        \"operationId\": \"createJob\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/JobCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a manual job\",\n        \"tags\": [\n          \"Jobs\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"job.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/jobs/{name}\": {\n      \"put\": {\n        \"deprecated\": true,\n        \"description\": \"Queue all assets for a specific job type. Defaults to only queueing assets that have not yet been processed, but the force command can be used to re-process all assets.\",\n        \"operationId\": \"runQueueCommandLegacy\",\n        \"parameters\": [\n          {\n            \"name\": \"name\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/QueueName\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/QueueCommandDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Run jobs\",\n        \"tags\": [\n          \"Jobs\",\n          \"Deprecated\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          },\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Deprecated\"\n          }\n        ],\n        \"x-immich-permission\": \"job.create\",\n        \"x-immich-state\": \"Deprecated\"\n      }\n    },\n    \"/libraries\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of external libraries.\",\n        \"operationId\": \"getAllLibraries\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/LibraryResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve libraries\",\n        \"tags\": [\n          \"Libraries\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"library.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a new external library.\",\n        \"operationId\": \"createLibrary\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CreateLibraryDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/LibraryResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a library\",\n        \"tags\": [\n          \"Libraries\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"library.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/libraries/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete an external library by its ID.\",\n        \"operationId\": \"deleteLibrary\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete a library\",\n        \"tags\": [\n          \"Libraries\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"library.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve an external library by its ID.\",\n        \"operationId\": \"getLibrary\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/LibraryResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve a library\",\n        \"tags\": [\n          \"Libraries\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"library.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update an existing external library.\",\n        \"operationId\": \"updateLibrary\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UpdateLibraryDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/LibraryResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update a library\",\n        \"tags\": [\n          \"Libraries\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"library.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/libraries/{id}/scan\": {\n      \"post\": {\n        \"description\": \"Queue a scan for the external library to find and import new assets.\",\n        \"operationId\": \"scanLibrary\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Scan a library\",\n        \"tags\": [\n          \"Libraries\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"library.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/libraries/{id}/statistics\": {\n      \"get\": {\n        \"description\": \"Retrieve statistics for a specific external library, including number of videos, images, and storage usage.\",\n        \"operationId\": \"getLibraryStatistics\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/LibraryStatsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve library statistics\",\n        \"tags\": [\n          \"Libraries\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"library.statistics\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/libraries/{id}/validate\": {\n      \"post\": {\n        \"description\": \"Validate the settings of an external library.\",\n        \"operationId\": \"validate\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/ValidateLibraryDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ValidateLibraryResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Validate library settings\",\n        \"tags\": [\n          \"Libraries\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/map/markers\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of latitude and longitude coordinates for every asset with location data.\",\n        \"operationId\": \"getMapMarkers\",\n        \"parameters\": [\n          {\n            \"name\": \"fileCreatedAfter\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"fileCreatedBefore\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"isArchived\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isFavorite\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"withPartners\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"withSharedAlbums\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/MapMarkerResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve map markers\",\n        \"tags\": [\n          \"Map\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/map/reverse-geocode\": {\n      \"get\": {\n        \"description\": \"Retrieve location information (e.g., city, country) for given latitude and longitude coordinates.\",\n        \"operationId\": \"reverseGeocode\",\n        \"parameters\": [\n          {\n            \"name\": \"lat\",\n            \"required\": true,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"double\",\n              \"type\": \"number\"\n            }\n          },\n          {\n            \"name\": \"lon\",\n            \"required\": true,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"double\",\n              \"type\": \"number\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/MapReverseGeocodeResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Reverse geocode coordinates\",\n        \"tags\": [\n          \"Map\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/memories\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of memories. Memories are sorted descending by creation date by default, although they can also be sorted in ascending order, or randomly.\",\n        \"operationId\": \"searchMemories\",\n        \"parameters\": [\n          {\n            \"name\": \"for\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"isSaved\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isTrashed\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"order\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/MemorySearchOrder\"\n            }\n          },\n          {\n            \"name\": \"size\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Number of memories to return\",\n            \"schema\": {\n              \"minimum\": 1,\n              \"type\": \"integer\"\n            }\n          },\n          {\n            \"name\": \"type\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/MemoryType\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/MemoryResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve memories\",\n        \"tags\": [\n          \"Memories\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"memory.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a new memory by providing a name, description, and a list of asset IDs to include in the memory.\",\n        \"operationId\": \"createMemory\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/MemoryCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/MemoryResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a memory\",\n        \"tags\": [\n          \"Memories\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"memory.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/memories/statistics\": {\n      \"get\": {\n        \"description\": \"Retrieve statistics about memories, such as total count and other relevant metrics.\",\n        \"operationId\": \"memoriesStatistics\",\n        \"parameters\": [\n          {\n            \"name\": \"for\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"isSaved\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isTrashed\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"order\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/MemorySearchOrder\"\n            }\n          },\n          {\n            \"name\": \"size\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Number of memories to return\",\n            \"schema\": {\n              \"minimum\": 1,\n              \"type\": \"integer\"\n            }\n          },\n          {\n            \"name\": \"type\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/MemoryType\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/MemoryStatisticsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve memories statistics\",\n        \"tags\": [\n          \"Memories\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"memory.statistics\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/memories/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete a specific memory by its ID.\",\n        \"operationId\": \"deleteMemory\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete a memory\",\n        \"tags\": [\n          \"Memories\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"memory.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve a specific memory by its ID.\",\n        \"operationId\": \"getMemory\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/MemoryResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve a memory\",\n        \"tags\": [\n          \"Memories\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"memory.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update an existing memory by its ID.\",\n        \"operationId\": \"updateMemory\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/MemoryUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/MemoryResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update a memory\",\n        \"tags\": [\n          \"Memories\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"memory.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/memories/{id}/assets\": {\n      \"delete\": {\n        \"description\": \"Remove a list of asset IDs from a specific memory.\",\n        \"operationId\": \"removeMemoryAssets\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BulkIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/BulkIdResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Remove assets from a memory\",\n        \"tags\": [\n          \"Memories\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"memoryAsset.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Add a list of asset IDs to a specific memory.\",\n        \"operationId\": \"addMemoryAssets\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BulkIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/BulkIdResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Add assets to a memory\",\n        \"tags\": [\n          \"Memories\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"memoryAsset.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/notifications\": {\n      \"delete\": {\n        \"description\": \"Delete a list of notifications at once.\",\n        \"operationId\": \"deleteNotifications\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/NotificationDeleteAllDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete notifications\",\n        \"tags\": [\n          \"Notifications\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"notification.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve a list of notifications.\",\n        \"operationId\": \"getNotifications\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"level\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/NotificationLevel\"\n            }\n          },\n          {\n            \"name\": \"type\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/NotificationType\"\n            }\n          },\n          {\n            \"name\": \"unread\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/NotificationDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve notifications\",\n        \"tags\": [\n          \"Notifications\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"notification.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update a list of notifications. Allows to bulk-set the read status of notifications.\",\n        \"operationId\": \"updateNotifications\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/NotificationUpdateAllDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update notifications\",\n        \"tags\": [\n          \"Notifications\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"notification.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/notifications/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete a specific notification.\",\n        \"operationId\": \"deleteNotification\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete a notification\",\n        \"tags\": [\n          \"Notifications\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"notification.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve a specific notification identified by id.\",\n        \"operationId\": \"getNotification\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/NotificationDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get a notification\",\n        \"tags\": [\n          \"Notifications\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"notification.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update a specific notification to set its read status.\",\n        \"operationId\": \"updateNotification\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/NotificationUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/NotificationDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update a notification\",\n        \"tags\": [\n          \"Notifications\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"notification.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/oauth/authorize\": {\n      \"post\": {\n        \"description\": \"Initiate the OAuth authorization process.\",\n        \"operationId\": \"startOAuth\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/OAuthConfigDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/OAuthAuthorizeResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Start OAuth\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/oauth/callback\": {\n      \"post\": {\n        \"description\": \"Complete the OAuth authorization process by exchanging the authorization code for a session token.\",\n        \"operationId\": \"finishOAuth\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/OAuthCallbackDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/LoginResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Finish OAuth\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/oauth/link\": {\n      \"post\": {\n        \"description\": \"Link an OAuth account to the authenticated user.\",\n        \"operationId\": \"linkOAuthAccount\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/OAuthCallbackDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Link OAuth account\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/oauth/mobile-redirect\": {\n      \"get\": {\n        \"description\": \"Requests to this URL are automatically forwarded to the mobile app, and is used in some cases for OAuth redirecting.\",\n        \"operationId\": \"redirectOAuthToMobile\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Redirect OAuth to mobile\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/oauth/unlink\": {\n      \"post\": {\n        \"description\": \"Unlink the OAuth account from the authenticated user.\",\n        \"operationId\": \"unlinkOAuthAccount\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Unlink OAuth account\",\n        \"tags\": [\n          \"Authentication\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/partners\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of partners with whom assets are shared.\",\n        \"operationId\": \"getPartners\",\n        \"parameters\": [\n          {\n            \"name\": \"direction\",\n            \"required\": true,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/PartnerDirection\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/PartnerResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve partners\",\n        \"tags\": [\n          \"Partners\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"partner.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a new partner to share assets with.\",\n        \"operationId\": \"createPartner\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/PartnerCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/PartnerResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a partner\",\n        \"tags\": [\n          \"Partners\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"partner.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/partners/{id}\": {\n      \"delete\": {\n        \"description\": \"Stop sharing assets with a partner.\",\n        \"operationId\": \"removePartner\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Remove a partner\",\n        \"tags\": [\n          \"Partners\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"partner.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"deprecated\": true,\n        \"description\": \"Create a new partner to share assets with.\",\n        \"operationId\": \"createPartnerDeprecated\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/PartnerResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a partner\",\n        \"tags\": [\n          \"Partners\",\n          \"Deprecated\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Deprecated\",\n            \"replacementId\": \"createPartner\"\n          }\n        ],\n        \"x-immich-permission\": \"partner.create\",\n        \"x-immich-state\": \"Deprecated\"\n      },\n      \"put\": {\n        \"description\": \"Specify whether a partner's assets should appear in the user's timeline.\",\n        \"operationId\": \"updatePartner\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/PartnerUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/PartnerResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update a partner\",\n        \"tags\": [\n          \"Partners\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"partner.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/people\": {\n      \"delete\": {\n        \"description\": \"Bulk delete a list of people at once.\",\n        \"operationId\": \"deletePeople\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BulkIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete people\",\n        \"tags\": [\n          \"People\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve a list of all people.\",\n        \"operationId\": \"getAllPeople\",\n        \"parameters\": [\n          {\n            \"name\": \"closestAssetId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"closestPersonId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"page\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Page number for pagination\",\n            \"schema\": {\n              \"minimum\": 1,\n              \"default\": 1,\n              \"type\": \"number\"\n            }\n          },\n          {\n            \"name\": \"size\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Number of items per page\",\n            \"schema\": {\n              \"minimum\": 1,\n              \"maximum\": 1000,\n              \"default\": 500,\n              \"type\": \"number\"\n            }\n          },\n          {\n            \"name\": \"withHidden\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/PeopleResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get all people\",\n        \"tags\": [\n          \"People\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a new person that can have multiple faces assigned to them.\",\n        \"operationId\": \"createPerson\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/PersonCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/PersonResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a person\",\n        \"tags\": [\n          \"People\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.create\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Bulk update multiple people at once.\",\n        \"operationId\": \"updatePeople\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/PeopleUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/BulkIdResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update people\",\n        \"tags\": [\n          \"People\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/people/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete an individual person.\",\n        \"operationId\": \"deletePerson\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete person\",\n        \"tags\": [\n          \"People\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve a person by id.\",\n        \"operationId\": \"getPerson\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/PersonResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get a person\",\n        \"tags\": [\n          \"People\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update an individual person.\",\n        \"operationId\": \"updatePerson\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/PersonUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/PersonResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update person\",\n        \"tags\": [\n          \"People\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/people/{id}/merge\": {\n      \"post\": {\n        \"description\": \"Merge a list of people into the person specified in the path parameter.\",\n        \"operationId\": \"mergePerson\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/MergePersonDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/BulkIdResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Merge people\",\n        \"tags\": [\n          \"People\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.merge\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/people/{id}/reassign\": {\n      \"put\": {\n        \"description\": \"Bulk reassign a list of faces to a different person.\",\n        \"operationId\": \"reassignFaces\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetFaceUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/PersonResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Reassign faces\",\n        \"tags\": [\n          \"People\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.reassign\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/people/{id}/statistics\": {\n      \"get\": {\n        \"description\": \"Retrieve statistics about a specific person.\",\n        \"operationId\": \"getPersonStatistics\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/PersonStatisticsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get person statistics\",\n        \"tags\": [\n          \"People\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.statistics\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/people/{id}/thumbnail\": {\n      \"get\": {\n        \"description\": \"Retrieve the thumbnail file for a person.\",\n        \"operationId\": \"getPersonThumbnail\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/octet-stream\": {\n                \"schema\": {\n                  \"format\": \"binary\",\n                  \"type\": \"string\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get person thumbnail\",\n        \"tags\": [\n          \"People\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/plugins\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of plugins available to the authenticated user.\",\n        \"operationId\": \"getPlugins\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/PluginResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"List all plugins\",\n        \"tags\": [\n          \"Plugins\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"plugin.read\",\n        \"x-immich-state\": \"Alpha\"\n      }\n    },\n    \"/plugins/triggers\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of all available plugin triggers.\",\n        \"operationId\": \"getPluginTriggers\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/PluginTriggerResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"List all plugin triggers\",\n        \"tags\": [\n          \"Plugins\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"plugin.read\",\n        \"x-immich-state\": \"Alpha\"\n      }\n    },\n    \"/plugins/{id}\": {\n      \"get\": {\n        \"description\": \"Retrieve information about a specific plugin by its ID.\",\n        \"operationId\": \"getPlugin\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/PluginResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve a plugin\",\n        \"tags\": [\n          \"Plugins\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"plugin.read\",\n        \"x-immich-state\": \"Alpha\"\n      }\n    },\n    \"/queues\": {\n      \"get\": {\n        \"description\": \"Retrieves a list of queues.\",\n        \"operationId\": \"getQueues\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/QueueResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"List all queues\",\n        \"tags\": [\n          \"Queues\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"queue.read\",\n        \"x-immich-state\": \"Alpha\"\n      }\n    },\n    \"/queues/{name}\": {\n      \"get\": {\n        \"description\": \"Retrieves a specific queue by its name.\",\n        \"operationId\": \"getQueue\",\n        \"parameters\": [\n          {\n            \"name\": \"name\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/QueueName\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/QueueResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve a queue\",\n        \"tags\": [\n          \"Queues\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"queue.read\",\n        \"x-immich-state\": \"Alpha\"\n      },\n      \"put\": {\n        \"description\": \"Change the paused status of a specific queue.\",\n        \"operationId\": \"updateQueue\",\n        \"parameters\": [\n          {\n            \"name\": \"name\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/QueueName\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/QueueUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/QueueResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update a queue\",\n        \"tags\": [\n          \"Queues\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"queue.update\",\n        \"x-immich-state\": \"Alpha\"\n      }\n    },\n    \"/queues/{name}/jobs\": {\n      \"delete\": {\n        \"description\": \"Removes all jobs from the specified queue.\",\n        \"operationId\": \"emptyQueue\",\n        \"parameters\": [\n          {\n            \"name\": \"name\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/QueueName\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/QueueDeleteDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Empty a queue\",\n        \"tags\": [\n          \"Queues\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"queueJob.delete\",\n        \"x-immich-state\": \"Alpha\"\n      },\n      \"get\": {\n        \"description\": \"Retrieves a list of queue jobs from the specified queue.\",\n        \"operationId\": \"getQueueJobs\",\n        \"parameters\": [\n          {\n            \"name\": \"name\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/QueueName\"\n            }\n          },\n          {\n            \"name\": \"status\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/components/schemas/QueueJobStatus\"\n              }\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/QueueJobResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve queue jobs\",\n        \"tags\": [\n          \"Queues\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.4.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"queueJob.read\",\n        \"x-immich-state\": \"Alpha\"\n      }\n    },\n    \"/search/cities\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of assets with each asset belonging to a different city. This endpoint is used on the places pages to show a single thumbnail for each city the user has assets in.\",\n        \"operationId\": \"getAssetsByCity\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve assets by city\",\n        \"tags\": [\n          \"Search\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/search/explore\": {\n      \"get\": {\n        \"description\": \"Retrieve data for the explore section, such as popular people and places.\",\n        \"operationId\": \"getExploreData\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/SearchExploreResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve explore data\",\n        \"tags\": [\n          \"Search\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/search/large-assets\": {\n      \"post\": {\n        \"description\": \"Search for assets that are considered large based on specified criteria.\",\n        \"operationId\": \"searchLargeAssets\",\n        \"parameters\": [\n          {\n            \"name\": \"albumIds\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\",\n                \"format\": \"uuid\"\n              }\n            }\n          },\n          {\n            \"name\": \"city\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"nullable\": true,\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"country\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"nullable\": true,\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"createdAfter\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"createdBefore\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"deviceId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"isEncoded\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isFavorite\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isMotion\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isNotInAlbum\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isOffline\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"lensModel\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"nullable\": true,\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"libraryId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"nullable\": true,\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"make\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"minFileSize\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"minimum\": 0,\n              \"type\": \"integer\"\n            }\n          },\n          {\n            \"name\": \"model\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"nullable\": true,\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"ocr\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"personIds\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\",\n                \"format\": \"uuid\"\n              }\n            }\n          },\n          {\n            \"name\": \"rating\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"minimum\": -1,\n              \"maximum\": 5,\n              \"type\": \"number\"\n            }\n          },\n          {\n            \"name\": \"size\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"minimum\": 1,\n              \"maximum\": 1000,\n              \"type\": \"number\"\n            }\n          },\n          {\n            \"name\": \"state\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"nullable\": true,\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"tagIds\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"nullable\": true,\n              \"type\": \"array\",\n              \"items\": {\n                \"type\": \"string\",\n                \"format\": \"uuid\"\n              }\n            }\n          },\n          {\n            \"name\": \"takenAfter\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"takenBefore\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"trashedAfter\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"trashedBefore\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"type\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/AssetTypeEnum\"\n            }\n          },\n          {\n            \"name\": \"updatedAfter\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"updatedBefore\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"visibility\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/AssetVisibility\"\n            }\n          },\n          {\n            \"name\": \"withDeleted\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"withExif\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Search large assets\",\n        \"tags\": [\n          \"Search\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/search/metadata\": {\n      \"post\": {\n        \"description\": \"Search for assets based on various metadata criteria.\",\n        \"operationId\": \"searchAssets\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/MetadataSearchDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SearchResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Search assets by metadata\",\n        \"tags\": [\n          \"Search\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/search/person\": {\n      \"get\": {\n        \"description\": \"Search for people by name.\",\n        \"operationId\": \"searchPerson\",\n        \"parameters\": [\n          {\n            \"name\": \"name\",\n            \"required\": true,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"withHidden\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/PersonResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Search people\",\n        \"tags\": [\n          \"Search\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"person.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/search/places\": {\n      \"get\": {\n        \"description\": \"Search for places by name.\",\n        \"operationId\": \"searchPlaces\",\n        \"parameters\": [\n          {\n            \"name\": \"name\",\n            \"required\": true,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/PlacesResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Search places\",\n        \"tags\": [\n          \"Search\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/search/random\": {\n      \"post\": {\n        \"description\": \"Retrieve a random selection of assets based on the provided criteria.\",\n        \"operationId\": \"searchRandom\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/RandomSearchDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Search random assets\",\n        \"tags\": [\n          \"Search\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/search/smart\": {\n      \"post\": {\n        \"description\": \"Perform a smart search for assets by using machine learning vectors to determine relevance.\",\n        \"operationId\": \"searchSmart\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SmartSearchDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SearchResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Smart asset search\",\n        \"tags\": [\n          \"Search\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/search/statistics\": {\n      \"post\": {\n        \"description\": \"Retrieve statistical data about assets based on search criteria, such as the total matching count.\",\n        \"operationId\": \"searchAssetStatistics\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/StatisticsSearchDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SearchStatisticsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Search asset statistics\",\n        \"tags\": [\n          \"Search\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.statistics\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/search/suggestions\": {\n      \"get\": {\n        \"description\": \"Retrieve search suggestions based on partial input. This endpoint is used for typeahead search features.\",\n        \"operationId\": \"getSearchSuggestions\",\n        \"parameters\": [\n          {\n            \"name\": \"country\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"includeNull\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v1.111.0\",\n                \"state\": \"Added\"\n              },\n              {\n                \"version\": \"v2\",\n                \"state\": \"Stable\"\n              }\n            ],\n            \"x-immich-state\": \"Stable\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"lensModel\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"make\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"model\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"state\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"type\",\n            \"required\": true,\n            \"in\": \"query\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/SearchSuggestionType\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"type\": \"string\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve search suggestions\",\n        \"tags\": [\n          \"Search\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/about\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of information about the server.\",\n        \"operationId\": \"getAboutInfo\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ServerAboutResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get server information\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"server.about\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/apk-links\": {\n      \"get\": {\n        \"description\": \"Retrieve links to the APKs for the current server version.\",\n        \"operationId\": \"getApkLinks\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ServerApkLinksDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get APK links\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"server.apkLinks\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/config\": {\n      \"get\": {\n        \"description\": \"Retrieve the current server configuration.\",\n        \"operationId\": \"getServerConfig\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ServerConfigDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Get config\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/features\": {\n      \"get\": {\n        \"description\": \"Retrieve available features supported by this server.\",\n        \"operationId\": \"getServerFeatures\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ServerFeaturesDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Get features\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/license\": {\n      \"delete\": {\n        \"description\": \"Delete the currently set server product key.\",\n        \"operationId\": \"deleteServerLicense\",\n        \"parameters\": [],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete server product key\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"serverLicense.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve information about whether the server currently has a product key registered.\",\n        \"operationId\": \"getServerLicense\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/LicenseResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          },\n          \"404\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get product key\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"serverLicense.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Validate and set the server product key if successful.\",\n        \"operationId\": \"setServerLicense\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/LicenseKeyDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/LicenseResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Set server product key\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"serverLicense.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/media-types\": {\n      \"get\": {\n        \"description\": \"Retrieve all media types supported by the server.\",\n        \"operationId\": \"getSupportedMediaTypes\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ServerMediaTypesResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Get supported media types\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/ping\": {\n      \"get\": {\n        \"description\": \"Pong\",\n        \"operationId\": \"pingServer\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ServerPingResponse\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Ping\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/statistics\": {\n      \"get\": {\n        \"description\": \"Retrieve statistics about the entire Immich instance such as asset counts.\",\n        \"operationId\": \"getServerStatistics\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ServerStatsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get statistics\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"server.statistics\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/storage\": {\n      \"get\": {\n        \"description\": \"Retrieve the current storage utilization information of the server.\",\n        \"operationId\": \"getStorage\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ServerStorageResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get storage\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"server.storage\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/theme\": {\n      \"get\": {\n        \"description\": \"Retrieve the custom CSS, if existent.\",\n        \"operationId\": \"getTheme\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ServerThemeDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Get theme\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/version\": {\n      \"get\": {\n        \"description\": \"Retrieve the current server version in semantic versioning (semver) format.\",\n        \"operationId\": \"getServerVersion\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ServerVersionResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Get server version\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/version-check\": {\n      \"get\": {\n        \"description\": \"Retrieve information about the last time the version check ran.\",\n        \"operationId\": \"getVersionCheck\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/VersionCheckStateResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get version check status\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"server.versionCheck\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/server/version-history\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of past versions the server has been on.\",\n        \"operationId\": \"getVersionHistory\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/ServerVersionHistoryResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"summary\": \"Get version history\",\n        \"tags\": [\n          \"Server\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/sessions\": {\n      \"delete\": {\n        \"description\": \"Delete all sessions for the user. This will not delete the current session.\",\n        \"operationId\": \"deleteAllSessions\",\n        \"parameters\": [],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete all sessions\",\n        \"tags\": [\n          \"Sessions\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"session.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve a list of sessions for the user.\",\n        \"operationId\": \"getSessions\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/SessionResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve sessions\",\n        \"tags\": [\n          \"Sessions\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"session.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a session as a child to the current session. This endpoint is used for casting.\",\n        \"operationId\": \"createSession\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SessionCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SessionCreateResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a session\",\n        \"tags\": [\n          \"Sessions\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"session.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/sessions/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete a specific session by id.\",\n        \"operationId\": \"deleteSession\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete a session\",\n        \"tags\": [\n          \"Sessions\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"session.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update a specific session identified by id.\",\n        \"operationId\": \"updateSession\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SessionUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SessionResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update a session\",\n        \"tags\": [\n          \"Sessions\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"session.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/sessions/{id}/lock\": {\n      \"post\": {\n        \"description\": \"Lock a specific session by id.\",\n        \"operationId\": \"lockSession\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Lock a session\",\n        \"tags\": [\n          \"Sessions\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"session.lock\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/shared-links\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of all shared links.\",\n        \"operationId\": \"getAllSharedLinks\",\n        \"parameters\": [\n          {\n            \"name\": \"albumId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"id\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v2.5.0\",\n                \"state\": \"Added\"\n              }\n            ],\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/SharedLinkResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve all shared links\",\n        \"tags\": [\n          \"Shared links\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"sharedLink.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a new shared link.\",\n        \"operationId\": \"createSharedLink\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SharedLinkCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SharedLinkResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a shared link\",\n        \"tags\": [\n          \"Shared links\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"sharedLink.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/shared-links/me\": {\n      \"get\": {\n        \"description\": \"Retrieve the current shared link associated with authentication method.\",\n        \"operationId\": \"getMySharedLink\",\n        \"parameters\": [\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"password\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"example\": \"password\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"token\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SharedLinkResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve current shared link\",\n        \"tags\": [\n          \"Shared links\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/shared-links/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete a specific shared link by its ID.\",\n        \"operationId\": \"removeSharedLink\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete a shared link\",\n        \"tags\": [\n          \"Shared links\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"sharedLink.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve a specific shared link by its ID.\",\n        \"operationId\": \"getSharedLinkById\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SharedLinkResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve a shared link\",\n        \"tags\": [\n          \"Shared links\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"sharedLink.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"patch\": {\n        \"description\": \"Update an existing shared link by its ID.\",\n        \"operationId\": \"updateSharedLink\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SharedLinkEditDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SharedLinkResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update a shared link\",\n        \"tags\": [\n          \"Shared links\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"sharedLink.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/shared-links/{id}/assets\": {\n      \"delete\": {\n        \"description\": \"Remove assets from a specific shared link by its ID. This endpoint is only relevant for shared link of type individual.\",\n        \"operationId\": \"removeSharedLinkAssets\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetIdsResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Remove assets from a shared link\",\n        \"tags\": [\n          \"Shared links\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Add assets to a specific shared link by its ID. This endpoint is only relevant for shared link of type individual.\",\n        \"operationId\": \"addSharedLinkAssets\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetIdsResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Add assets to a shared link\",\n        \"tags\": [\n          \"Shared links\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/stacks\": {\n      \"delete\": {\n        \"description\": \"Delete multiple stacks by providing a list of stack IDs.\",\n        \"operationId\": \"deleteStacks\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BulkIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete stacks\",\n        \"tags\": [\n          \"Stacks\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"stack.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve a list of stacks.\",\n        \"operationId\": \"searchStacks\",\n        \"parameters\": [\n          {\n            \"name\": \"primaryAssetId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/StackResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve stacks\",\n        \"tags\": [\n          \"Stacks\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"stack.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a new stack by providing a name and a list of asset IDs to include in the stack. If any of the provided asset IDs are primary assets of an existing stack, the existing stack will be merged into the newly created stack.\",\n        \"operationId\": \"createStack\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/StackCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/StackResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a stack\",\n        \"tags\": [\n          \"Stacks\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"stack.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/stacks/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete a specific stack by its ID.\",\n        \"operationId\": \"deleteStack\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete a stack\",\n        \"tags\": [\n          \"Stacks\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"stack.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve a specific stack by its ID.\",\n        \"operationId\": \"getStack\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/StackResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve a stack\",\n        \"tags\": [\n          \"Stacks\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"stack.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update an existing stack by its ID.\",\n        \"operationId\": \"updateStack\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/StackUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/StackResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update a stack\",\n        \"tags\": [\n          \"Stacks\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"stack.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/stacks/{id}/assets/{assetId}\": {\n      \"delete\": {\n        \"description\": \"Remove a specific asset from a stack by providing the stack ID and asset ID.\",\n        \"operationId\": \"removeAssetFromStack\",\n        \"parameters\": [\n          {\n            \"name\": \"assetId\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Remove an asset from a stack\",\n        \"tags\": [\n          \"Stacks\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"stack.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/sync/ack\": {\n      \"delete\": {\n        \"description\": \"Delete specific synchronization acknowledgments.\",\n        \"operationId\": \"deleteSyncAck\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SyncAckDeleteDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete acknowledgements\",\n        \"tags\": [\n          \"Sync\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"syncCheckpoint.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve the synchronization acknowledgments for the current session.\",\n        \"operationId\": \"getSyncAck\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/SyncAckDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve acknowledgements\",\n        \"tags\": [\n          \"Sync\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"syncCheckpoint.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Send a list of synchronization acknowledgements to confirm that the latest changes have been received.\",\n        \"operationId\": \"sendSyncAck\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SyncAckSetDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Acknowledge changes\",\n        \"tags\": [\n          \"Sync\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"syncCheckpoint.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/sync/delta-sync\": {\n      \"post\": {\n        \"deprecated\": true,\n        \"description\": \"Retrieve changed assets since the last sync for the authenticated user.\",\n        \"operationId\": \"getDeltaSync\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetDeltaSyncDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AssetDeltaSyncResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get delta sync for user\",\n        \"tags\": [\n          \"Sync\",\n          \"Deprecated\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Deprecated\"\n          }\n        ],\n        \"x-immich-state\": \"Deprecated\"\n      }\n    },\n    \"/sync/full-sync\": {\n      \"post\": {\n        \"deprecated\": true,\n        \"description\": \"Retrieve all assets for a full synchronization for the authenticated user.\",\n        \"operationId\": \"getFullSyncForUser\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AssetFullSyncDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get full sync for user\",\n        \"tags\": [\n          \"Sync\",\n          \"Deprecated\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Deprecated\"\n          }\n        ],\n        \"x-immich-state\": \"Deprecated\"\n      }\n    },\n    \"/sync/stream\": {\n      \"post\": {\n        \"description\": \"Retrieve a JSON lines streamed response of changes for synchronization. This endpoint is used by the mobile app to efficiently stay up to date with changes.\",\n        \"operationId\": \"getSyncStream\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SyncStreamDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Stream sync changes\",\n        \"tags\": [\n          \"Sync\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"sync.stream\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/system-config\": {\n      \"get\": {\n        \"description\": \"Retrieve the current system configuration.\",\n        \"operationId\": \"getConfig\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SystemConfigDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get system configuration\",\n        \"tags\": [\n          \"System config\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"systemConfig.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update the system configuration with a new system configuration.\",\n        \"operationId\": \"updateConfig\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/SystemConfigDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SystemConfigDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update system configuration\",\n        \"tags\": [\n          \"System config\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"systemConfig.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/system-config/defaults\": {\n      \"get\": {\n        \"description\": \"Retrieve the default values for the system configuration.\",\n        \"operationId\": \"getConfigDefaults\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SystemConfigDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get system configuration defaults\",\n        \"tags\": [\n          \"System config\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"systemConfig.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/system-config/storage-template-options\": {\n      \"get\": {\n        \"description\": \"Retrieve exemplary storage template options.\",\n        \"operationId\": \"getStorageTemplateOptions\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SystemConfigTemplateStorageOptionDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get storage template options\",\n        \"tags\": [\n          \"System config\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"systemConfig.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/system-metadata/admin-onboarding\": {\n      \"get\": {\n        \"description\": \"Retrieve the current admin onboarding status.\",\n        \"operationId\": \"getAdminOnboarding\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/AdminOnboardingUpdateDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve admin onboarding\",\n        \"tags\": [\n          \"System metadata\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"systemMetadata.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Update the admin onboarding status.\",\n        \"operationId\": \"updateAdminOnboarding\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/AdminOnboardingUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update admin onboarding\",\n        \"tags\": [\n          \"System metadata\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"systemMetadata.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/system-metadata/reverse-geocoding-state\": {\n      \"get\": {\n        \"description\": \"Retrieve the current state of the reverse geocoding import.\",\n        \"operationId\": \"getReverseGeocodingState\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/ReverseGeocodingStateResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve reverse geocoding state\",\n        \"tags\": [\n          \"System metadata\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"systemMetadata.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/system-metadata/version-check-state\": {\n      \"get\": {\n        \"description\": \"Retrieve the current state of the version check process.\",\n        \"operationId\": \"getVersionCheckState\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/VersionCheckStateResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve version check state\",\n        \"tags\": [\n          \"System metadata\"\n        ],\n        \"x-immich-admin-only\": true,\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"systemMetadata.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/tags\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of all tags.\",\n        \"operationId\": \"getAllTags\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/TagResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve tags\",\n        \"tags\": [\n          \"Tags\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"tag.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Create a new tag by providing a name and optional color.\",\n        \"operationId\": \"createTag\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/TagCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TagResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a tag\",\n        \"tags\": [\n          \"Tags\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"tag.create\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Create or update multiple tags in a single request.\",\n        \"operationId\": \"upsertTags\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/TagUpsertDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/TagResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Upsert tags\",\n        \"tags\": [\n          \"Tags\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"tag.create\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/tags/assets\": {\n      \"put\": {\n        \"description\": \"Add multiple tags to multiple assets in a single request.\",\n        \"operationId\": \"bulkTagAssets\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/TagBulkAssetsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TagBulkAssetsResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Tag assets\",\n        \"tags\": [\n          \"Tags\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"tag.asset\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/tags/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete a specific tag by its ID.\",\n        \"operationId\": \"deleteTag\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete a tag\",\n        \"tags\": [\n          \"Tags\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"tag.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve a specific tag by its ID.\",\n        \"operationId\": \"getTagById\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TagResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve a tag\",\n        \"tags\": [\n          \"Tags\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"tag.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update an existing tag identified by its ID.\",\n        \"operationId\": \"updateTag\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/TagUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TagResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update a tag\",\n        \"tags\": [\n          \"Tags\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"tag.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/tags/{id}/assets\": {\n      \"delete\": {\n        \"description\": \"Remove a tag from all the specified assets.\",\n        \"operationId\": \"untagAssets\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BulkIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/BulkIdResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Untag assets\",\n        \"tags\": [\n          \"Tags\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"tag.asset\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Add a tag to all the specified assets.\",\n        \"operationId\": \"tagAssets\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BulkIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/BulkIdResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Tag assets\",\n        \"tags\": [\n          \"Tags\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"tag.asset\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/timeline/bucket\": {\n      \"get\": {\n        \"description\": \"Retrieve a string of all asset ids in a given time bucket.\",\n        \"operationId\": \"getTimeBucket\",\n        \"parameters\": [\n          {\n            \"name\": \"albumId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter assets belonging to a specific album\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"isFavorite\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter by favorite status (true for favorites only, false for non-favorites only)\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isTrashed\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter by trash status (true for trashed assets only, false for non-trashed only)\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"order\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/AssetOrder\"\n            }\n          },\n          {\n            \"name\": \"personId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter assets containing a specific person (face recognition)\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"tagId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter assets with a specific tag\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"timeBucket\",\n            \"required\": true,\n            \"in\": \"query\",\n            \"description\": \"Time bucket identifier in YYYY-MM-DD format (e.g., \\\"2024-01-01\\\" for January 2024)\",\n            \"schema\": {\n              \"example\": \"2024-01-01\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"userId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter assets by specific user ID\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"visibility\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/AssetVisibility\"\n            }\n          },\n          {\n            \"name\": \"withCoordinates\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Include location data in the response\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"withPartners\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Include assets shared by partners\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"withStacked\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Include stacked assets in the response. When true, only primary assets from stacks are returned.\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TimeBucketAssetResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get time bucket\",\n        \"tags\": [\n          \"Timeline\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Internal\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Internal\"\n      }\n    },\n    \"/timeline/buckets\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of all minimal time buckets.\",\n        \"operationId\": \"getTimeBuckets\",\n        \"parameters\": [\n          {\n            \"name\": \"albumId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter assets belonging to a specific album\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"isFavorite\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter by favorite status (true for favorites only, false for non-favorites only)\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"isTrashed\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter by trash status (true for trashed assets only, false for non-trashed only)\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"key\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"order\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/AssetOrder\"\n            }\n          },\n          {\n            \"name\": \"personId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter assets containing a specific person (face recognition)\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"slug\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"tagId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter assets with a specific tag\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"userId\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter assets by specific user ID\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          },\n          {\n            \"name\": \"visibility\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)\",\n            \"schema\": {\n              \"$ref\": \"#/components/schemas/AssetVisibility\"\n            }\n          },\n          {\n            \"name\": \"withCoordinates\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Include location data in the response\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"withPartners\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Include assets shared by partners\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          },\n          {\n            \"name\": \"withStacked\",\n            \"required\": false,\n            \"in\": \"query\",\n            \"description\": \"Include stacked assets in the response. When true, only primary assets from stacks are returned.\",\n            \"schema\": {\n              \"type\": \"boolean\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/TimeBucketsResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get time buckets\",\n        \"tags\": [\n          \"Timeline\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Internal\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.read\",\n        \"x-immich-state\": \"Internal\"\n      }\n    },\n    \"/trash/empty\": {\n      \"post\": {\n        \"description\": \"Permanently delete all items in the trash.\",\n        \"operationId\": \"emptyTrash\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TrashResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Empty trash\",\n        \"tags\": [\n          \"Trash\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.delete\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/trash/restore\": {\n      \"post\": {\n        \"description\": \"Restore all items in the trash.\",\n        \"operationId\": \"restoreTrash\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TrashResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Restore trash\",\n        \"tags\": [\n          \"Trash\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.delete\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/trash/restore/assets\": {\n      \"post\": {\n        \"description\": \"Restore specific assets from the trash.\",\n        \"operationId\": \"restoreAssets\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/BulkIdsDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/TrashResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Restore assets\",\n        \"tags\": [\n          \"Trash\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"asset.delete\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/users\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of all users on the server.\",\n        \"operationId\": \"searchUsers\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/UserResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get all users\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"user.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/users/me\": {\n      \"get\": {\n        \"description\": \"Retrieve information about the user making the API request.\",\n        \"operationId\": \"getMyUser\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get current user\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"user.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update the current user making teh API request.\",\n        \"operationId\": \"updateMyUser\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UserUpdateMeDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserAdminResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update current user\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"user.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/users/me/license\": {\n      \"delete\": {\n        \"description\": \"Delete the registered product key for the current user.\",\n        \"operationId\": \"deleteUserLicense\",\n        \"parameters\": [],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete user product key\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"userLicense.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve information about whether the current user has a registered product key.\",\n        \"operationId\": \"getUserLicense\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/LicenseResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve user product key\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"userLicense.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Register a product key for the current user.\",\n        \"operationId\": \"setUserLicense\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/LicenseKeyDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/LicenseResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Set user product key\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"userLicense.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/users/me/onboarding\": {\n      \"delete\": {\n        \"description\": \"Delete the onboarding status of the current user.\",\n        \"operationId\": \"deleteUserOnboarding\",\n        \"parameters\": [],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete user onboarding\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"userOnboarding.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve the onboarding status of the current user.\",\n        \"operationId\": \"getUserOnboarding\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/OnboardingResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve user onboarding\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"userOnboarding.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update the onboarding status of the current user.\",\n        \"operationId\": \"setUserOnboarding\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/OnboardingDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/OnboardingResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update user onboarding\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"userOnboarding.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/users/me/preferences\": {\n      \"get\": {\n        \"description\": \"Retrieve the preferences for the current user.\",\n        \"operationId\": \"getMyPreferences\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserPreferencesResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Get my preferences\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"userPreference.read\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"put\": {\n        \"description\": \"Update the preferences of the current user.\",\n        \"operationId\": \"updateMyPreferences\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/UserPreferencesUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserPreferencesResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update my preferences\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"userPreference.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/users/profile-image\": {\n      \"delete\": {\n        \"description\": \"Delete the profile image of the current user.\",\n        \"operationId\": \"deleteProfileImage\",\n        \"parameters\": [],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete user profile image\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"userProfileImage.delete\",\n        \"x-immich-state\": \"Stable\"\n      },\n      \"post\": {\n        \"description\": \"Upload and set a new profile image for the current user.\",\n        \"operationId\": \"createProfileImage\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"multipart/form-data\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/CreateProfileImageDto\"\n              }\n            }\n          },\n          \"description\": \"A new avatar for the user\",\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/CreateProfileImageResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create user profile image\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"userProfileImage.update\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/users/{id}\": {\n      \"get\": {\n        \"description\": \"Retrieve a specific user by their ID.\",\n        \"operationId\": \"getUser\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/UserResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve a user\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"user.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/users/{id}/profile-image\": {\n      \"get\": {\n        \"description\": \"Retrieve the profile image file for a user.\",\n        \"operationId\": \"getProfileImage\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/octet-stream\": {\n                \"schema\": {\n                  \"format\": \"binary\",\n                  \"type\": \"string\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve user profile image\",\n        \"tags\": [\n          \"Users\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-permission\": \"userProfileImage.read\",\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/view/folder\": {\n      \"get\": {\n        \"description\": \"Retrieve assets that are children of a specific folder.\",\n        \"operationId\": \"getAssetsByOriginalPath\",\n        \"parameters\": [\n          {\n            \"name\": \"path\",\n            \"required\": true,\n            \"in\": \"query\",\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/AssetResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve assets by original path\",\n        \"tags\": [\n          \"Views\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/view/folder/unique-paths\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of unique folder paths from asset original paths.\",\n        \"operationId\": \"getUniqueOriginalPaths\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"type\": \"string\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve unique paths\",\n        \"tags\": [\n          \"Views\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v1\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v1\",\n            \"state\": \"Beta\"\n          },\n          {\n            \"version\": \"v2\",\n            \"state\": \"Stable\"\n          }\n        ],\n        \"x-immich-state\": \"Stable\"\n      }\n    },\n    \"/workflows\": {\n      \"get\": {\n        \"description\": \"Retrieve a list of workflows available to the authenticated user.\",\n        \"operationId\": \"getWorkflows\",\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"items\": {\n                    \"$ref\": \"#/components/schemas/WorkflowResponseDto\"\n                  },\n                  \"type\": \"array\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"List all workflows\",\n        \"tags\": [\n          \"Workflows\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"workflow.read\",\n        \"x-immich-state\": \"Alpha\"\n      },\n      \"post\": {\n        \"description\": \"Create a new workflow, the workflow can also be created with empty filters and actions.\",\n        \"operationId\": \"createWorkflow\",\n        \"parameters\": [],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/WorkflowCreateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"201\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/WorkflowResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Create a workflow\",\n        \"tags\": [\n          \"Workflows\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"workflow.create\",\n        \"x-immich-state\": \"Alpha\"\n      }\n    },\n    \"/workflows/{id}\": {\n      \"delete\": {\n        \"description\": \"Delete a workflow by its ID.\",\n        \"operationId\": \"deleteWorkflow\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"204\": {\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Delete a workflow\",\n        \"tags\": [\n          \"Workflows\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"workflow.delete\",\n        \"x-immich-state\": \"Alpha\"\n      },\n      \"get\": {\n        \"description\": \"Retrieve information about a specific workflow by its ID.\",\n        \"operationId\": \"getWorkflow\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/WorkflowResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Retrieve a workflow\",\n        \"tags\": [\n          \"Workflows\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"workflow.read\",\n        \"x-immich-state\": \"Alpha\"\n      },\n      \"put\": {\n        \"description\": \"Update the information of a specific workflow by its ID. This endpoint can be used to update the workflow name, description, trigger type, filters and actions order, etc.\",\n        \"operationId\": \"updateWorkflow\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"required\": true,\n            \"in\": \"path\",\n            \"schema\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"requestBody\": {\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"$ref\": \"#/components/schemas/WorkflowUpdateDto\"\n              }\n            }\n          },\n          \"required\": true\n        },\n        \"responses\": {\n          \"200\": {\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/WorkflowResponseDto\"\n                }\n              }\n            },\n            \"description\": \"\"\n          }\n        },\n        \"security\": [\n          {\n            \"bearer\": []\n          },\n          {\n            \"cookie\": []\n          },\n          {\n            \"api_key\": []\n          }\n        ],\n        \"summary\": \"Update a workflow\",\n        \"tags\": [\n          \"Workflows\"\n        ],\n        \"x-immich-history\": [\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Added\"\n          },\n          {\n            \"version\": \"v2.3.0\",\n            \"state\": \"Alpha\"\n          }\n        ],\n        \"x-immich-permission\": \"workflow.update\",\n        \"x-immich-state\": \"Alpha\"\n      }\n    }\n  },\n  \"info\": {\n    \"title\": \"Immich\",\n    \"description\": \"Immich API\",\n    \"version\": \"2.4.1\",\n    \"contact\": {}\n  },\n  \"tags\": [\n    {\n      \"name\": \"Activities\",\n      \"description\": \"An activity is a like or a comment made by a user on an asset or album.\"\n    },\n    {\n      \"name\": \"Albums\",\n      \"description\": \"An album is a collection of assets that can be shared with other users or via shared links.\"\n    },\n    {\n      \"name\": \"API keys\",\n      \"description\": \"An api key can be used to programmatically access the Immich API.\"\n    },\n    {\n      \"name\": \"Assets\",\n      \"description\": \"An asset is an image or video that has been uploaded to Immich.\"\n    },\n    {\n      \"name\": \"Authentication\",\n      \"description\": \"Endpoints related to user authentication, including OAuth.\"\n    },\n    {\n      \"name\": \"Authentication (admin)\",\n      \"description\": \"Administrative endpoints related to authentication.\"\n    },\n    {\n      \"name\": \"Deprecated\",\n      \"description\": \"Deprecated endpoints that are planned for removal in the next major release.\"\n    },\n    {\n      \"name\": \"Download\",\n      \"description\": \"Endpoints for downloading assets or collections of assets.\"\n    },\n    {\n      \"name\": \"Duplicates\",\n      \"description\": \"Endpoints for managing and identifying duplicate assets.\"\n    },\n    {\n      \"name\": \"Faces\",\n      \"description\": \"A face is a detected human face within an asset, which can be associated with a person. Faces are normally detected via machine learning, but can also be created via manually.\"\n    },\n    {\n      \"name\": \"Jobs\",\n      \"description\": \"Queues and background jobs are used for processing tasks asynchronously. Queues can be paused and resumed as needed.\"\n    },\n    {\n      \"name\": \"Libraries\",\n      \"description\": \"An external library is made up of input file paths or expressions that are scanned for asset files. Discovered files are automatically imported. Assets much be unique within a library, but can be duplicated across libraries. Each user has a default upload library, and can have one or more external libraries.\"\n    },\n    {\n      \"name\": \"Maintenance (admin)\",\n      \"description\": \"Maintenance mode allows you to put Immich in a read-only state to perform various operations.\"\n    },\n    {\n      \"name\": \"Map\",\n      \"description\": \"Map endpoints include supplemental functionality related to geolocation, such as reverse geocoding and retrieving map markers for assets with geolocation data.\"\n    },\n    {\n      \"name\": \"Memories\",\n      \"description\": \"A memory is a specialized collection of assets with dedicated viewing implementations in the web and mobile clients. A memory includes fields related to visibility and are automatically generated per user via a background job.\"\n    },\n    {\n      \"name\": \"Notifications\",\n      \"description\": \"A notification is a specialized message sent to users to inform them of important events. Currently, these notifications are only shown in the Immich web application.\"\n    },\n    {\n      \"name\": \"Notifications (admin)\",\n      \"description\": \"Notification administrative endpoints.\"\n    },\n    {\n      \"name\": \"Partners\",\n      \"description\": \"A partner is a link with another user that allows sharing of assets between two users.\"\n    },\n    {\n      \"name\": \"People\",\n      \"description\": \"A person is a collection of faces, which can be favorited and named. A person can also be merged into another person. People are automatically created via the face recognition job.\"\n    },\n    {\n      \"name\": \"Plugins\",\n      \"description\": \"A plugin is an installed module that makes filters and actions available for the workflow feature.\"\n    },\n    {\n      \"name\": \"Queues\",\n      \"description\": \"Queues and background jobs are used for processing tasks asynchronously. Queues can be paused and resumed as needed.\"\n    },\n    {\n      \"name\": \"Search\",\n      \"description\": \"Endpoints related to searching assets via text, smart search, optical character recognition (OCR), and other filters like person, album, and other metadata. Search endpoints usually support pagination and sorting.\"\n    },\n    {\n      \"name\": \"Server\",\n      \"description\": \"Information about the current server deployment, including version and build information, available features, supported media types, and more.\"\n    },\n    {\n      \"name\": \"Sessions\",\n      \"description\": \"A session represents an authenticated login session for a user. Sessions also appear in the web application as \\\"Authorized devices\\\".\"\n    },\n    {\n      \"name\": \"Shared links\",\n      \"description\": \"A shared link is a public url that provides access to a specific album, asset, or collection of assets. A shared link can be protected with a password, include a specific slug, allow or disallow downloads, and optionally include an expiration date.\"\n    },\n    {\n      \"name\": \"Stacks\",\n      \"description\": \"A stack is a group of related assets. One asset is the \\\"primary\\\" asset, and the rest are \\\"child\\\" assets. On the main timeline, stack parents are included by default, while child assets are hidden.\"\n    },\n    {\n      \"name\": \"Sync\",\n      \"description\": \"A collection of endpoints for the new mobile synchronization implementation.\"\n    },\n    {\n      \"name\": \"System config\",\n      \"description\": \"Endpoints to view, modify, and validate the system configuration settings.\"\n    },\n    {\n      \"name\": \"System metadata\",\n      \"description\": \"Endpoints to view, modify, and validate the system metadata, which includes information about things like admin onboarding status.\"\n    },\n    {\n      \"name\": \"Tags\",\n      \"description\": \"A tag is a user-defined label that can be applied to assets for organizational purposes. Tags can also be hierarchical, allowing for parent-child relationships between tags.\"\n    },\n    {\n      \"name\": \"Timeline\",\n      \"description\": \"Specialized endpoints related to the timeline implementation used in the web application. External applications or tools should not use or rely on these endpoints, as they are subject to change without notice.\"\n    },\n    {\n      \"name\": \"Trash\",\n      \"description\": \"Endpoints for managing the trash can, which includes assets that have been discarded. Items in the trash are automatically deleted after a configured amount of time.\"\n    },\n    {\n      \"name\": \"Users (admin)\",\n      \"description\": \"Administrative endpoints for managing users, including creating, updating, deleting, and restoring users. Also includes endpoints for resetting passwords and PIN codes.\"\n    },\n    {\n      \"name\": \"Users\",\n      \"description\": \"Endpoints for viewing and updating the current users, including product key information, profile picture data, onboarding progress, and more.\"\n    },\n    {\n      \"name\": \"Views\",\n      \"description\": \"Endpoints for specialized views, such as the folder view.\"\n    },\n    {\n      \"name\": \"Workflows\",\n      \"description\": \"A workflow is a set of actions that run whenever a triggering event occurs. Workflows also can include filters to further limit execution.\"\n    }\n  ],\n  \"servers\": [\n    {\n      \"url\": \"/api\"\n    }\n  ],\n  \"components\": {\n    \"securitySchemes\": {\n      \"bearer\": {\n        \"scheme\": \"Bearer\",\n        \"bearerFormat\": \"JWT\",\n        \"type\": \"http\",\n        \"in\": \"header\"\n      },\n      \"cookie\": {\n        \"type\": \"apiKey\",\n        \"in\": \"cookie\",\n        \"name\": \"immich_access_token\"\n      },\n      \"api_key\": {\n        \"type\": \"apiKey\",\n        \"in\": \"header\",\n        \"name\": \"x-api-key\"\n      }\n    },\n    \"schemas\": {\n      \"APIKeyCreateDto\": {\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"permissions\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/Permission\"\n            },\n            \"minItems\": 1,\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"permissions\"\n        ],\n        \"type\": \"object\"\n      },\n      \"APIKeyCreateResponseDto\": {\n        \"properties\": {\n          \"apiKey\": {\n            \"$ref\": \"#/components/schemas/APIKeyResponseDto\"\n          },\n          \"secret\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"apiKey\",\n          \"secret\"\n        ],\n        \"type\": \"object\"\n      },\n      \"APIKeyResponseDto\": {\n        \"properties\": {\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"permissions\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/Permission\"\n            },\n            \"type\": \"array\"\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"createdAt\",\n          \"id\",\n          \"name\",\n          \"permissions\",\n          \"updatedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"APIKeyUpdateDto\": {\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"permissions\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/Permission\"\n            },\n            \"minItems\": 1,\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"ActivityCreateDto\": {\n        \"properties\": {\n          \"albumId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"assetId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"comment\": {\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/ReactionType\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"albumId\",\n          \"type\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ActivityResponseDto\": {\n        \"properties\": {\n          \"assetId\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"comment\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/ReactionType\"\n              }\n            ]\n          },\n          \"user\": {\n            \"$ref\": \"#/components/schemas/UserResponseDto\"\n          }\n        },\n        \"required\": [\n          \"assetId\",\n          \"createdAt\",\n          \"id\",\n          \"type\",\n          \"user\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ActivityStatisticsResponseDto\": {\n        \"properties\": {\n          \"comments\": {\n            \"type\": \"integer\"\n          },\n          \"likes\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"comments\",\n          \"likes\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AddUsersDto\": {\n        \"properties\": {\n          \"albumUsers\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AlbumUserAddDto\"\n            },\n            \"minItems\": 1,\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"albumUsers\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AdminOnboardingUpdateDto\": {\n        \"properties\": {\n          \"isOnboarded\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"isOnboarded\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AlbumResponseDto\": {\n        \"properties\": {\n          \"albumName\": {\n            \"type\": \"string\"\n          },\n          \"albumThumbnailAssetId\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"albumUsers\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AlbumUserResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"assetCount\": {\n            \"type\": \"integer\"\n          },\n          \"assets\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"contributorCounts\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/ContributorCountResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"endDate\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"hasSharedLink\": {\n            \"type\": \"boolean\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isActivityEnabled\": {\n            \"type\": \"boolean\"\n          },\n          \"lastModifiedAssetTimestamp\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"order\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetOrder\"\n              }\n            ]\n          },\n          \"owner\": {\n            \"$ref\": \"#/components/schemas/UserResponseDto\"\n          },\n          \"ownerId\": {\n            \"type\": \"string\"\n          },\n          \"shared\": {\n            \"type\": \"boolean\"\n          },\n          \"startDate\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"albumName\",\n          \"albumThumbnailAssetId\",\n          \"albumUsers\",\n          \"assetCount\",\n          \"assets\",\n          \"createdAt\",\n          \"description\",\n          \"hasSharedLink\",\n          \"id\",\n          \"isActivityEnabled\",\n          \"owner\",\n          \"ownerId\",\n          \"shared\",\n          \"updatedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AlbumStatisticsResponseDto\": {\n        \"properties\": {\n          \"notShared\": {\n            \"type\": \"integer\"\n          },\n          \"owned\": {\n            \"type\": \"integer\"\n          },\n          \"shared\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"notShared\",\n          \"owned\",\n          \"shared\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AlbumUserAddDto\": {\n        \"properties\": {\n          \"role\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AlbumUserRole\"\n              }\n            ],\n            \"default\": \"editor\"\n          },\n          \"userId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"userId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AlbumUserCreateDto\": {\n        \"properties\": {\n          \"role\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AlbumUserRole\"\n              }\n            ]\n          },\n          \"userId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"role\",\n          \"userId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AlbumUserResponseDto\": {\n        \"properties\": {\n          \"role\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AlbumUserRole\"\n              }\n            ]\n          },\n          \"user\": {\n            \"$ref\": \"#/components/schemas/UserResponseDto\"\n          }\n        },\n        \"required\": [\n          \"role\",\n          \"user\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AlbumUserRole\": {\n        \"enum\": [\n          \"editor\",\n          \"viewer\"\n        ],\n        \"type\": \"string\"\n      },\n      \"AlbumsAddAssetsDto\": {\n        \"properties\": {\n          \"albumIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"assetIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"albumIds\",\n          \"assetIds\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AlbumsAddAssetsResponseDto\": {\n        \"properties\": {\n          \"error\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/BulkIdErrorReason\"\n              }\n            ]\n          },\n          \"success\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"success\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AlbumsResponse\": {\n        \"properties\": {\n          \"defaultAssetOrder\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetOrder\"\n              }\n            ],\n            \"default\": \"desc\"\n          }\n        },\n        \"required\": [\n          \"defaultAssetOrder\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AlbumsUpdate\": {\n        \"properties\": {\n          \"defaultAssetOrder\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetOrder\"\n              }\n            ]\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"AssetBulkDeleteDto\": {\n        \"properties\": {\n          \"force\": {\n            \"type\": \"boolean\"\n          },\n          \"ids\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"ids\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetBulkUpdateDto\": {\n        \"properties\": {\n          \"dateTimeOriginal\": {\n            \"type\": \"string\"\n          },\n          \"dateTimeRelative\": {\n            \"type\": \"number\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"duplicateId\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"ids\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"latitude\": {\n            \"type\": \"number\"\n          },\n          \"longitude\": {\n            \"type\": \"number\"\n          },\n          \"rating\": {\n            \"maximum\": 5,\n            \"minimum\": -1,\n            \"type\": \"number\"\n          },\n          \"timeZone\": {\n            \"type\": \"string\"\n          },\n          \"visibility\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetVisibility\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"ids\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetBulkUploadCheckDto\": {\n        \"properties\": {\n          \"assets\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetBulkUploadCheckItem\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"assets\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetBulkUploadCheckItem\": {\n        \"properties\": {\n          \"checksum\": {\n            \"description\": \"base64 or hex encoded sha1 hash\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"checksum\",\n          \"id\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetBulkUploadCheckResponseDto\": {\n        \"properties\": {\n          \"results\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetBulkUploadCheckResult\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"results\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetBulkUploadCheckResult\": {\n        \"properties\": {\n          \"action\": {\n            \"enum\": [\n              \"accept\",\n              \"reject\"\n            ],\n            \"type\": \"string\"\n          },\n          \"assetId\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isTrashed\": {\n            \"type\": \"boolean\"\n          },\n          \"reason\": {\n            \"enum\": [\n              \"duplicate\",\n              \"unsupported-format\"\n            ],\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"action\",\n          \"id\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetCopyDto\": {\n        \"properties\": {\n          \"albums\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          },\n          \"favorite\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          },\n          \"sharedLinks\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          },\n          \"sidecar\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          },\n          \"sourceId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"stack\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          },\n          \"targetId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"sourceId\",\n          \"targetId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetDeltaSyncDto\": {\n        \"properties\": {\n          \"updatedAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"userIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"updatedAfter\",\n          \"userIds\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetDeltaSyncResponseDto\": {\n        \"properties\": {\n          \"deleted\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"needsFullSync\": {\n            \"type\": \"boolean\"\n          },\n          \"upserted\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetResponseDto\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"deleted\",\n          \"needsFullSync\",\n          \"upserted\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetFaceCreateDto\": {\n        \"properties\": {\n          \"assetId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"height\": {\n            \"type\": \"integer\"\n          },\n          \"imageHeight\": {\n            \"type\": \"integer\"\n          },\n          \"imageWidth\": {\n            \"type\": \"integer\"\n          },\n          \"personId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"width\": {\n            \"type\": \"integer\"\n          },\n          \"x\": {\n            \"type\": \"integer\"\n          },\n          \"y\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"assetId\",\n          \"height\",\n          \"imageHeight\",\n          \"imageWidth\",\n          \"personId\",\n          \"width\",\n          \"x\",\n          \"y\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetFaceDeleteDto\": {\n        \"properties\": {\n          \"force\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"force\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetFaceResponseDto\": {\n        \"properties\": {\n          \"boundingBoxX1\": {\n            \"type\": \"integer\"\n          },\n          \"boundingBoxX2\": {\n            \"type\": \"integer\"\n          },\n          \"boundingBoxY1\": {\n            \"type\": \"integer\"\n          },\n          \"boundingBoxY2\": {\n            \"type\": \"integer\"\n          },\n          \"id\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"imageHeight\": {\n            \"type\": \"integer\"\n          },\n          \"imageWidth\": {\n            \"type\": \"integer\"\n          },\n          \"person\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/PersonResponseDto\"\n              }\n            ],\n            \"nullable\": true\n          },\n          \"sourceType\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/SourceType\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"boundingBoxX1\",\n          \"boundingBoxX2\",\n          \"boundingBoxY1\",\n          \"boundingBoxY2\",\n          \"id\",\n          \"imageHeight\",\n          \"imageWidth\",\n          \"person\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetFaceUpdateDto\": {\n        \"properties\": {\n          \"data\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetFaceUpdateItem\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"data\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetFaceUpdateItem\": {\n        \"properties\": {\n          \"assetId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"personId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assetId\",\n          \"personId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetFaceWithoutPersonResponseDto\": {\n        \"properties\": {\n          \"boundingBoxX1\": {\n            \"type\": \"integer\"\n          },\n          \"boundingBoxX2\": {\n            \"type\": \"integer\"\n          },\n          \"boundingBoxY1\": {\n            \"type\": \"integer\"\n          },\n          \"boundingBoxY2\": {\n            \"type\": \"integer\"\n          },\n          \"id\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"imageHeight\": {\n            \"type\": \"integer\"\n          },\n          \"imageWidth\": {\n            \"type\": \"integer\"\n          },\n          \"sourceType\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/SourceType\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"boundingBoxX1\",\n          \"boundingBoxX2\",\n          \"boundingBoxY1\",\n          \"boundingBoxY2\",\n          \"id\",\n          \"imageHeight\",\n          \"imageWidth\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetFullSyncDto\": {\n        \"properties\": {\n          \"lastId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"limit\": {\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          },\n          \"updatedUntil\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"userId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"limit\",\n          \"updatedUntil\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetIdsDto\": {\n        \"properties\": {\n          \"assetIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"assetIds\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetIdsResponseDto\": {\n        \"properties\": {\n          \"assetId\": {\n            \"type\": \"string\"\n          },\n          \"error\": {\n            \"enum\": [\n              \"duplicate\",\n              \"no_permission\",\n              \"not_found\"\n            ],\n            \"type\": \"string\"\n          },\n          \"success\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"assetId\",\n          \"success\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetJobName\": {\n        \"enum\": [\n          \"refresh-faces\",\n          \"refresh-metadata\",\n          \"regenerate-thumbnail\",\n          \"transcode-video\"\n        ],\n        \"type\": \"string\"\n      },\n      \"AssetJobsDto\": {\n        \"properties\": {\n          \"assetIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"name\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetJobName\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"assetIds\",\n          \"name\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetMediaCreateDto\": {\n        \"properties\": {\n          \"assetData\": {\n            \"format\": \"binary\",\n            \"type\": \"string\"\n          },\n          \"deviceAssetId\": {\n            \"type\": \"string\"\n          },\n          \"deviceId\": {\n            \"type\": \"string\"\n          },\n          \"duration\": {\n            \"type\": \"string\"\n          },\n          \"fileCreatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"fileModifiedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"filename\": {\n            \"type\": \"string\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"livePhotoVideoId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"metadata\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetMetadataUpsertItemDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"sidecarData\": {\n            \"format\": \"binary\",\n            \"type\": \"string\"\n          },\n          \"visibility\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetVisibility\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"assetData\",\n          \"deviceAssetId\",\n          \"deviceId\",\n          \"fileCreatedAt\",\n          \"fileModifiedAt\",\n          \"metadata\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetMediaReplaceDto\": {\n        \"properties\": {\n          \"assetData\": {\n            \"format\": \"binary\",\n            \"type\": \"string\"\n          },\n          \"deviceAssetId\": {\n            \"type\": \"string\"\n          },\n          \"deviceId\": {\n            \"type\": \"string\"\n          },\n          \"duration\": {\n            \"type\": \"string\"\n          },\n          \"fileCreatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"fileModifiedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"filename\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assetData\",\n          \"deviceAssetId\",\n          \"deviceId\",\n          \"fileCreatedAt\",\n          \"fileModifiedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetMediaResponseDto\": {\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"status\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetMediaStatus\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"id\",\n          \"status\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetMediaSize\": {\n        \"enum\": [\n          \"fullsize\",\n          \"preview\",\n          \"thumbnail\"\n        ],\n        \"type\": \"string\"\n      },\n      \"AssetMediaStatus\": {\n        \"enum\": [\n          \"created\",\n          \"replaced\",\n          \"duplicate\"\n        ],\n        \"type\": \"string\"\n      },\n      \"AssetMetadataKey\": {\n        \"enum\": [\n          \"mobile-app\"\n        ],\n        \"type\": \"string\"\n      },\n      \"AssetMetadataResponseDto\": {\n        \"properties\": {\n          \"key\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetMetadataKey\"\n              }\n            ]\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"value\": {\n            \"type\": \"object\"\n          }\n        },\n        \"required\": [\n          \"key\",\n          \"updatedAt\",\n          \"value\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetMetadataUpsertDto\": {\n        \"properties\": {\n          \"items\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetMetadataUpsertItemDto\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"items\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetMetadataUpsertItemDto\": {\n        \"properties\": {\n          \"key\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetMetadataKey\"\n              }\n            ]\n          },\n          \"value\": {\n            \"type\": \"object\"\n          }\n        },\n        \"required\": [\n          \"key\",\n          \"value\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetOcrResponseDto\": {\n        \"properties\": {\n          \"assetId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"boxScore\": {\n            \"description\": \"Confidence score for text detection box\",\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"id\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"text\": {\n            \"description\": \"Recognized text\",\n            \"type\": \"string\"\n          },\n          \"textScore\": {\n            \"description\": \"Confidence score for text recognition\",\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"x1\": {\n            \"description\": \"Normalized x coordinate of box corner 1 (0-1)\",\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"x2\": {\n            \"description\": \"Normalized x coordinate of box corner 2 (0-1)\",\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"x3\": {\n            \"description\": \"Normalized x coordinate of box corner 3 (0-1)\",\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"x4\": {\n            \"description\": \"Normalized x coordinate of box corner 4 (0-1)\",\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"y1\": {\n            \"description\": \"Normalized y coordinate of box corner 1 (0-1)\",\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"y2\": {\n            \"description\": \"Normalized y coordinate of box corner 2 (0-1)\",\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"y3\": {\n            \"description\": \"Normalized y coordinate of box corner 3 (0-1)\",\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"y4\": {\n            \"description\": \"Normalized y coordinate of box corner 4 (0-1)\",\n            \"format\": \"double\",\n            \"type\": \"number\"\n          }\n        },\n        \"required\": [\n          \"assetId\",\n          \"boxScore\",\n          \"id\",\n          \"text\",\n          \"textScore\",\n          \"x1\",\n          \"x2\",\n          \"x3\",\n          \"x4\",\n          \"y1\",\n          \"y2\",\n          \"y3\",\n          \"y4\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetOrder\": {\n        \"enum\": [\n          \"asc\",\n          \"desc\"\n        ],\n        \"type\": \"string\"\n      },\n      \"AssetResponseDto\": {\n        \"properties\": {\n          \"checksum\": {\n            \"description\": \"base64 encoded sha1 hash\",\n            \"type\": \"string\"\n          },\n          \"createdAt\": {\n            \"description\": \"The UTC timestamp when the asset was originally uploaded to Immich.\",\n            \"example\": \"2024-01-15T20:30:00.000Z\",\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"deviceAssetId\": {\n            \"type\": \"string\"\n          },\n          \"deviceId\": {\n            \"type\": \"string\"\n          },\n          \"duplicateId\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"duration\": {\n            \"type\": \"string\"\n          },\n          \"exifInfo\": {\n            \"$ref\": \"#/components/schemas/ExifResponseDto\"\n          },\n          \"fileCreatedAt\": {\n            \"description\": \"The actual UTC timestamp when the file was created/captured, preserving timezone information. This is the authoritative timestamp for chronological sorting within timeline groups. Combined with timezone data, this can be used to determine the exact moment the photo was taken.\",\n            \"example\": \"2024-01-15T19:30:00.000Z\",\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"fileModifiedAt\": {\n            \"description\": \"The UTC timestamp when the file was last modified on the filesystem. This reflects the last time the physical file was changed, which may be different from when the photo was originally taken.\",\n            \"example\": \"2024-01-16T10:15:00.000Z\",\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"hasMetadata\": {\n            \"type\": \"boolean\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isArchived\": {\n            \"type\": \"boolean\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"isOffline\": {\n            \"type\": \"boolean\"\n          },\n          \"isTrashed\": {\n            \"type\": \"boolean\"\n          },\n          \"libraryId\": {\n            \"deprecated\": true,\n            \"nullable\": true,\n            \"type\": \"string\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v1\",\n                \"state\": \"Added\"\n              },\n              {\n                \"version\": \"v1\",\n                \"state\": \"Deprecated\"\n              }\n            ],\n            \"x-immich-state\": \"Deprecated\"\n          },\n          \"livePhotoVideoId\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"localDateTime\": {\n            \"description\": \"The local date and time when the photo/video was taken, derived from EXIF metadata. This represents the photographer's local time regardless of timezone, stored as a timezone-agnostic timestamp. Used for timeline grouping by \\\"local\\\" days and months.\",\n            \"example\": \"2024-01-15T14:30:00.000Z\",\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"originalFileName\": {\n            \"type\": \"string\"\n          },\n          \"originalMimeType\": {\n            \"type\": \"string\"\n          },\n          \"originalPath\": {\n            \"type\": \"string\"\n          },\n          \"owner\": {\n            \"$ref\": \"#/components/schemas/UserResponseDto\"\n          },\n          \"ownerId\": {\n            \"type\": \"string\"\n          },\n          \"people\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/PersonWithFacesResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"resized\": {\n            \"deprecated\": true,\n            \"type\": \"boolean\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v1\",\n                \"state\": \"Added\"\n              },\n              {\n                \"version\": \"v1.113.0\",\n                \"state\": \"Deprecated\"\n              }\n            ],\n            \"x-immich-state\": \"Deprecated\"\n          },\n          \"stack\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetStackResponseDto\"\n              }\n            ],\n            \"nullable\": true\n          },\n          \"tags\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/TagResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"thumbhash\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetTypeEnum\"\n              }\n            ]\n          },\n          \"unassignedFaces\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetFaceWithoutPersonResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"updatedAt\": {\n            \"description\": \"The UTC timestamp when the asset record was last updated in the database. This is automatically maintained by the database and reflects when any field in the asset was last modified.\",\n            \"example\": \"2024-01-16T12:45:30.000Z\",\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"visibility\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetVisibility\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"checksum\",\n          \"createdAt\",\n          \"deviceAssetId\",\n          \"deviceId\",\n          \"duration\",\n          \"fileCreatedAt\",\n          \"fileModifiedAt\",\n          \"hasMetadata\",\n          \"id\",\n          \"isArchived\",\n          \"isFavorite\",\n          \"isOffline\",\n          \"isTrashed\",\n          \"localDateTime\",\n          \"originalFileName\",\n          \"originalPath\",\n          \"ownerId\",\n          \"thumbhash\",\n          \"type\",\n          \"updatedAt\",\n          \"visibility\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetStackResponseDto\": {\n        \"properties\": {\n          \"assetCount\": {\n            \"type\": \"integer\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"primaryAssetId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assetCount\",\n          \"id\",\n          \"primaryAssetId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetStatsResponseDto\": {\n        \"properties\": {\n          \"images\": {\n            \"type\": \"integer\"\n          },\n          \"total\": {\n            \"type\": \"integer\"\n          },\n          \"videos\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"images\",\n          \"total\",\n          \"videos\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AssetTypeEnum\": {\n        \"enum\": [\n          \"IMAGE\",\n          \"VIDEO\",\n          \"AUDIO\",\n          \"OTHER\"\n        ],\n        \"type\": \"string\"\n      },\n      \"AssetVisibility\": {\n        \"enum\": [\n          \"archive\",\n          \"timeline\",\n          \"hidden\",\n          \"locked\"\n        ],\n        \"type\": \"string\"\n      },\n      \"AudioCodec\": {\n        \"enum\": [\n          \"mp3\",\n          \"aac\",\n          \"libopus\",\n          \"pcm_s16le\"\n        ],\n        \"type\": \"string\"\n      },\n      \"AuthStatusResponseDto\": {\n        \"properties\": {\n          \"expiresAt\": {\n            \"type\": \"string\"\n          },\n          \"isElevated\": {\n            \"type\": \"boolean\"\n          },\n          \"password\": {\n            \"type\": \"boolean\"\n          },\n          \"pinCode\": {\n            \"type\": \"boolean\"\n          },\n          \"pinExpiresAt\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"isElevated\",\n          \"password\",\n          \"pinCode\"\n        ],\n        \"type\": \"object\"\n      },\n      \"AvatarUpdate\": {\n        \"properties\": {\n          \"color\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserAvatarColor\"\n              }\n            ]\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"BulkIdErrorReason\": {\n        \"enum\": [\n          \"duplicate\",\n          \"no_permission\",\n          \"not_found\",\n          \"unknown\"\n        ],\n        \"type\": \"string\"\n      },\n      \"BulkIdResponseDto\": {\n        \"properties\": {\n          \"error\": {\n            \"enum\": [\n              \"duplicate\",\n              \"no_permission\",\n              \"not_found\",\n              \"unknown\"\n            ],\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"success\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"id\",\n          \"success\"\n        ],\n        \"type\": \"object\"\n      },\n      \"BulkIdsDto\": {\n        \"properties\": {\n          \"ids\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"ids\"\n        ],\n        \"type\": \"object\"\n      },\n      \"CLIPConfig\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"modelName\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"modelName\"\n        ],\n        \"type\": \"object\"\n      },\n      \"CQMode\": {\n        \"enum\": [\n          \"auto\",\n          \"cqp\",\n          \"icq\"\n        ],\n        \"type\": \"string\"\n      },\n      \"CastResponse\": {\n        \"properties\": {\n          \"gCastEnabled\": {\n            \"default\": false,\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"gCastEnabled\"\n        ],\n        \"type\": \"object\"\n      },\n      \"CastUpdate\": {\n        \"properties\": {\n          \"gCastEnabled\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"ChangePasswordDto\": {\n        \"properties\": {\n          \"invalidateSessions\": {\n            \"default\": false,\n            \"type\": \"boolean\"\n          },\n          \"newPassword\": {\n            \"example\": \"password\",\n            \"minLength\": 8,\n            \"type\": \"string\"\n          },\n          \"password\": {\n            \"example\": \"password\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"newPassword\",\n          \"password\"\n        ],\n        \"type\": \"object\"\n      },\n      \"CheckExistingAssetsDto\": {\n        \"properties\": {\n          \"deviceAssetIds\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"minItems\": 1,\n            \"type\": \"array\"\n          },\n          \"deviceId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"deviceAssetIds\",\n          \"deviceId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"CheckExistingAssetsResponseDto\": {\n        \"properties\": {\n          \"existingIds\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"existingIds\"\n        ],\n        \"type\": \"object\"\n      },\n      \"Colorspace\": {\n        \"enum\": [\n          \"srgb\",\n          \"p3\"\n        ],\n        \"type\": \"string\"\n      },\n      \"ContributorCountResponseDto\": {\n        \"properties\": {\n          \"assetCount\": {\n            \"type\": \"integer\"\n          },\n          \"userId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assetCount\",\n          \"userId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"CreateAlbumDto\": {\n        \"properties\": {\n          \"albumName\": {\n            \"type\": \"string\"\n          },\n          \"albumUsers\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AlbumUserCreateDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"assetIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"albumName\"\n        ],\n        \"type\": \"object\"\n      },\n      \"CreateLibraryDto\": {\n        \"properties\": {\n          \"exclusionPatterns\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"maxItems\": 128,\n            \"type\": \"array\",\n            \"uniqueItems\": true\n          },\n          \"importPaths\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"maxItems\": 128,\n            \"type\": \"array\",\n            \"uniqueItems\": true\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"ownerId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"ownerId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"CreateProfileImageDto\": {\n        \"properties\": {\n          \"file\": {\n            \"format\": \"binary\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"file\"\n        ],\n        \"type\": \"object\"\n      },\n      \"CreateProfileImageResponseDto\": {\n        \"properties\": {\n          \"profileChangedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"profileImagePath\": {\n            \"type\": \"string\"\n          },\n          \"userId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"profileChangedAt\",\n          \"profileImagePath\",\n          \"userId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"DatabaseBackupConfig\": {\n        \"properties\": {\n          \"cronExpression\": {\n            \"type\": \"string\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"keepLastAmount\": {\n            \"minimum\": 1,\n            \"type\": \"number\"\n          }\n        },\n        \"required\": [\n          \"cronExpression\",\n          \"enabled\",\n          \"keepLastAmount\"\n        ],\n        \"type\": \"object\"\n      },\n      \"DownloadArchiveInfo\": {\n        \"properties\": {\n          \"assetIds\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"size\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"assetIds\",\n          \"size\"\n        ],\n        \"type\": \"object\"\n      },\n      \"DownloadInfoDto\": {\n        \"properties\": {\n          \"albumId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"archiveSize\": {\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          },\n          \"assetIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"userId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"DownloadResponse\": {\n        \"properties\": {\n          \"archiveSize\": {\n            \"type\": \"integer\"\n          },\n          \"includeEmbeddedVideos\": {\n            \"default\": false,\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"archiveSize\",\n          \"includeEmbeddedVideos\"\n        ],\n        \"type\": \"object\"\n      },\n      \"DownloadResponseDto\": {\n        \"properties\": {\n          \"archives\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/DownloadArchiveInfo\"\n            },\n            \"type\": \"array\"\n          },\n          \"totalSize\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"archives\",\n          \"totalSize\"\n        ],\n        \"type\": \"object\"\n      },\n      \"DownloadUpdate\": {\n        \"properties\": {\n          \"archiveSize\": {\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          },\n          \"includeEmbeddedVideos\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"DuplicateDetectionConfig\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"maxDistance\": {\n            \"format\": \"double\",\n            \"maximum\": 0.1,\n            \"minimum\": 0.001,\n            \"type\": \"number\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"maxDistance\"\n        ],\n        \"type\": \"object\"\n      },\n      \"DuplicateResponseDto\": {\n        \"properties\": {\n          \"assets\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"duplicateId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assets\",\n          \"duplicateId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"EmailNotificationsResponse\": {\n        \"properties\": {\n          \"albumInvite\": {\n            \"type\": \"boolean\"\n          },\n          \"albumUpdate\": {\n            \"type\": \"boolean\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"albumInvite\",\n          \"albumUpdate\",\n          \"enabled\"\n        ],\n        \"type\": \"object\"\n      },\n      \"EmailNotificationsUpdate\": {\n        \"properties\": {\n          \"albumInvite\": {\n            \"type\": \"boolean\"\n          },\n          \"albumUpdate\": {\n            \"type\": \"boolean\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"ExifResponseDto\": {\n        \"properties\": {\n          \"city\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"country\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"dateTimeOriginal\": {\n            \"default\": null,\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"exifImageHeight\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"exifImageWidth\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"exposureTime\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"fNumber\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"fileSizeInByte\": {\n            \"default\": null,\n            \"format\": \"int64\",\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"focalLength\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"iso\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"latitude\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"lensModel\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"longitude\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"make\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"model\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"modifyDate\": {\n            \"default\": null,\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"orientation\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"projectionType\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"rating\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"state\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"timeZone\": {\n            \"default\": null,\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"FaceDto\": {\n        \"properties\": {\n          \"id\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"id\"\n        ],\n        \"type\": \"object\"\n      },\n      \"FacialRecognitionConfig\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"maxDistance\": {\n            \"format\": \"double\",\n            \"maximum\": 2,\n            \"minimum\": 0.1,\n            \"type\": \"number\"\n          },\n          \"minFaces\": {\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          },\n          \"minScore\": {\n            \"format\": \"double\",\n            \"maximum\": 1,\n            \"minimum\": 0.1,\n            \"type\": \"number\"\n          },\n          \"modelName\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"maxDistance\",\n          \"minFaces\",\n          \"minScore\",\n          \"modelName\"\n        ],\n        \"type\": \"object\"\n      },\n      \"FoldersResponse\": {\n        \"properties\": {\n          \"enabled\": {\n            \"default\": false,\n            \"type\": \"boolean\"\n          },\n          \"sidebarWeb\": {\n            \"default\": false,\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"sidebarWeb\"\n        ],\n        \"type\": \"object\"\n      },\n      \"FoldersUpdate\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"sidebarWeb\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"ImageFormat\": {\n        \"enum\": [\n          \"jpeg\",\n          \"webp\"\n        ],\n        \"type\": \"string\"\n      },\n      \"JobCreateDto\": {\n        \"properties\": {\n          \"name\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/ManualJobName\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"name\"\n        ],\n        \"type\": \"object\"\n      },\n      \"JobName\": {\n        \"enum\": [\n          \"AssetDelete\",\n          \"AssetDeleteCheck\",\n          \"AssetDetectFacesQueueAll\",\n          \"AssetDetectFaces\",\n          \"AssetDetectDuplicatesQueueAll\",\n          \"AssetDetectDuplicates\",\n          \"AssetEncodeVideoQueueAll\",\n          \"AssetEncodeVideo\",\n          \"AssetEmptyTrash\",\n          \"AssetExtractMetadataQueueAll\",\n          \"AssetExtractMetadata\",\n          \"AssetFileMigration\",\n          \"AssetGenerateThumbnailsQueueAll\",\n          \"AssetGenerateThumbnails\",\n          \"AuditLogCleanup\",\n          \"AuditTableCleanup\",\n          \"DatabaseBackup\",\n          \"FacialRecognitionQueueAll\",\n          \"FacialRecognition\",\n          \"FileDelete\",\n          \"FileMigrationQueueAll\",\n          \"LibraryDeleteCheck\",\n          \"LibraryDelete\",\n          \"LibraryRemoveAsset\",\n          \"LibraryScanAssetsQueueAll\",\n          \"LibrarySyncAssets\",\n          \"LibrarySyncFilesQueueAll\",\n          \"LibrarySyncFiles\",\n          \"LibraryScanQueueAll\",\n          \"MemoryCleanup\",\n          \"MemoryGenerate\",\n          \"NotificationsCleanup\",\n          \"NotifyUserSignup\",\n          \"NotifyAlbumInvite\",\n          \"NotifyAlbumUpdate\",\n          \"UserDelete\",\n          \"UserDeleteCheck\",\n          \"UserSyncUsage\",\n          \"PersonCleanup\",\n          \"PersonFileMigration\",\n          \"PersonGenerateThumbnail\",\n          \"SessionCleanup\",\n          \"SendMail\",\n          \"SidecarQueueAll\",\n          \"SidecarCheck\",\n          \"SidecarWrite\",\n          \"SmartSearchQueueAll\",\n          \"SmartSearch\",\n          \"StorageTemplateMigration\",\n          \"StorageTemplateMigrationSingle\",\n          \"TagCleanup\",\n          \"VersionCheck\",\n          \"OcrQueueAll\",\n          \"Ocr\",\n          \"WorkflowRun\"\n        ],\n        \"type\": \"string\"\n      },\n      \"JobSettingsDto\": {\n        \"properties\": {\n          \"concurrency\": {\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"concurrency\"\n        ],\n        \"type\": \"object\"\n      },\n      \"LibraryResponseDto\": {\n        \"properties\": {\n          \"assetCount\": {\n            \"type\": \"integer\"\n          },\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"exclusionPatterns\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"importPaths\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"ownerId\": {\n            \"type\": \"string\"\n          },\n          \"refreshedAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assetCount\",\n          \"createdAt\",\n          \"exclusionPatterns\",\n          \"id\",\n          \"importPaths\",\n          \"name\",\n          \"ownerId\",\n          \"refreshedAt\",\n          \"updatedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"LibraryStatsResponseDto\": {\n        \"properties\": {\n          \"photos\": {\n            \"default\": 0,\n            \"type\": \"integer\"\n          },\n          \"total\": {\n            \"default\": 0,\n            \"type\": \"integer\"\n          },\n          \"usage\": {\n            \"default\": 0,\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"videos\": {\n            \"default\": 0,\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"photos\",\n          \"total\",\n          \"usage\",\n          \"videos\"\n        ],\n        \"type\": \"object\"\n      },\n      \"LicenseKeyDto\": {\n        \"properties\": {\n          \"activationKey\": {\n            \"type\": \"string\"\n          },\n          \"licenseKey\": {\n            \"pattern\": \"/IM(SV|CL)(-[\\\\dA-Za-z]{4}){8}/\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"activationKey\",\n          \"licenseKey\"\n        ],\n        \"type\": \"object\"\n      },\n      \"LicenseResponseDto\": {\n        \"properties\": {\n          \"activatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"activationKey\": {\n            \"type\": \"string\"\n          },\n          \"licenseKey\": {\n            \"pattern\": \"/IM(SV|CL)(-[\\\\dA-Za-z]{4}){8}/\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"activatedAt\",\n          \"activationKey\",\n          \"licenseKey\"\n        ],\n        \"type\": \"object\"\n      },\n      \"LogLevel\": {\n        \"enum\": [\n          \"verbose\",\n          \"debug\",\n          \"log\",\n          \"warn\",\n          \"error\",\n          \"fatal\"\n        ],\n        \"type\": \"string\"\n      },\n      \"LoginCredentialDto\": {\n        \"properties\": {\n          \"email\": {\n            \"example\": \"testuser@email.com\",\n            \"format\": \"email\",\n            \"type\": \"string\"\n          },\n          \"password\": {\n            \"example\": \"password\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"email\",\n          \"password\"\n        ],\n        \"type\": \"object\"\n      },\n      \"LoginResponseDto\": {\n        \"properties\": {\n          \"accessToken\": {\n            \"type\": \"string\"\n          },\n          \"isAdmin\": {\n            \"type\": \"boolean\"\n          },\n          \"isOnboarded\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"profileImagePath\": {\n            \"type\": \"string\"\n          },\n          \"shouldChangePassword\": {\n            \"type\": \"boolean\"\n          },\n          \"userEmail\": {\n            \"type\": \"string\"\n          },\n          \"userId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"accessToken\",\n          \"isAdmin\",\n          \"isOnboarded\",\n          \"name\",\n          \"profileImagePath\",\n          \"shouldChangePassword\",\n          \"userEmail\",\n          \"userId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"LogoutResponseDto\": {\n        \"properties\": {\n          \"redirectUri\": {\n            \"type\": \"string\"\n          },\n          \"successful\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"redirectUri\",\n          \"successful\"\n        ],\n        \"type\": \"object\"\n      },\n      \"MachineLearningAvailabilityChecksDto\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"interval\": {\n            \"type\": \"number\"\n          },\n          \"timeout\": {\n            \"type\": \"number\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"interval\",\n          \"timeout\"\n        ],\n        \"type\": \"object\"\n      },\n      \"MaintenanceAction\": {\n        \"enum\": [\n          \"start\",\n          \"end\"\n        ],\n        \"type\": \"string\"\n      },\n      \"MaintenanceAuthDto\": {\n        \"properties\": {\n          \"username\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"username\"\n        ],\n        \"type\": \"object\"\n      },\n      \"MaintenanceLoginDto\": {\n        \"properties\": {\n          \"token\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"ManualJobName\": {\n        \"enum\": [\n          \"person-cleanup\",\n          \"tag-cleanup\",\n          \"user-cleanup\",\n          \"memory-cleanup\",\n          \"memory-create\",\n          \"backup-database\"\n        ],\n        \"type\": \"string\"\n      },\n      \"MapMarkerResponseDto\": {\n        \"properties\": {\n          \"city\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"country\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"lat\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"lon\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"state\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"city\",\n          \"country\",\n          \"id\",\n          \"lat\",\n          \"lon\",\n          \"state\"\n        ],\n        \"type\": \"object\"\n      },\n      \"MapReverseGeocodeResponseDto\": {\n        \"properties\": {\n          \"city\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"country\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"state\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"city\",\n          \"country\",\n          \"state\"\n        ],\n        \"type\": \"object\"\n      },\n      \"MemoriesResponse\": {\n        \"properties\": {\n          \"duration\": {\n            \"default\": 5,\n            \"type\": \"integer\"\n          },\n          \"enabled\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"duration\",\n          \"enabled\"\n        ],\n        \"type\": \"object\"\n      },\n      \"MemoriesUpdate\": {\n        \"properties\": {\n          \"duration\": {\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"MemoryCreateDto\": {\n        \"properties\": {\n          \"assetIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"data\": {\n            \"$ref\": \"#/components/schemas/OnThisDayDto\"\n          },\n          \"isSaved\": {\n            \"type\": \"boolean\"\n          },\n          \"memoryAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"seenAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/MemoryType\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"data\",\n          \"memoryAt\",\n          \"type\"\n        ],\n        \"type\": \"object\"\n      },\n      \"MemoryResponseDto\": {\n        \"properties\": {\n          \"assets\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"data\": {\n            \"$ref\": \"#/components/schemas/OnThisDayDto\"\n          },\n          \"deletedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"hideAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isSaved\": {\n            \"type\": \"boolean\"\n          },\n          \"memoryAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"ownerId\": {\n            \"type\": \"string\"\n          },\n          \"seenAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"showAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/MemoryType\"\n              }\n            ]\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assets\",\n          \"createdAt\",\n          \"data\",\n          \"id\",\n          \"isSaved\",\n          \"memoryAt\",\n          \"ownerId\",\n          \"type\",\n          \"updatedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"MemorySearchOrder\": {\n        \"enum\": [\n          \"asc\",\n          \"desc\",\n          \"random\"\n        ],\n        \"type\": \"string\"\n      },\n      \"MemoryStatisticsResponseDto\": {\n        \"properties\": {\n          \"total\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"total\"\n        ],\n        \"type\": \"object\"\n      },\n      \"MemoryType\": {\n        \"enum\": [\n          \"on_this_day\"\n        ],\n        \"type\": \"string\"\n      },\n      \"MemoryUpdateDto\": {\n        \"properties\": {\n          \"isSaved\": {\n            \"type\": \"boolean\"\n          },\n          \"memoryAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"seenAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"MergePersonDto\": {\n        \"properties\": {\n          \"ids\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"ids\"\n        ],\n        \"type\": \"object\"\n      },\n      \"MetadataSearchDto\": {\n        \"properties\": {\n          \"albumIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"checksum\": {\n            \"type\": \"string\"\n          },\n          \"city\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"country\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"createdAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"createdBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"deviceAssetId\": {\n            \"type\": \"string\"\n          },\n          \"deviceId\": {\n            \"type\": \"string\"\n          },\n          \"encodedVideoPath\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"isEncoded\": {\n            \"type\": \"boolean\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"isMotion\": {\n            \"type\": \"boolean\"\n          },\n          \"isNotInAlbum\": {\n            \"type\": \"boolean\"\n          },\n          \"isOffline\": {\n            \"type\": \"boolean\"\n          },\n          \"lensModel\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"libraryId\": {\n            \"format\": \"uuid\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"make\": {\n            \"type\": \"string\"\n          },\n          \"model\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"ocr\": {\n            \"type\": \"string\"\n          },\n          \"order\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetOrder\"\n              }\n            ],\n            \"default\": \"desc\"\n          },\n          \"originalFileName\": {\n            \"type\": \"string\"\n          },\n          \"originalPath\": {\n            \"type\": \"string\"\n          },\n          \"page\": {\n            \"minimum\": 1,\n            \"type\": \"number\"\n          },\n          \"personIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"previewPath\": {\n            \"type\": \"string\"\n          },\n          \"rating\": {\n            \"maximum\": 5,\n            \"minimum\": -1,\n            \"type\": \"number\"\n          },\n          \"size\": {\n            \"maximum\": 1000,\n            \"minimum\": 1,\n            \"type\": \"number\"\n          },\n          \"state\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"tagIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"nullable\": true,\n            \"type\": \"array\"\n          },\n          \"takenAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"takenBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"thumbnailPath\": {\n            \"type\": \"string\"\n          },\n          \"trashedAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"trashedBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetTypeEnum\"\n              }\n            ]\n          },\n          \"updatedAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"updatedBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"visibility\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetVisibility\"\n              }\n            ]\n          },\n          \"withDeleted\": {\n            \"type\": \"boolean\"\n          },\n          \"withExif\": {\n            \"type\": \"boolean\"\n          },\n          \"withPeople\": {\n            \"type\": \"boolean\"\n          },\n          \"withStacked\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"NotificationCreateDto\": {\n        \"properties\": {\n          \"data\": {\n            \"type\": \"object\"\n          },\n          \"description\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"level\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/NotificationLevel\"\n              }\n            ]\n          },\n          \"readAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/NotificationType\"\n              }\n            ]\n          },\n          \"userId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"title\",\n          \"userId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"NotificationDeleteAllDto\": {\n        \"properties\": {\n          \"ids\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"ids\"\n        ],\n        \"type\": \"object\"\n      },\n      \"NotificationDto\": {\n        \"properties\": {\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"data\": {\n            \"type\": \"object\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"level\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/NotificationLevel\"\n              }\n            ]\n          },\n          \"readAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/NotificationType\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"createdAt\",\n          \"id\",\n          \"level\",\n          \"title\",\n          \"type\"\n        ],\n        \"type\": \"object\"\n      },\n      \"NotificationLevel\": {\n        \"enum\": [\n          \"success\",\n          \"error\",\n          \"warning\",\n          \"info\"\n        ],\n        \"type\": \"string\"\n      },\n      \"NotificationType\": {\n        \"enum\": [\n          \"JobFailed\",\n          \"BackupFailed\",\n          \"SystemMessage\",\n          \"AlbumInvite\",\n          \"AlbumUpdate\",\n          \"Custom\"\n        ],\n        \"type\": \"string\"\n      },\n      \"NotificationUpdateAllDto\": {\n        \"properties\": {\n          \"ids\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"readAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"ids\"\n        ],\n        \"type\": \"object\"\n      },\n      \"NotificationUpdateDto\": {\n        \"properties\": {\n          \"readAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"OAuthAuthorizeResponseDto\": {\n        \"properties\": {\n          \"url\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"url\"\n        ],\n        \"type\": \"object\"\n      },\n      \"OAuthCallbackDto\": {\n        \"properties\": {\n          \"codeVerifier\": {\n            \"type\": \"string\"\n          },\n          \"state\": {\n            \"type\": \"string\"\n          },\n          \"url\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"url\"\n        ],\n        \"type\": \"object\"\n      },\n      \"OAuthConfigDto\": {\n        \"properties\": {\n          \"codeChallenge\": {\n            \"type\": \"string\"\n          },\n          \"redirectUri\": {\n            \"type\": \"string\"\n          },\n          \"state\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"redirectUri\"\n        ],\n        \"type\": \"object\"\n      },\n      \"OAuthTokenEndpointAuthMethod\": {\n        \"enum\": [\n          \"client_secret_post\",\n          \"client_secret_basic\"\n        ],\n        \"type\": \"string\"\n      },\n      \"OcrConfig\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"maxResolution\": {\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          },\n          \"minDetectionScore\": {\n            \"format\": \"double\",\n            \"maximum\": 1,\n            \"minimum\": 0.1,\n            \"type\": \"number\"\n          },\n          \"minRecognitionScore\": {\n            \"format\": \"double\",\n            \"maximum\": 1,\n            \"minimum\": 0.1,\n            \"type\": \"number\"\n          },\n          \"modelName\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"maxResolution\",\n          \"minDetectionScore\",\n          \"minRecognitionScore\",\n          \"modelName\"\n        ],\n        \"type\": \"object\"\n      },\n      \"OnThisDayDto\": {\n        \"properties\": {\n          \"year\": {\n            \"minimum\": 1,\n            \"type\": \"number\"\n          }\n        },\n        \"required\": [\n          \"year\"\n        ],\n        \"type\": \"object\"\n      },\n      \"OnboardingDto\": {\n        \"properties\": {\n          \"isOnboarded\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"isOnboarded\"\n        ],\n        \"type\": \"object\"\n      },\n      \"OnboardingResponseDto\": {\n        \"properties\": {\n          \"isOnboarded\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"isOnboarded\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PartnerCreateDto\": {\n        \"properties\": {\n          \"sharedWithId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"sharedWithId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PartnerDirection\": {\n        \"enum\": [\n          \"shared-by\",\n          \"shared-with\"\n        ],\n        \"type\": \"string\"\n      },\n      \"PartnerResponseDto\": {\n        \"properties\": {\n          \"avatarColor\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserAvatarColor\"\n              }\n            ]\n          },\n          \"email\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"inTimeline\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"profileChangedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"profileImagePath\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"avatarColor\",\n          \"email\",\n          \"id\",\n          \"name\",\n          \"profileChangedAt\",\n          \"profileImagePath\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PartnerUpdateDto\": {\n        \"properties\": {\n          \"inTimeline\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"inTimeline\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PeopleResponse\": {\n        \"properties\": {\n          \"enabled\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          },\n          \"sidebarWeb\": {\n            \"default\": false,\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"sidebarWeb\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PeopleResponseDto\": {\n        \"properties\": {\n          \"hasNextPage\": {\n            \"type\": \"boolean\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v1.110.0\",\n                \"state\": \"Added\"\n              },\n              {\n                \"version\": \"v2\",\n                \"state\": \"Stable\"\n              }\n            ],\n            \"x-immich-state\": \"Stable\"\n          },\n          \"hidden\": {\n            \"type\": \"integer\"\n          },\n          \"people\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/PersonResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"total\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"hidden\",\n          \"people\",\n          \"total\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PeopleUpdate\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"sidebarWeb\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"PeopleUpdateDto\": {\n        \"properties\": {\n          \"people\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/PeopleUpdateItem\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"people\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PeopleUpdateItem\": {\n        \"properties\": {\n          \"birthDate\": {\n            \"description\": \"Person date of birth.\\nNote: the mobile app cannot currently set the birth date to null.\",\n            \"format\": \"date\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"color\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"featureFaceAssetId\": {\n            \"description\": \"Asset is used to get the feature face thumbnail.\",\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"description\": \"Person id.\",\n            \"type\": \"string\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"isHidden\": {\n            \"description\": \"Person visibility\",\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"description\": \"Person name.\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"id\"\n        ],\n        \"type\": \"object\"\n      },\n      \"Permission\": {\n        \"enum\": [\n          \"all\",\n          \"activity.create\",\n          \"activity.read\",\n          \"activity.update\",\n          \"activity.delete\",\n          \"activity.statistics\",\n          \"apiKey.create\",\n          \"apiKey.read\",\n          \"apiKey.update\",\n          \"apiKey.delete\",\n          \"asset.read\",\n          \"asset.update\",\n          \"asset.delete\",\n          \"asset.statistics\",\n          \"asset.share\",\n          \"asset.view\",\n          \"asset.download\",\n          \"asset.upload\",\n          \"asset.replace\",\n          \"asset.copy\",\n          \"album.create\",\n          \"album.read\",\n          \"album.update\",\n          \"album.delete\",\n          \"album.statistics\",\n          \"album.share\",\n          \"album.download\",\n          \"albumAsset.create\",\n          \"albumAsset.delete\",\n          \"albumUser.create\",\n          \"albumUser.update\",\n          \"albumUser.delete\",\n          \"auth.changePassword\",\n          \"authDevice.delete\",\n          \"archive.read\",\n          \"duplicate.read\",\n          \"duplicate.delete\",\n          \"face.create\",\n          \"face.read\",\n          \"face.update\",\n          \"face.delete\",\n          \"job.create\",\n          \"job.read\",\n          \"library.create\",\n          \"library.read\",\n          \"library.update\",\n          \"library.delete\",\n          \"library.statistics\",\n          \"timeline.read\",\n          \"timeline.download\",\n          \"maintenance\",\n          \"memory.create\",\n          \"memory.read\",\n          \"memory.update\",\n          \"memory.delete\",\n          \"memory.statistics\",\n          \"memoryAsset.create\",\n          \"memoryAsset.delete\",\n          \"notification.create\",\n          \"notification.read\",\n          \"notification.update\",\n          \"notification.delete\",\n          \"partner.create\",\n          \"partner.read\",\n          \"partner.update\",\n          \"partner.delete\",\n          \"person.create\",\n          \"person.read\",\n          \"person.update\",\n          \"person.delete\",\n          \"person.statistics\",\n          \"person.merge\",\n          \"person.reassign\",\n          \"pinCode.create\",\n          \"pinCode.update\",\n          \"pinCode.delete\",\n          \"plugin.create\",\n          \"plugin.read\",\n          \"plugin.update\",\n          \"plugin.delete\",\n          \"server.about\",\n          \"server.apkLinks\",\n          \"server.storage\",\n          \"server.statistics\",\n          \"server.versionCheck\",\n          \"serverLicense.read\",\n          \"serverLicense.update\",\n          \"serverLicense.delete\",\n          \"session.create\",\n          \"session.read\",\n          \"session.update\",\n          \"session.delete\",\n          \"session.lock\",\n          \"sharedLink.create\",\n          \"sharedLink.read\",\n          \"sharedLink.update\",\n          \"sharedLink.delete\",\n          \"stack.create\",\n          \"stack.read\",\n          \"stack.update\",\n          \"stack.delete\",\n          \"sync.stream\",\n          \"syncCheckpoint.read\",\n          \"syncCheckpoint.update\",\n          \"syncCheckpoint.delete\",\n          \"systemConfig.read\",\n          \"systemConfig.update\",\n          \"systemMetadata.read\",\n          \"systemMetadata.update\",\n          \"tag.create\",\n          \"tag.read\",\n          \"tag.update\",\n          \"tag.delete\",\n          \"tag.asset\",\n          \"user.read\",\n          \"user.update\",\n          \"userLicense.create\",\n          \"userLicense.read\",\n          \"userLicense.update\",\n          \"userLicense.delete\",\n          \"userOnboarding.read\",\n          \"userOnboarding.update\",\n          \"userOnboarding.delete\",\n          \"userPreference.read\",\n          \"userPreference.update\",\n          \"userProfileImage.create\",\n          \"userProfileImage.read\",\n          \"userProfileImage.update\",\n          \"userProfileImage.delete\",\n          \"queue.read\",\n          \"queue.update\",\n          \"queueJob.create\",\n          \"queueJob.read\",\n          \"queueJob.update\",\n          \"queueJob.delete\",\n          \"workflow.create\",\n          \"workflow.read\",\n          \"workflow.update\",\n          \"workflow.delete\",\n          \"adminUser.create\",\n          \"adminUser.read\",\n          \"adminUser.update\",\n          \"adminUser.delete\",\n          \"adminSession.read\",\n          \"adminAuth.unlinkAll\"\n        ],\n        \"type\": \"string\"\n      },\n      \"PersonCreateDto\": {\n        \"properties\": {\n          \"birthDate\": {\n            \"description\": \"Person date of birth.\\nNote: the mobile app cannot currently set the birth date to null.\",\n            \"format\": \"date\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"color\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"isHidden\": {\n            \"description\": \"Person visibility\",\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"description\": \"Person name.\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"PersonResponseDto\": {\n        \"properties\": {\n          \"birthDate\": {\n            \"format\": \"date\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"color\": {\n            \"type\": \"string\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v1.126.0\",\n                \"state\": \"Added\"\n              },\n              {\n                \"version\": \"v2\",\n                \"state\": \"Stable\"\n              }\n            ],\n            \"x-immich-state\": \"Stable\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v1.126.0\",\n                \"state\": \"Added\"\n              },\n              {\n                \"version\": \"v2\",\n                \"state\": \"Stable\"\n              }\n            ],\n            \"x-immich-state\": \"Stable\"\n          },\n          \"isHidden\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"thumbnailPath\": {\n            \"type\": \"string\"\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v1.107.0\",\n                \"state\": \"Added\"\n              },\n              {\n                \"version\": \"v2\",\n                \"state\": \"Stable\"\n              }\n            ],\n            \"x-immich-state\": \"Stable\"\n          }\n        },\n        \"required\": [\n          \"birthDate\",\n          \"id\",\n          \"isHidden\",\n          \"name\",\n          \"thumbnailPath\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PersonStatisticsResponseDto\": {\n        \"properties\": {\n          \"assets\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"assets\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PersonUpdateDto\": {\n        \"properties\": {\n          \"birthDate\": {\n            \"description\": \"Person date of birth.\\nNote: the mobile app cannot currently set the birth date to null.\",\n            \"format\": \"date\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"color\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"featureFaceAssetId\": {\n            \"description\": \"Asset is used to get the feature face thumbnail.\",\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"isHidden\": {\n            \"description\": \"Person visibility\",\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"description\": \"Person name.\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"PersonWithFacesResponseDto\": {\n        \"properties\": {\n          \"birthDate\": {\n            \"format\": \"date\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"color\": {\n            \"type\": \"string\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v1.126.0\",\n                \"state\": \"Added\"\n              },\n              {\n                \"version\": \"v2\",\n                \"state\": \"Stable\"\n              }\n            ],\n            \"x-immich-state\": \"Stable\"\n          },\n          \"faces\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetFaceWithoutPersonResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v1.126.0\",\n                \"state\": \"Added\"\n              },\n              {\n                \"version\": \"v2\",\n                \"state\": \"Stable\"\n              }\n            ],\n            \"x-immich-state\": \"Stable\"\n          },\n          \"isHidden\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"thumbnailPath\": {\n            \"type\": \"string\"\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v1.107.0\",\n                \"state\": \"Added\"\n              },\n              {\n                \"version\": \"v2\",\n                \"state\": \"Stable\"\n              }\n            ],\n            \"x-immich-state\": \"Stable\"\n          }\n        },\n        \"required\": [\n          \"birthDate\",\n          \"faces\",\n          \"id\",\n          \"isHidden\",\n          \"name\",\n          \"thumbnailPath\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PinCodeChangeDto\": {\n        \"properties\": {\n          \"newPinCode\": {\n            \"example\": \"123456\",\n            \"type\": \"string\"\n          },\n          \"password\": {\n            \"type\": \"string\"\n          },\n          \"pinCode\": {\n            \"example\": \"123456\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"newPinCode\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PinCodeResetDto\": {\n        \"properties\": {\n          \"password\": {\n            \"type\": \"string\"\n          },\n          \"pinCode\": {\n            \"example\": \"123456\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"PinCodeSetupDto\": {\n        \"properties\": {\n          \"pinCode\": {\n            \"example\": \"123456\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"pinCode\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PlacesResponseDto\": {\n        \"properties\": {\n          \"admin1name\": {\n            \"type\": \"string\"\n          },\n          \"admin2name\": {\n            \"type\": \"string\"\n          },\n          \"latitude\": {\n            \"type\": \"number\"\n          },\n          \"longitude\": {\n            \"type\": \"number\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"latitude\",\n          \"longitude\",\n          \"name\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PluginActionResponseDto\": {\n        \"properties\": {\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"methodName\": {\n            \"type\": \"string\"\n          },\n          \"pluginId\": {\n            \"type\": \"string\"\n          },\n          \"schema\": {\n            \"nullable\": true,\n            \"type\": \"object\"\n          },\n          \"supportedContexts\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/PluginContextType\"\n            },\n            \"type\": \"array\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"description\",\n          \"id\",\n          \"methodName\",\n          \"pluginId\",\n          \"schema\",\n          \"supportedContexts\",\n          \"title\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PluginContextType\": {\n        \"enum\": [\n          \"asset\",\n          \"album\",\n          \"person\"\n        ],\n        \"type\": \"string\"\n      },\n      \"PluginFilterResponseDto\": {\n        \"properties\": {\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"methodName\": {\n            \"type\": \"string\"\n          },\n          \"pluginId\": {\n            \"type\": \"string\"\n          },\n          \"schema\": {\n            \"nullable\": true,\n            \"type\": \"object\"\n          },\n          \"supportedContexts\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/PluginContextType\"\n            },\n            \"type\": \"array\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"description\",\n          \"id\",\n          \"methodName\",\n          \"pluginId\",\n          \"schema\",\n          \"supportedContexts\",\n          \"title\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PluginResponseDto\": {\n        \"properties\": {\n          \"actions\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/PluginActionResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"author\": {\n            \"type\": \"string\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"filters\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/PluginFilterResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          },\n          \"updatedAt\": {\n            \"type\": \"string\"\n          },\n          \"version\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"actions\",\n          \"author\",\n          \"createdAt\",\n          \"description\",\n          \"filters\",\n          \"id\",\n          \"name\",\n          \"title\",\n          \"updatedAt\",\n          \"version\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PluginTriggerResponseDto\": {\n        \"properties\": {\n          \"contextType\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/PluginContextType\"\n              }\n            ]\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/PluginTriggerType\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"contextType\",\n          \"type\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PluginTriggerType\": {\n        \"enum\": [\n          \"AssetCreate\",\n          \"PersonRecognized\"\n        ],\n        \"type\": \"string\"\n      },\n      \"PurchaseResponse\": {\n        \"properties\": {\n          \"hideBuyButtonUntil\": {\n            \"type\": \"string\"\n          },\n          \"showSupportBadge\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"hideBuyButtonUntil\",\n          \"showSupportBadge\"\n        ],\n        \"type\": \"object\"\n      },\n      \"PurchaseUpdate\": {\n        \"properties\": {\n          \"hideBuyButtonUntil\": {\n            \"type\": \"string\"\n          },\n          \"showSupportBadge\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"QueueCommand\": {\n        \"enum\": [\n          \"start\",\n          \"pause\",\n          \"resume\",\n          \"empty\",\n          \"clear-failed\"\n        ],\n        \"type\": \"string\"\n      },\n      \"QueueCommandDto\": {\n        \"properties\": {\n          \"command\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/QueueCommand\"\n              }\n            ]\n          },\n          \"force\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"command\"\n        ],\n        \"type\": \"object\"\n      },\n      \"QueueDeleteDto\": {\n        \"properties\": {\n          \"failed\": {\n            \"description\": \"If true, will also remove failed jobs from the queue.\",\n            \"type\": \"boolean\",\n            \"x-immich-history\": [\n              {\n                \"version\": \"v2.4.0\",\n                \"state\": \"Added\"\n              },\n              {\n                \"version\": \"v2.4.0\",\n                \"state\": \"Alpha\"\n              }\n            ],\n            \"x-immich-state\": \"Alpha\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"QueueJobResponseDto\": {\n        \"properties\": {\n          \"data\": {\n            \"type\": \"object\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/JobName\"\n              }\n            ]\n          },\n          \"timestamp\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"data\",\n          \"name\",\n          \"timestamp\"\n        ],\n        \"type\": \"object\"\n      },\n      \"QueueJobStatus\": {\n        \"enum\": [\n          \"active\",\n          \"failed\",\n          \"completed\",\n          \"delayed\",\n          \"waiting\",\n          \"paused\"\n        ],\n        \"type\": \"string\"\n      },\n      \"QueueName\": {\n        \"enum\": [\n          \"thumbnailGeneration\",\n          \"metadataExtraction\",\n          \"videoConversion\",\n          \"faceDetection\",\n          \"facialRecognition\",\n          \"smartSearch\",\n          \"duplicateDetection\",\n          \"backgroundTask\",\n          \"storageTemplateMigration\",\n          \"migration\",\n          \"search\",\n          \"sidecar\",\n          \"library\",\n          \"notifications\",\n          \"backupDatabase\",\n          \"ocr\",\n          \"workflow\"\n        ],\n        \"type\": \"string\"\n      },\n      \"QueueResponseDto\": {\n        \"properties\": {\n          \"isPaused\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/QueueName\"\n              }\n            ]\n          },\n          \"statistics\": {\n            \"$ref\": \"#/components/schemas/QueueStatisticsDto\"\n          }\n        },\n        \"required\": [\n          \"isPaused\",\n          \"name\",\n          \"statistics\"\n        ],\n        \"type\": \"object\"\n      },\n      \"QueueResponseLegacyDto\": {\n        \"properties\": {\n          \"jobCounts\": {\n            \"$ref\": \"#/components/schemas/QueueStatisticsDto\"\n          },\n          \"queueStatus\": {\n            \"$ref\": \"#/components/schemas/QueueStatusLegacyDto\"\n          }\n        },\n        \"required\": [\n          \"jobCounts\",\n          \"queueStatus\"\n        ],\n        \"type\": \"object\"\n      },\n      \"QueueStatisticsDto\": {\n        \"properties\": {\n          \"active\": {\n            \"type\": \"integer\"\n          },\n          \"completed\": {\n            \"type\": \"integer\"\n          },\n          \"delayed\": {\n            \"type\": \"integer\"\n          },\n          \"failed\": {\n            \"type\": \"integer\"\n          },\n          \"paused\": {\n            \"type\": \"integer\"\n          },\n          \"waiting\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"active\",\n          \"completed\",\n          \"delayed\",\n          \"failed\",\n          \"paused\",\n          \"waiting\"\n        ],\n        \"type\": \"object\"\n      },\n      \"QueueStatusLegacyDto\": {\n        \"properties\": {\n          \"isActive\": {\n            \"type\": \"boolean\"\n          },\n          \"isPaused\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"isActive\",\n          \"isPaused\"\n        ],\n        \"type\": \"object\"\n      },\n      \"QueueUpdateDto\": {\n        \"properties\": {\n          \"isPaused\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"QueuesResponseLegacyDto\": {\n        \"properties\": {\n          \"backgroundTask\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"backupDatabase\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"duplicateDetection\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"faceDetection\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"facialRecognition\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"library\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"metadataExtraction\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"migration\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"notifications\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"ocr\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"search\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"sidecar\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"smartSearch\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"storageTemplateMigration\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"thumbnailGeneration\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"videoConversion\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          },\n          \"workflow\": {\n            \"$ref\": \"#/components/schemas/QueueResponseLegacyDto\"\n          }\n        },\n        \"required\": [\n          \"backgroundTask\",\n          \"backupDatabase\",\n          \"duplicateDetection\",\n          \"faceDetection\",\n          \"facialRecognition\",\n          \"library\",\n          \"metadataExtraction\",\n          \"migration\",\n          \"notifications\",\n          \"ocr\",\n          \"search\",\n          \"sidecar\",\n          \"smartSearch\",\n          \"storageTemplateMigration\",\n          \"thumbnailGeneration\",\n          \"videoConversion\",\n          \"workflow\"\n        ],\n        \"type\": \"object\"\n      },\n      \"RandomSearchDto\": {\n        \"properties\": {\n          \"albumIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"city\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"country\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"createdAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"createdBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"deviceId\": {\n            \"type\": \"string\"\n          },\n          \"isEncoded\": {\n            \"type\": \"boolean\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"isMotion\": {\n            \"type\": \"boolean\"\n          },\n          \"isNotInAlbum\": {\n            \"type\": \"boolean\"\n          },\n          \"isOffline\": {\n            \"type\": \"boolean\"\n          },\n          \"lensModel\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"libraryId\": {\n            \"format\": \"uuid\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"make\": {\n            \"type\": \"string\"\n          },\n          \"model\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"ocr\": {\n            \"type\": \"string\"\n          },\n          \"personIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"rating\": {\n            \"maximum\": 5,\n            \"minimum\": -1,\n            \"type\": \"number\"\n          },\n          \"size\": {\n            \"maximum\": 1000,\n            \"minimum\": 1,\n            \"type\": \"number\"\n          },\n          \"state\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"tagIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"nullable\": true,\n            \"type\": \"array\"\n          },\n          \"takenAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"takenBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"trashedAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"trashedBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetTypeEnum\"\n              }\n            ]\n          },\n          \"updatedAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"updatedBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"visibility\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetVisibility\"\n              }\n            ]\n          },\n          \"withDeleted\": {\n            \"type\": \"boolean\"\n          },\n          \"withExif\": {\n            \"type\": \"boolean\"\n          },\n          \"withPeople\": {\n            \"type\": \"boolean\"\n          },\n          \"withStacked\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"RatingsResponse\": {\n        \"properties\": {\n          \"enabled\": {\n            \"default\": false,\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"enabled\"\n        ],\n        \"type\": \"object\"\n      },\n      \"RatingsUpdate\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"ReactionLevel\": {\n        \"enum\": [\n          \"album\",\n          \"asset\"\n        ],\n        \"type\": \"string\"\n      },\n      \"ReactionType\": {\n        \"enum\": [\n          \"comment\",\n          \"like\"\n        ],\n        \"type\": \"string\"\n      },\n      \"ReverseGeocodingStateResponseDto\": {\n        \"properties\": {\n          \"lastImportFileName\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"lastUpdate\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"lastImportFileName\",\n          \"lastUpdate\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SearchAlbumResponseDto\": {\n        \"properties\": {\n          \"count\": {\n            \"type\": \"integer\"\n          },\n          \"facets\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/SearchFacetResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"items\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AlbumResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"total\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"count\",\n          \"facets\",\n          \"items\",\n          \"total\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SearchAssetResponseDto\": {\n        \"properties\": {\n          \"count\": {\n            \"type\": \"integer\"\n          },\n          \"facets\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/SearchFacetResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"items\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"nextPage\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"total\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"count\",\n          \"facets\",\n          \"items\",\n          \"nextPage\",\n          \"total\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SearchExploreItem\": {\n        \"properties\": {\n          \"data\": {\n            \"$ref\": \"#/components/schemas/AssetResponseDto\"\n          },\n          \"value\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"data\",\n          \"value\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SearchExploreResponseDto\": {\n        \"properties\": {\n          \"fieldName\": {\n            \"type\": \"string\"\n          },\n          \"items\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/SearchExploreItem\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"fieldName\",\n          \"items\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SearchFacetCountResponseDto\": {\n        \"properties\": {\n          \"count\": {\n            \"type\": \"integer\"\n          },\n          \"value\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"count\",\n          \"value\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SearchFacetResponseDto\": {\n        \"properties\": {\n          \"counts\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/SearchFacetCountResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"fieldName\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"counts\",\n          \"fieldName\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SearchResponseDto\": {\n        \"properties\": {\n          \"albums\": {\n            \"$ref\": \"#/components/schemas/SearchAlbumResponseDto\"\n          },\n          \"assets\": {\n            \"$ref\": \"#/components/schemas/SearchAssetResponseDto\"\n          }\n        },\n        \"required\": [\n          \"albums\",\n          \"assets\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SearchStatisticsResponseDto\": {\n        \"properties\": {\n          \"total\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"total\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SearchSuggestionType\": {\n        \"enum\": [\n          \"country\",\n          \"state\",\n          \"city\",\n          \"camera-make\",\n          \"camera-model\",\n          \"camera-lens-model\"\n        ],\n        \"type\": \"string\"\n      },\n      \"ServerAboutResponseDto\": {\n        \"properties\": {\n          \"build\": {\n            \"type\": \"string\"\n          },\n          \"buildImage\": {\n            \"type\": \"string\"\n          },\n          \"buildImageUrl\": {\n            \"type\": \"string\"\n          },\n          \"buildUrl\": {\n            \"type\": \"string\"\n          },\n          \"exiftool\": {\n            \"type\": \"string\"\n          },\n          \"ffmpeg\": {\n            \"type\": \"string\"\n          },\n          \"imagemagick\": {\n            \"type\": \"string\"\n          },\n          \"libvips\": {\n            \"type\": \"string\"\n          },\n          \"licensed\": {\n            \"type\": \"boolean\"\n          },\n          \"nodejs\": {\n            \"type\": \"string\"\n          },\n          \"repository\": {\n            \"type\": \"string\"\n          },\n          \"repositoryUrl\": {\n            \"type\": \"string\"\n          },\n          \"sourceCommit\": {\n            \"type\": \"string\"\n          },\n          \"sourceRef\": {\n            \"type\": \"string\"\n          },\n          \"sourceUrl\": {\n            \"type\": \"string\"\n          },\n          \"thirdPartyBugFeatureUrl\": {\n            \"type\": \"string\"\n          },\n          \"thirdPartyDocumentationUrl\": {\n            \"type\": \"string\"\n          },\n          \"thirdPartySourceUrl\": {\n            \"type\": \"string\"\n          },\n          \"thirdPartySupportUrl\": {\n            \"type\": \"string\"\n          },\n          \"version\": {\n            \"type\": \"string\"\n          },\n          \"versionUrl\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"licensed\",\n          \"version\",\n          \"versionUrl\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ServerApkLinksDto\": {\n        \"properties\": {\n          \"arm64v8a\": {\n            \"type\": \"string\"\n          },\n          \"armeabiv7a\": {\n            \"type\": \"string\"\n          },\n          \"universal\": {\n            \"type\": \"string\"\n          },\n          \"x86_64\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"arm64v8a\",\n          \"armeabiv7a\",\n          \"universal\",\n          \"x86_64\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ServerConfigDto\": {\n        \"properties\": {\n          \"externalDomain\": {\n            \"type\": \"string\"\n          },\n          \"isInitialized\": {\n            \"type\": \"boolean\"\n          },\n          \"isOnboarded\": {\n            \"type\": \"boolean\"\n          },\n          \"loginPageMessage\": {\n            \"type\": \"string\"\n          },\n          \"maintenanceMode\": {\n            \"type\": \"boolean\"\n          },\n          \"mapDarkStyleUrl\": {\n            \"type\": \"string\"\n          },\n          \"mapLightStyleUrl\": {\n            \"type\": \"string\"\n          },\n          \"oauthButtonText\": {\n            \"type\": \"string\"\n          },\n          \"publicUsers\": {\n            \"type\": \"boolean\"\n          },\n          \"trashDays\": {\n            \"type\": \"integer\"\n          },\n          \"userDeleteDelay\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"externalDomain\",\n          \"isInitialized\",\n          \"isOnboarded\",\n          \"loginPageMessage\",\n          \"maintenanceMode\",\n          \"mapDarkStyleUrl\",\n          \"mapLightStyleUrl\",\n          \"oauthButtonText\",\n          \"publicUsers\",\n          \"trashDays\",\n          \"userDeleteDelay\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ServerFeaturesDto\": {\n        \"properties\": {\n          \"configFile\": {\n            \"type\": \"boolean\"\n          },\n          \"duplicateDetection\": {\n            \"type\": \"boolean\"\n          },\n          \"email\": {\n            \"type\": \"boolean\"\n          },\n          \"facialRecognition\": {\n            \"type\": \"boolean\"\n          },\n          \"importFaces\": {\n            \"type\": \"boolean\"\n          },\n          \"map\": {\n            \"type\": \"boolean\"\n          },\n          \"oauth\": {\n            \"type\": \"boolean\"\n          },\n          \"oauthAutoLaunch\": {\n            \"type\": \"boolean\"\n          },\n          \"ocr\": {\n            \"type\": \"boolean\"\n          },\n          \"passwordLogin\": {\n            \"type\": \"boolean\"\n          },\n          \"reverseGeocoding\": {\n            \"type\": \"boolean\"\n          },\n          \"search\": {\n            \"type\": \"boolean\"\n          },\n          \"sidecar\": {\n            \"type\": \"boolean\"\n          },\n          \"smartSearch\": {\n            \"type\": \"boolean\"\n          },\n          \"trash\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"configFile\",\n          \"duplicateDetection\",\n          \"email\",\n          \"facialRecognition\",\n          \"importFaces\",\n          \"map\",\n          \"oauth\",\n          \"oauthAutoLaunch\",\n          \"ocr\",\n          \"passwordLogin\",\n          \"reverseGeocoding\",\n          \"search\",\n          \"sidecar\",\n          \"smartSearch\",\n          \"trash\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ServerMediaTypesResponseDto\": {\n        \"properties\": {\n          \"image\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"sidecar\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"video\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"image\",\n          \"sidecar\",\n          \"video\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ServerPingResponse\": {\n        \"properties\": {\n          \"res\": {\n            \"example\": \"pong\",\n            \"readOnly\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"res\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ServerStatsResponseDto\": {\n        \"properties\": {\n          \"photos\": {\n            \"default\": 0,\n            \"type\": \"integer\"\n          },\n          \"usage\": {\n            \"default\": 0,\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"usageByUser\": {\n            \"default\": [],\n            \"example\": [\n              {\n                \"photos\": 1,\n                \"videos\": 1,\n                \"diskUsageRaw\": 2,\n                \"usagePhotos\": 1,\n                \"usageVideos\": 1\n              }\n            ],\n            \"items\": {\n              \"$ref\": \"#/components/schemas/UsageByUserDto\"\n            },\n            \"title\": \"Array of usage for each user\",\n            \"type\": \"array\"\n          },\n          \"usagePhotos\": {\n            \"default\": 0,\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"usageVideos\": {\n            \"default\": 0,\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"videos\": {\n            \"default\": 0,\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"photos\",\n          \"usage\",\n          \"usageByUser\",\n          \"usagePhotos\",\n          \"usageVideos\",\n          \"videos\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ServerStorageResponseDto\": {\n        \"properties\": {\n          \"diskAvailable\": {\n            \"type\": \"string\"\n          },\n          \"diskAvailableRaw\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"diskSize\": {\n            \"type\": \"string\"\n          },\n          \"diskSizeRaw\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"diskUsagePercentage\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"diskUse\": {\n            \"type\": \"string\"\n          },\n          \"diskUseRaw\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"diskAvailable\",\n          \"diskAvailableRaw\",\n          \"diskSize\",\n          \"diskSizeRaw\",\n          \"diskUsagePercentage\",\n          \"diskUse\",\n          \"diskUseRaw\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ServerThemeDto\": {\n        \"properties\": {\n          \"customCss\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"customCss\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ServerVersionHistoryResponseDto\": {\n        \"properties\": {\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"version\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"createdAt\",\n          \"id\",\n          \"version\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ServerVersionResponseDto\": {\n        \"properties\": {\n          \"major\": {\n            \"type\": \"integer\"\n          },\n          \"minor\": {\n            \"type\": \"integer\"\n          },\n          \"patch\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"major\",\n          \"minor\",\n          \"patch\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SessionCreateDto\": {\n        \"properties\": {\n          \"deviceOS\": {\n            \"type\": \"string\"\n          },\n          \"deviceType\": {\n            \"type\": \"string\"\n          },\n          \"duration\": {\n            \"description\": \"session duration, in seconds\",\n            \"minimum\": 1,\n            \"type\": \"number\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"SessionCreateResponseDto\": {\n        \"properties\": {\n          \"appVersion\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\"\n          },\n          \"current\": {\n            \"type\": \"boolean\"\n          },\n          \"deviceOS\": {\n            \"type\": \"string\"\n          },\n          \"deviceType\": {\n            \"type\": \"string\"\n          },\n          \"expiresAt\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isPendingSyncReset\": {\n            \"type\": \"boolean\"\n          },\n          \"token\": {\n            \"type\": \"string\"\n          },\n          \"updatedAt\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"appVersion\",\n          \"createdAt\",\n          \"current\",\n          \"deviceOS\",\n          \"deviceType\",\n          \"id\",\n          \"isPendingSyncReset\",\n          \"token\",\n          \"updatedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SessionResponseDto\": {\n        \"properties\": {\n          \"appVersion\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\"\n          },\n          \"current\": {\n            \"type\": \"boolean\"\n          },\n          \"deviceOS\": {\n            \"type\": \"string\"\n          },\n          \"deviceType\": {\n            \"type\": \"string\"\n          },\n          \"expiresAt\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isPendingSyncReset\": {\n            \"type\": \"boolean\"\n          },\n          \"updatedAt\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"appVersion\",\n          \"createdAt\",\n          \"current\",\n          \"deviceOS\",\n          \"deviceType\",\n          \"id\",\n          \"isPendingSyncReset\",\n          \"updatedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SessionUnlockDto\": {\n        \"properties\": {\n          \"password\": {\n            \"type\": \"string\"\n          },\n          \"pinCode\": {\n            \"example\": \"123456\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"SessionUpdateDto\": {\n        \"properties\": {\n          \"isPendingSyncReset\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"SetMaintenanceModeDto\": {\n        \"properties\": {\n          \"action\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/MaintenanceAction\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"action\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SharedLinkCreateDto\": {\n        \"properties\": {\n          \"albumId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"allowDownload\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          },\n          \"allowUpload\": {\n            \"type\": \"boolean\"\n          },\n          \"assetIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"description\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"expiresAt\": {\n            \"default\": null,\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"password\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"showMetadata\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          },\n          \"slug\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/SharedLinkType\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"type\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SharedLinkEditDto\": {\n        \"properties\": {\n          \"allowDownload\": {\n            \"type\": \"boolean\"\n          },\n          \"allowUpload\": {\n            \"type\": \"boolean\"\n          },\n          \"changeExpiryTime\": {\n            \"description\": \"Few clients cannot send null to set the expiryTime to never.\\nSetting this flag and not sending expiryAt is considered as null instead.\\nClients that can send null values can ignore this.\",\n            \"type\": \"boolean\"\n          },\n          \"description\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"expiresAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"password\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"showMetadata\": {\n            \"type\": \"boolean\"\n          },\n          \"slug\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"SharedLinkResponseDto\": {\n        \"properties\": {\n          \"album\": {\n            \"$ref\": \"#/components/schemas/AlbumResponseDto\"\n          },\n          \"allowDownload\": {\n            \"type\": \"boolean\"\n          },\n          \"allowUpload\": {\n            \"type\": \"boolean\"\n          },\n          \"assets\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"expiresAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"key\": {\n            \"type\": \"string\"\n          },\n          \"password\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"showMetadata\": {\n            \"type\": \"boolean\"\n          },\n          \"slug\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"token\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/SharedLinkType\"\n              }\n            ]\n          },\n          \"userId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"allowDownload\",\n          \"allowUpload\",\n          \"assets\",\n          \"createdAt\",\n          \"description\",\n          \"expiresAt\",\n          \"id\",\n          \"key\",\n          \"password\",\n          \"showMetadata\",\n          \"slug\",\n          \"type\",\n          \"userId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SharedLinkType\": {\n        \"enum\": [\n          \"ALBUM\",\n          \"INDIVIDUAL\"\n        ],\n        \"type\": \"string\"\n      },\n      \"SharedLinksResponse\": {\n        \"properties\": {\n          \"enabled\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          },\n          \"sidebarWeb\": {\n            \"default\": false,\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"sidebarWeb\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SharedLinksUpdate\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"sidebarWeb\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"SignUpDto\": {\n        \"properties\": {\n          \"email\": {\n            \"example\": \"testuser@email.com\",\n            \"format\": \"email\",\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"example\": \"Admin\",\n            \"type\": \"string\"\n          },\n          \"password\": {\n            \"example\": \"password\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"email\",\n          \"name\",\n          \"password\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SmartSearchDto\": {\n        \"properties\": {\n          \"albumIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"city\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"country\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"createdAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"createdBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"deviceId\": {\n            \"type\": \"string\"\n          },\n          \"isEncoded\": {\n            \"type\": \"boolean\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"isMotion\": {\n            \"type\": \"boolean\"\n          },\n          \"isNotInAlbum\": {\n            \"type\": \"boolean\"\n          },\n          \"isOffline\": {\n            \"type\": \"boolean\"\n          },\n          \"language\": {\n            \"type\": \"string\"\n          },\n          \"lensModel\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"libraryId\": {\n            \"format\": \"uuid\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"make\": {\n            \"type\": \"string\"\n          },\n          \"model\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"ocr\": {\n            \"type\": \"string\"\n          },\n          \"page\": {\n            \"minimum\": 1,\n            \"type\": \"number\"\n          },\n          \"personIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"query\": {\n            \"type\": \"string\"\n          },\n          \"queryAssetId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"rating\": {\n            \"maximum\": 5,\n            \"minimum\": -1,\n            \"type\": \"number\"\n          },\n          \"size\": {\n            \"maximum\": 1000,\n            \"minimum\": 1,\n            \"type\": \"number\"\n          },\n          \"state\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"tagIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"nullable\": true,\n            \"type\": \"array\"\n          },\n          \"takenAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"takenBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"trashedAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"trashedBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetTypeEnum\"\n              }\n            ]\n          },\n          \"updatedAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"updatedBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"visibility\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetVisibility\"\n              }\n            ]\n          },\n          \"withDeleted\": {\n            \"type\": \"boolean\"\n          },\n          \"withExif\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"SourceType\": {\n        \"enum\": [\n          \"machine-learning\",\n          \"exif\",\n          \"manual\"\n        ],\n        \"type\": \"string\"\n      },\n      \"StackCreateDto\": {\n        \"properties\": {\n          \"assetIds\": {\n            \"description\": \"first asset becomes the primary\",\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"minItems\": 2,\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"assetIds\"\n        ],\n        \"type\": \"object\"\n      },\n      \"StackResponseDto\": {\n        \"properties\": {\n          \"assets\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"primaryAssetId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assets\",\n          \"id\",\n          \"primaryAssetId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"StackUpdateDto\": {\n        \"properties\": {\n          \"primaryAssetId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"StatisticsSearchDto\": {\n        \"properties\": {\n          \"albumIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"city\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"country\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"createdAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"createdBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"deviceId\": {\n            \"type\": \"string\"\n          },\n          \"isEncoded\": {\n            \"type\": \"boolean\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"isMotion\": {\n            \"type\": \"boolean\"\n          },\n          \"isNotInAlbum\": {\n            \"type\": \"boolean\"\n          },\n          \"isOffline\": {\n            \"type\": \"boolean\"\n          },\n          \"lensModel\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"libraryId\": {\n            \"format\": \"uuid\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"make\": {\n            \"type\": \"string\"\n          },\n          \"model\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"ocr\": {\n            \"type\": \"string\"\n          },\n          \"personIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"rating\": {\n            \"maximum\": 5,\n            \"minimum\": -1,\n            \"type\": \"number\"\n          },\n          \"state\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"tagIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"nullable\": true,\n            \"type\": \"array\"\n          },\n          \"takenAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"takenBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"trashedAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"trashedBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetTypeEnum\"\n              }\n            ]\n          },\n          \"updatedAfter\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"updatedBefore\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"visibility\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetVisibility\"\n              }\n            ]\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"SyncAckDeleteDto\": {\n        \"properties\": {\n          \"types\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/SyncEntityType\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"SyncAckDto\": {\n        \"properties\": {\n          \"ack\": {\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/SyncEntityType\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"ack\",\n          \"type\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAckSetDto\": {\n        \"properties\": {\n          \"acks\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"maxItems\": 1000,\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"acks\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAckV1\": {\n        \"properties\": {},\n        \"type\": \"object\"\n      },\n      \"SyncAlbumDeleteV1\": {\n        \"properties\": {\n          \"albumId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"albumId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAlbumToAssetDeleteV1\": {\n        \"properties\": {\n          \"albumId\": {\n            \"type\": \"string\"\n          },\n          \"assetId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"albumId\",\n          \"assetId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAlbumToAssetV1\": {\n        \"properties\": {\n          \"albumId\": {\n            \"type\": \"string\"\n          },\n          \"assetId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"albumId\",\n          \"assetId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAlbumUserDeleteV1\": {\n        \"properties\": {\n          \"albumId\": {\n            \"type\": \"string\"\n          },\n          \"userId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"albumId\",\n          \"userId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAlbumUserV1\": {\n        \"properties\": {\n          \"albumId\": {\n            \"type\": \"string\"\n          },\n          \"role\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AlbumUserRole\"\n              }\n            ]\n          },\n          \"userId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"albumId\",\n          \"role\",\n          \"userId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAlbumV1\": {\n        \"properties\": {\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isActivityEnabled\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"order\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetOrder\"\n              }\n            ]\n          },\n          \"ownerId\": {\n            \"type\": \"string\"\n          },\n          \"thumbnailAssetId\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"createdAt\",\n          \"description\",\n          \"id\",\n          \"isActivityEnabled\",\n          \"name\",\n          \"order\",\n          \"ownerId\",\n          \"thumbnailAssetId\",\n          \"updatedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAssetDeleteV1\": {\n        \"properties\": {\n          \"assetId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assetId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAssetExifV1\": {\n        \"properties\": {\n          \"assetId\": {\n            \"type\": \"string\"\n          },\n          \"city\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"country\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"dateTimeOriginal\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"exifImageHeight\": {\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"exifImageWidth\": {\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"exposureTime\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"fNumber\": {\n            \"format\": \"double\",\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"fileSizeInByte\": {\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"focalLength\": {\n            \"format\": \"double\",\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"fps\": {\n            \"format\": \"double\",\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"iso\": {\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"latitude\": {\n            \"format\": \"double\",\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"lensModel\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"longitude\": {\n            \"format\": \"double\",\n            \"nullable\": true,\n            \"type\": \"number\"\n          },\n          \"make\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"model\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"modifyDate\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"orientation\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"profileDescription\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"projectionType\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"rating\": {\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"state\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"timeZone\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assetId\",\n          \"city\",\n          \"country\",\n          \"dateTimeOriginal\",\n          \"description\",\n          \"exifImageHeight\",\n          \"exifImageWidth\",\n          \"exposureTime\",\n          \"fNumber\",\n          \"fileSizeInByte\",\n          \"focalLength\",\n          \"fps\",\n          \"iso\",\n          \"latitude\",\n          \"lensModel\",\n          \"longitude\",\n          \"make\",\n          \"model\",\n          \"modifyDate\",\n          \"orientation\",\n          \"profileDescription\",\n          \"projectionType\",\n          \"rating\",\n          \"state\",\n          \"timeZone\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAssetFaceDeleteV1\": {\n        \"properties\": {\n          \"assetFaceId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assetFaceId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAssetFaceV1\": {\n        \"properties\": {\n          \"assetId\": {\n            \"type\": \"string\"\n          },\n          \"boundingBoxX1\": {\n            \"type\": \"integer\"\n          },\n          \"boundingBoxX2\": {\n            \"type\": \"integer\"\n          },\n          \"boundingBoxY1\": {\n            \"type\": \"integer\"\n          },\n          \"boundingBoxY2\": {\n            \"type\": \"integer\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"imageHeight\": {\n            \"type\": \"integer\"\n          },\n          \"imageWidth\": {\n            \"type\": \"integer\"\n          },\n          \"personId\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"sourceType\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assetId\",\n          \"boundingBoxX1\",\n          \"boundingBoxX2\",\n          \"boundingBoxY1\",\n          \"boundingBoxY2\",\n          \"id\",\n          \"imageHeight\",\n          \"imageWidth\",\n          \"personId\",\n          \"sourceType\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAssetMetadataDeleteV1\": {\n        \"properties\": {\n          \"assetId\": {\n            \"type\": \"string\"\n          },\n          \"key\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetMetadataKey\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"assetId\",\n          \"key\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAssetMetadataV1\": {\n        \"properties\": {\n          \"assetId\": {\n            \"type\": \"string\"\n          },\n          \"key\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetMetadataKey\"\n              }\n            ]\n          },\n          \"value\": {\n            \"type\": \"object\"\n          }\n        },\n        \"required\": [\n          \"assetId\",\n          \"key\",\n          \"value\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAssetV1\": {\n        \"properties\": {\n          \"checksum\": {\n            \"type\": \"string\"\n          },\n          \"deletedAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"duration\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"fileCreatedAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"fileModifiedAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"libraryId\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"livePhotoVideoId\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"localDateTime\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"originalFileName\": {\n            \"type\": \"string\"\n          },\n          \"ownerId\": {\n            \"type\": \"string\"\n          },\n          \"stackId\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"thumbhash\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetTypeEnum\"\n              }\n            ]\n          },\n          \"visibility\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetVisibility\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"checksum\",\n          \"deletedAt\",\n          \"duration\",\n          \"fileCreatedAt\",\n          \"fileModifiedAt\",\n          \"id\",\n          \"isFavorite\",\n          \"libraryId\",\n          \"livePhotoVideoId\",\n          \"localDateTime\",\n          \"originalFileName\",\n          \"ownerId\",\n          \"stackId\",\n          \"thumbhash\",\n          \"type\",\n          \"visibility\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncAuthUserV1\": {\n        \"properties\": {\n          \"avatarColor\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserAvatarColor\"\n              }\n            ],\n            \"nullable\": true\n          },\n          \"deletedAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"email\": {\n            \"type\": \"string\"\n          },\n          \"hasProfileImage\": {\n            \"type\": \"boolean\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isAdmin\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"oauthId\": {\n            \"type\": \"string\"\n          },\n          \"pinCode\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"profileChangedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"quotaSizeInBytes\": {\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"quotaUsageInBytes\": {\n            \"type\": \"integer\"\n          },\n          \"storageLabel\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"avatarColor\",\n          \"deletedAt\",\n          \"email\",\n          \"hasProfileImage\",\n          \"id\",\n          \"isAdmin\",\n          \"name\",\n          \"oauthId\",\n          \"pinCode\",\n          \"profileChangedAt\",\n          \"quotaSizeInBytes\",\n          \"quotaUsageInBytes\",\n          \"storageLabel\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncCompleteV1\": {\n        \"properties\": {},\n        \"type\": \"object\"\n      },\n      \"SyncEntityType\": {\n        \"enum\": [\n          \"AuthUserV1\",\n          \"UserV1\",\n          \"UserDeleteV1\",\n          \"AssetV1\",\n          \"AssetDeleteV1\",\n          \"AssetExifV1\",\n          \"AssetMetadataV1\",\n          \"AssetMetadataDeleteV1\",\n          \"PartnerV1\",\n          \"PartnerDeleteV1\",\n          \"PartnerAssetV1\",\n          \"PartnerAssetBackfillV1\",\n          \"PartnerAssetDeleteV1\",\n          \"PartnerAssetExifV1\",\n          \"PartnerAssetExifBackfillV1\",\n          \"PartnerStackBackfillV1\",\n          \"PartnerStackDeleteV1\",\n          \"PartnerStackV1\",\n          \"AlbumV1\",\n          \"AlbumDeleteV1\",\n          \"AlbumUserV1\",\n          \"AlbumUserBackfillV1\",\n          \"AlbumUserDeleteV1\",\n          \"AlbumAssetCreateV1\",\n          \"AlbumAssetUpdateV1\",\n          \"AlbumAssetBackfillV1\",\n          \"AlbumAssetExifCreateV1\",\n          \"AlbumAssetExifUpdateV1\",\n          \"AlbumAssetExifBackfillV1\",\n          \"AlbumToAssetV1\",\n          \"AlbumToAssetDeleteV1\",\n          \"AlbumToAssetBackfillV1\",\n          \"MemoryV1\",\n          \"MemoryDeleteV1\",\n          \"MemoryToAssetV1\",\n          \"MemoryToAssetDeleteV1\",\n          \"StackV1\",\n          \"StackDeleteV1\",\n          \"PersonV1\",\n          \"PersonDeleteV1\",\n          \"AssetFaceV1\",\n          \"AssetFaceDeleteV1\",\n          \"UserMetadataV1\",\n          \"UserMetadataDeleteV1\",\n          \"SyncAckV1\",\n          \"SyncResetV1\",\n          \"SyncCompleteV1\"\n        ],\n        \"type\": \"string\"\n      },\n      \"SyncMemoryAssetDeleteV1\": {\n        \"properties\": {\n          \"assetId\": {\n            \"type\": \"string\"\n          },\n          \"memoryId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assetId\",\n          \"memoryId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncMemoryAssetV1\": {\n        \"properties\": {\n          \"assetId\": {\n            \"type\": \"string\"\n          },\n          \"memoryId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"assetId\",\n          \"memoryId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncMemoryDeleteV1\": {\n        \"properties\": {\n          \"memoryId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"memoryId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncMemoryV1\": {\n        \"properties\": {\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"data\": {\n            \"type\": \"object\"\n          },\n          \"deletedAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"hideAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isSaved\": {\n            \"type\": \"boolean\"\n          },\n          \"memoryAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"ownerId\": {\n            \"type\": \"string\"\n          },\n          \"seenAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"showAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/MemoryType\"\n              }\n            ]\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"createdAt\",\n          \"data\",\n          \"deletedAt\",\n          \"hideAt\",\n          \"id\",\n          \"isSaved\",\n          \"memoryAt\",\n          \"ownerId\",\n          \"seenAt\",\n          \"showAt\",\n          \"type\",\n          \"updatedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncPartnerDeleteV1\": {\n        \"properties\": {\n          \"sharedById\": {\n            \"type\": \"string\"\n          },\n          \"sharedWithId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"sharedById\",\n          \"sharedWithId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncPartnerV1\": {\n        \"properties\": {\n          \"inTimeline\": {\n            \"type\": \"boolean\"\n          },\n          \"sharedById\": {\n            \"type\": \"string\"\n          },\n          \"sharedWithId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"inTimeline\",\n          \"sharedById\",\n          \"sharedWithId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncPersonDeleteV1\": {\n        \"properties\": {\n          \"personId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"personId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncPersonV1\": {\n        \"properties\": {\n          \"birthDate\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"color\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"faceAssetId\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"isHidden\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"ownerId\": {\n            \"type\": \"string\"\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"birthDate\",\n          \"color\",\n          \"createdAt\",\n          \"faceAssetId\",\n          \"id\",\n          \"isFavorite\",\n          \"isHidden\",\n          \"name\",\n          \"ownerId\",\n          \"updatedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncRequestType\": {\n        \"enum\": [\n          \"AlbumsV1\",\n          \"AlbumUsersV1\",\n          \"AlbumToAssetsV1\",\n          \"AlbumAssetsV1\",\n          \"AlbumAssetExifsV1\",\n          \"AssetsV1\",\n          \"AssetExifsV1\",\n          \"AssetMetadataV1\",\n          \"AuthUsersV1\",\n          \"MemoriesV1\",\n          \"MemoryToAssetsV1\",\n          \"PartnersV1\",\n          \"PartnerAssetsV1\",\n          \"PartnerAssetExifsV1\",\n          \"PartnerStacksV1\",\n          \"StacksV1\",\n          \"UsersV1\",\n          \"PeopleV1\",\n          \"AssetFacesV1\",\n          \"UserMetadataV1\"\n        ],\n        \"type\": \"string\"\n      },\n      \"SyncResetV1\": {\n        \"properties\": {},\n        \"type\": \"object\"\n      },\n      \"SyncStackDeleteV1\": {\n        \"properties\": {\n          \"stackId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"stackId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncStackV1\": {\n        \"properties\": {\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"ownerId\": {\n            \"type\": \"string\"\n          },\n          \"primaryAssetId\": {\n            \"type\": \"string\"\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"createdAt\",\n          \"id\",\n          \"ownerId\",\n          \"primaryAssetId\",\n          \"updatedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncStreamDto\": {\n        \"properties\": {\n          \"reset\": {\n            \"type\": \"boolean\"\n          },\n          \"types\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/SyncRequestType\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"types\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncUserDeleteV1\": {\n        \"properties\": {\n          \"userId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"userId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncUserMetadataDeleteV1\": {\n        \"properties\": {\n          \"key\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserMetadataKey\"\n              }\n            ]\n          },\n          \"userId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"key\",\n          \"userId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncUserMetadataV1\": {\n        \"properties\": {\n          \"key\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserMetadataKey\"\n              }\n            ]\n          },\n          \"userId\": {\n            \"type\": \"string\"\n          },\n          \"value\": {\n            \"type\": \"object\"\n          }\n        },\n        \"required\": [\n          \"key\",\n          \"userId\",\n          \"value\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SyncUserV1\": {\n        \"properties\": {\n          \"avatarColor\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserAvatarColor\"\n              }\n            ],\n            \"nullable\": true\n          },\n          \"deletedAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"email\": {\n            \"type\": \"string\"\n          },\n          \"hasProfileImage\": {\n            \"type\": \"boolean\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"profileChangedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"avatarColor\",\n          \"deletedAt\",\n          \"email\",\n          \"hasProfileImage\",\n          \"id\",\n          \"name\",\n          \"profileChangedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigBackupsDto\": {\n        \"properties\": {\n          \"database\": {\n            \"$ref\": \"#/components/schemas/DatabaseBackupConfig\"\n          }\n        },\n        \"required\": [\n          \"database\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigDto\": {\n        \"properties\": {\n          \"backup\": {\n            \"$ref\": \"#/components/schemas/SystemConfigBackupsDto\"\n          },\n          \"ffmpeg\": {\n            \"$ref\": \"#/components/schemas/SystemConfigFFmpegDto\"\n          },\n          \"image\": {\n            \"$ref\": \"#/components/schemas/SystemConfigImageDto\"\n          },\n          \"job\": {\n            \"$ref\": \"#/components/schemas/SystemConfigJobDto\"\n          },\n          \"library\": {\n            \"$ref\": \"#/components/schemas/SystemConfigLibraryDto\"\n          },\n          \"logging\": {\n            \"$ref\": \"#/components/schemas/SystemConfigLoggingDto\"\n          },\n          \"machineLearning\": {\n            \"$ref\": \"#/components/schemas/SystemConfigMachineLearningDto\"\n          },\n          \"map\": {\n            \"$ref\": \"#/components/schemas/SystemConfigMapDto\"\n          },\n          \"metadata\": {\n            \"$ref\": \"#/components/schemas/SystemConfigMetadataDto\"\n          },\n          \"newVersionCheck\": {\n            \"$ref\": \"#/components/schemas/SystemConfigNewVersionCheckDto\"\n          },\n          \"nightlyTasks\": {\n            \"$ref\": \"#/components/schemas/SystemConfigNightlyTasksDto\"\n          },\n          \"notifications\": {\n            \"$ref\": \"#/components/schemas/SystemConfigNotificationsDto\"\n          },\n          \"oauth\": {\n            \"$ref\": \"#/components/schemas/SystemConfigOAuthDto\"\n          },\n          \"passwordLogin\": {\n            \"$ref\": \"#/components/schemas/SystemConfigPasswordLoginDto\"\n          },\n          \"reverseGeocoding\": {\n            \"$ref\": \"#/components/schemas/SystemConfigReverseGeocodingDto\"\n          },\n          \"server\": {\n            \"$ref\": \"#/components/schemas/SystemConfigServerDto\"\n          },\n          \"storageTemplate\": {\n            \"$ref\": \"#/components/schemas/SystemConfigStorageTemplateDto\"\n          },\n          \"templates\": {\n            \"$ref\": \"#/components/schemas/SystemConfigTemplatesDto\"\n          },\n          \"theme\": {\n            \"$ref\": \"#/components/schemas/SystemConfigThemeDto\"\n          },\n          \"trash\": {\n            \"$ref\": \"#/components/schemas/SystemConfigTrashDto\"\n          },\n          \"user\": {\n            \"$ref\": \"#/components/schemas/SystemConfigUserDto\"\n          }\n        },\n        \"required\": [\n          \"backup\",\n          \"ffmpeg\",\n          \"image\",\n          \"job\",\n          \"library\",\n          \"logging\",\n          \"machineLearning\",\n          \"map\",\n          \"metadata\",\n          \"newVersionCheck\",\n          \"nightlyTasks\",\n          \"notifications\",\n          \"oauth\",\n          \"passwordLogin\",\n          \"reverseGeocoding\",\n          \"server\",\n          \"storageTemplate\",\n          \"templates\",\n          \"theme\",\n          \"trash\",\n          \"user\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigFFmpegDto\": {\n        \"properties\": {\n          \"accel\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/TranscodeHWAccel\"\n              }\n            ]\n          },\n          \"accelDecode\": {\n            \"type\": \"boolean\"\n          },\n          \"acceptedAudioCodecs\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AudioCodec\"\n            },\n            \"type\": \"array\"\n          },\n          \"acceptedContainers\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/VideoContainer\"\n            },\n            \"type\": \"array\"\n          },\n          \"acceptedVideoCodecs\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/VideoCodec\"\n            },\n            \"type\": \"array\"\n          },\n          \"bframes\": {\n            \"maximum\": 16,\n            \"minimum\": -1,\n            \"type\": \"integer\"\n          },\n          \"cqMode\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/CQMode\"\n              }\n            ]\n          },\n          \"crf\": {\n            \"maximum\": 51,\n            \"minimum\": 0,\n            \"type\": \"integer\"\n          },\n          \"gopSize\": {\n            \"minimum\": 0,\n            \"type\": \"integer\"\n          },\n          \"maxBitrate\": {\n            \"type\": \"string\"\n          },\n          \"preferredHwDevice\": {\n            \"type\": \"string\"\n          },\n          \"preset\": {\n            \"type\": \"string\"\n          },\n          \"refs\": {\n            \"maximum\": 6,\n            \"minimum\": 0,\n            \"type\": \"integer\"\n          },\n          \"targetAudioCodec\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AudioCodec\"\n              }\n            ]\n          },\n          \"targetResolution\": {\n            \"type\": \"string\"\n          },\n          \"targetVideoCodec\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/VideoCodec\"\n              }\n            ]\n          },\n          \"temporalAQ\": {\n            \"type\": \"boolean\"\n          },\n          \"threads\": {\n            \"minimum\": 0,\n            \"type\": \"integer\"\n          },\n          \"tonemap\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/ToneMapping\"\n              }\n            ]\n          },\n          \"transcode\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/TranscodePolicy\"\n              }\n            ]\n          },\n          \"twoPass\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"accel\",\n          \"accelDecode\",\n          \"acceptedAudioCodecs\",\n          \"acceptedContainers\",\n          \"acceptedVideoCodecs\",\n          \"bframes\",\n          \"cqMode\",\n          \"crf\",\n          \"gopSize\",\n          \"maxBitrate\",\n          \"preferredHwDevice\",\n          \"preset\",\n          \"refs\",\n          \"targetAudioCodec\",\n          \"targetResolution\",\n          \"targetVideoCodec\",\n          \"temporalAQ\",\n          \"threads\",\n          \"tonemap\",\n          \"transcode\",\n          \"twoPass\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigFacesDto\": {\n        \"properties\": {\n          \"import\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"import\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigGeneratedFullsizeImageDto\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"format\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/ImageFormat\"\n              }\n            ]\n          },\n          \"quality\": {\n            \"maximum\": 100,\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"format\",\n          \"quality\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigGeneratedImageDto\": {\n        \"properties\": {\n          \"format\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/ImageFormat\"\n              }\n            ]\n          },\n          \"quality\": {\n            \"maximum\": 100,\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          },\n          \"size\": {\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"format\",\n          \"quality\",\n          \"size\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigImageDto\": {\n        \"properties\": {\n          \"colorspace\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/Colorspace\"\n              }\n            ]\n          },\n          \"extractEmbedded\": {\n            \"type\": \"boolean\"\n          },\n          \"fullsize\": {\n            \"$ref\": \"#/components/schemas/SystemConfigGeneratedFullsizeImageDto\"\n          },\n          \"preview\": {\n            \"$ref\": \"#/components/schemas/SystemConfigGeneratedImageDto\"\n          },\n          \"thumbnail\": {\n            \"$ref\": \"#/components/schemas/SystemConfigGeneratedImageDto\"\n          }\n        },\n        \"required\": [\n          \"colorspace\",\n          \"extractEmbedded\",\n          \"fullsize\",\n          \"preview\",\n          \"thumbnail\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigJobDto\": {\n        \"properties\": {\n          \"backgroundTask\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"faceDetection\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"library\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"metadataExtraction\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"migration\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"notifications\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"ocr\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"search\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"sidecar\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"smartSearch\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"thumbnailGeneration\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"videoConversion\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          },\n          \"workflow\": {\n            \"$ref\": \"#/components/schemas/JobSettingsDto\"\n          }\n        },\n        \"required\": [\n          \"backgroundTask\",\n          \"faceDetection\",\n          \"library\",\n          \"metadataExtraction\",\n          \"migration\",\n          \"notifications\",\n          \"ocr\",\n          \"search\",\n          \"sidecar\",\n          \"smartSearch\",\n          \"thumbnailGeneration\",\n          \"videoConversion\",\n          \"workflow\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigLibraryDto\": {\n        \"properties\": {\n          \"scan\": {\n            \"$ref\": \"#/components/schemas/SystemConfigLibraryScanDto\"\n          },\n          \"watch\": {\n            \"$ref\": \"#/components/schemas/SystemConfigLibraryWatchDto\"\n          }\n        },\n        \"required\": [\n          \"scan\",\n          \"watch\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigLibraryScanDto\": {\n        \"properties\": {\n          \"cronExpression\": {\n            \"type\": \"string\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"cronExpression\",\n          \"enabled\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigLibraryWatchDto\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"enabled\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigLoggingDto\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"level\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/LogLevel\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"level\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigMachineLearningDto\": {\n        \"properties\": {\n          \"availabilityChecks\": {\n            \"$ref\": \"#/components/schemas/MachineLearningAvailabilityChecksDto\"\n          },\n          \"clip\": {\n            \"$ref\": \"#/components/schemas/CLIPConfig\"\n          },\n          \"duplicateDetection\": {\n            \"$ref\": \"#/components/schemas/DuplicateDetectionConfig\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"facialRecognition\": {\n            \"$ref\": \"#/components/schemas/FacialRecognitionConfig\"\n          },\n          \"ocr\": {\n            \"$ref\": \"#/components/schemas/OcrConfig\"\n          },\n          \"urls\": {\n            \"format\": \"uri\",\n            \"items\": {\n              \"format\": \"uri\",\n              \"type\": \"string\"\n            },\n            \"minItems\": 1,\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"availabilityChecks\",\n          \"clip\",\n          \"duplicateDetection\",\n          \"enabled\",\n          \"facialRecognition\",\n          \"ocr\",\n          \"urls\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigMapDto\": {\n        \"properties\": {\n          \"darkStyle\": {\n            \"format\": \"uri\",\n            \"type\": \"string\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"lightStyle\": {\n            \"format\": \"uri\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"darkStyle\",\n          \"enabled\",\n          \"lightStyle\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigMetadataDto\": {\n        \"properties\": {\n          \"faces\": {\n            \"$ref\": \"#/components/schemas/SystemConfigFacesDto\"\n          }\n        },\n        \"required\": [\n          \"faces\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigNewVersionCheckDto\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"enabled\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigNightlyTasksDto\": {\n        \"properties\": {\n          \"clusterNewFaces\": {\n            \"type\": \"boolean\"\n          },\n          \"databaseCleanup\": {\n            \"type\": \"boolean\"\n          },\n          \"generateMemories\": {\n            \"type\": \"boolean\"\n          },\n          \"missingThumbnails\": {\n            \"type\": \"boolean\"\n          },\n          \"startTime\": {\n            \"type\": \"string\"\n          },\n          \"syncQuotaUsage\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"clusterNewFaces\",\n          \"databaseCleanup\",\n          \"generateMemories\",\n          \"missingThumbnails\",\n          \"startTime\",\n          \"syncQuotaUsage\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigNotificationsDto\": {\n        \"properties\": {\n          \"smtp\": {\n            \"$ref\": \"#/components/schemas/SystemConfigSmtpDto\"\n          }\n        },\n        \"required\": [\n          \"smtp\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigOAuthDto\": {\n        \"properties\": {\n          \"autoLaunch\": {\n            \"type\": \"boolean\"\n          },\n          \"autoRegister\": {\n            \"type\": \"boolean\"\n          },\n          \"buttonText\": {\n            \"type\": \"string\"\n          },\n          \"clientId\": {\n            \"type\": \"string\"\n          },\n          \"clientSecret\": {\n            \"type\": \"string\"\n          },\n          \"defaultStorageQuota\": {\n            \"format\": \"int64\",\n            \"minimum\": 0,\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"issuerUrl\": {\n            \"type\": \"string\"\n          },\n          \"mobileOverrideEnabled\": {\n            \"type\": \"boolean\"\n          },\n          \"mobileRedirectUri\": {\n            \"format\": \"uri\",\n            \"type\": \"string\"\n          },\n          \"profileSigningAlgorithm\": {\n            \"type\": \"string\"\n          },\n          \"roleClaim\": {\n            \"type\": \"string\"\n          },\n          \"scope\": {\n            \"type\": \"string\"\n          },\n          \"signingAlgorithm\": {\n            \"type\": \"string\"\n          },\n          \"storageLabelClaim\": {\n            \"type\": \"string\"\n          },\n          \"storageQuotaClaim\": {\n            \"type\": \"string\"\n          },\n          \"timeout\": {\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          },\n          \"tokenEndpointAuthMethod\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/OAuthTokenEndpointAuthMethod\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"autoLaunch\",\n          \"autoRegister\",\n          \"buttonText\",\n          \"clientId\",\n          \"clientSecret\",\n          \"defaultStorageQuota\",\n          \"enabled\",\n          \"issuerUrl\",\n          \"mobileOverrideEnabled\",\n          \"mobileRedirectUri\",\n          \"profileSigningAlgorithm\",\n          \"roleClaim\",\n          \"scope\",\n          \"signingAlgorithm\",\n          \"storageLabelClaim\",\n          \"storageQuotaClaim\",\n          \"timeout\",\n          \"tokenEndpointAuthMethod\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigPasswordLoginDto\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"enabled\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigReverseGeocodingDto\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"enabled\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigServerDto\": {\n        \"properties\": {\n          \"externalDomain\": {\n            \"format\": \"uri\",\n            \"type\": \"string\"\n          },\n          \"loginPageMessage\": {\n            \"type\": \"string\"\n          },\n          \"publicUsers\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"externalDomain\",\n          \"loginPageMessage\",\n          \"publicUsers\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigSmtpDto\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"from\": {\n            \"type\": \"string\"\n          },\n          \"replyTo\": {\n            \"type\": \"string\"\n          },\n          \"transport\": {\n            \"$ref\": \"#/components/schemas/SystemConfigSmtpTransportDto\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"from\",\n          \"replyTo\",\n          \"transport\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigSmtpTransportDto\": {\n        \"properties\": {\n          \"host\": {\n            \"type\": \"string\"\n          },\n          \"ignoreCert\": {\n            \"type\": \"boolean\"\n          },\n          \"password\": {\n            \"type\": \"string\"\n          },\n          \"port\": {\n            \"maximum\": 65535,\n            \"minimum\": 0,\n            \"type\": \"number\"\n          },\n          \"secure\": {\n            \"type\": \"boolean\"\n          },\n          \"username\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"host\",\n          \"ignoreCert\",\n          \"password\",\n          \"port\",\n          \"secure\",\n          \"username\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigStorageTemplateDto\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"hashVerificationEnabled\": {\n            \"type\": \"boolean\"\n          },\n          \"template\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"hashVerificationEnabled\",\n          \"template\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigTemplateEmailsDto\": {\n        \"properties\": {\n          \"albumInviteTemplate\": {\n            \"type\": \"string\"\n          },\n          \"albumUpdateTemplate\": {\n            \"type\": \"string\"\n          },\n          \"welcomeTemplate\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"albumInviteTemplate\",\n          \"albumUpdateTemplate\",\n          \"welcomeTemplate\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigTemplateStorageOptionDto\": {\n        \"properties\": {\n          \"dayOptions\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"hourOptions\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"minuteOptions\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"monthOptions\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"presetOptions\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"secondOptions\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"weekOptions\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"yearOptions\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"dayOptions\",\n          \"hourOptions\",\n          \"minuteOptions\",\n          \"monthOptions\",\n          \"presetOptions\",\n          \"secondOptions\",\n          \"weekOptions\",\n          \"yearOptions\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigTemplatesDto\": {\n        \"properties\": {\n          \"email\": {\n            \"$ref\": \"#/components/schemas/SystemConfigTemplateEmailsDto\"\n          }\n        },\n        \"required\": [\n          \"email\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigThemeDto\": {\n        \"properties\": {\n          \"customCss\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"customCss\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigTrashDto\": {\n        \"properties\": {\n          \"days\": {\n            \"minimum\": 0,\n            \"type\": \"integer\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"days\",\n          \"enabled\"\n        ],\n        \"type\": \"object\"\n      },\n      \"SystemConfigUserDto\": {\n        \"properties\": {\n          \"deleteDelay\": {\n            \"minimum\": 1,\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"deleteDelay\"\n        ],\n        \"type\": \"object\"\n      },\n      \"TagBulkAssetsDto\": {\n        \"properties\": {\n          \"assetIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"tagIds\": {\n            \"items\": {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"assetIds\",\n          \"tagIds\"\n        ],\n        \"type\": \"object\"\n      },\n      \"TagBulkAssetsResponseDto\": {\n        \"properties\": {\n          \"count\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"count\"\n        ],\n        \"type\": \"object\"\n      },\n      \"TagCreateDto\": {\n        \"properties\": {\n          \"color\": {\n            \"pattern\": \"^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$\",\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"parentId\": {\n            \"format\": \"uuid\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"name\"\n        ],\n        \"type\": \"object\"\n      },\n      \"TagResponseDto\": {\n        \"properties\": {\n          \"color\": {\n            \"type\": \"string\"\n          },\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"parentId\": {\n            \"type\": \"string\"\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"value\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"createdAt\",\n          \"id\",\n          \"name\",\n          \"updatedAt\",\n          \"value\"\n        ],\n        \"type\": \"object\"\n      },\n      \"TagUpdateDto\": {\n        \"properties\": {\n          \"color\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"TagUpsertDto\": {\n        \"properties\": {\n          \"tags\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"tags\"\n        ],\n        \"type\": \"object\"\n      },\n      \"TagsResponse\": {\n        \"properties\": {\n          \"enabled\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          },\n          \"sidebarWeb\": {\n            \"default\": true,\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"enabled\",\n          \"sidebarWeb\"\n        ],\n        \"type\": \"object\"\n      },\n      \"TagsUpdate\": {\n        \"properties\": {\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"sidebarWeb\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"TemplateDto\": {\n        \"properties\": {\n          \"template\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"template\"\n        ],\n        \"type\": \"object\"\n      },\n      \"TemplateResponseDto\": {\n        \"properties\": {\n          \"html\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"html\",\n          \"name\"\n        ],\n        \"type\": \"object\"\n      },\n      \"TestEmailResponseDto\": {\n        \"properties\": {\n          \"messageId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"messageId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"TimeBucketAssetResponseDto\": {\n        \"properties\": {\n          \"city\": {\n            \"description\": \"Array of city names extracted from EXIF GPS data\",\n            \"items\": {\n              \"nullable\": true,\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"country\": {\n            \"description\": \"Array of country names extracted from EXIF GPS data\",\n            \"items\": {\n              \"nullable\": true,\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"duration\": {\n            \"description\": \"Array of video durations in HH:MM:SS format (null for images)\",\n            \"items\": {\n              \"nullable\": true,\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"fileCreatedAt\": {\n            \"description\": \"Array of file creation timestamps in UTC (ISO 8601 format, without timezone)\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"description\": \"Array of asset IDs in the time bucket\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"isFavorite\": {\n            \"description\": \"Array indicating whether each asset is favorited\",\n            \"items\": {\n              \"type\": \"boolean\"\n            },\n            \"type\": \"array\"\n          },\n          \"isImage\": {\n            \"description\": \"Array indicating whether each asset is an image (false for videos)\",\n            \"items\": {\n              \"type\": \"boolean\"\n            },\n            \"type\": \"array\"\n          },\n          \"isTrashed\": {\n            \"description\": \"Array indicating whether each asset is in the trash\",\n            \"items\": {\n              \"type\": \"boolean\"\n            },\n            \"type\": \"array\"\n          },\n          \"latitude\": {\n            \"description\": \"Array of latitude coordinates extracted from EXIF GPS data\",\n            \"items\": {\n              \"nullable\": true,\n              \"type\": \"number\"\n            },\n            \"type\": \"array\"\n          },\n          \"livePhotoVideoId\": {\n            \"description\": \"Array of live photo video asset IDs (null for non-live photos)\",\n            \"items\": {\n              \"nullable\": true,\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"localOffsetHours\": {\n            \"description\": \"Array of UTC offset hours at the time each photo was taken. Positive values are east of UTC, negative values are west of UTC. Values may be fractional (e.g., 5.5 for +05:30, -9.75 for -09:45). Applying this offset to 'fileCreatedAt' will give you the time the photo was taken from the photographer's perspective.\",\n            \"items\": {\n              \"type\": \"number\"\n            },\n            \"type\": \"array\"\n          },\n          \"longitude\": {\n            \"description\": \"Array of longitude coordinates extracted from EXIF GPS data\",\n            \"items\": {\n              \"nullable\": true,\n              \"type\": \"number\"\n            },\n            \"type\": \"array\"\n          },\n          \"ownerId\": {\n            \"description\": \"Array of owner IDs for each asset\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"projectionType\": {\n            \"description\": \"Array of projection types for 360° content (e.g., \\\"EQUIRECTANGULAR\\\", \\\"CUBEFACE\\\", \\\"CYLINDRICAL\\\")\",\n            \"items\": {\n              \"nullable\": true,\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"ratio\": {\n            \"description\": \"Array of aspect ratios (width/height) for each asset\",\n            \"items\": {\n              \"type\": \"number\"\n            },\n            \"type\": \"array\"\n          },\n          \"stack\": {\n            \"description\": \"Array of stack information as [stackId, assetCount] tuples (null for non-stacked assets)\",\n            \"items\": {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"maxItems\": 2,\n              \"minItems\": 2,\n              \"nullable\": true,\n              \"type\": \"array\"\n            },\n            \"type\": \"array\"\n          },\n          \"thumbhash\": {\n            \"description\": \"Array of BlurHash strings for generating asset previews (base64 encoded)\",\n            \"items\": {\n              \"nullable\": true,\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"visibility\": {\n            \"description\": \"Array of visibility statuses for each asset (e.g., ARCHIVE, TIMELINE, HIDDEN, LOCKED)\",\n            \"items\": {\n              \"$ref\": \"#/components/schemas/AssetVisibility\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"required\": [\n          \"city\",\n          \"country\",\n          \"duration\",\n          \"fileCreatedAt\",\n          \"id\",\n          \"isFavorite\",\n          \"isImage\",\n          \"isTrashed\",\n          \"livePhotoVideoId\",\n          \"localOffsetHours\",\n          \"ownerId\",\n          \"projectionType\",\n          \"ratio\",\n          \"thumbhash\",\n          \"visibility\"\n        ],\n        \"type\": \"object\"\n      },\n      \"TimeBucketsResponseDto\": {\n        \"properties\": {\n          \"count\": {\n            \"description\": \"Number of assets in this time bucket\",\n            \"example\": 42,\n            \"type\": \"integer\"\n          },\n          \"timeBucket\": {\n            \"description\": \"Time bucket identifier in YYYY-MM-DD format representing the start of the time period\",\n            \"example\": \"2024-01-01\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"count\",\n          \"timeBucket\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ToneMapping\": {\n        \"enum\": [\n          \"hable\",\n          \"mobius\",\n          \"reinhard\",\n          \"disabled\"\n        ],\n        \"type\": \"string\"\n      },\n      \"TranscodeHWAccel\": {\n        \"enum\": [\n          \"nvenc\",\n          \"qsv\",\n          \"vaapi\",\n          \"rkmpp\",\n          \"disabled\"\n        ],\n        \"type\": \"string\"\n      },\n      \"TranscodePolicy\": {\n        \"enum\": [\n          \"all\",\n          \"optimal\",\n          \"bitrate\",\n          \"required\",\n          \"disabled\"\n        ],\n        \"type\": \"string\"\n      },\n      \"TrashResponseDto\": {\n        \"properties\": {\n          \"count\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"count\"\n        ],\n        \"type\": \"object\"\n      },\n      \"UpdateAlbumDto\": {\n        \"properties\": {\n          \"albumName\": {\n            \"type\": \"string\"\n          },\n          \"albumThumbnailAssetId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"isActivityEnabled\": {\n            \"type\": \"boolean\"\n          },\n          \"order\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetOrder\"\n              }\n            ]\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"UpdateAlbumUserDto\": {\n        \"properties\": {\n          \"role\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AlbumUserRole\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"role\"\n        ],\n        \"type\": \"object\"\n      },\n      \"UpdateAssetDto\": {\n        \"properties\": {\n          \"dateTimeOriginal\": {\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"isFavorite\": {\n            \"type\": \"boolean\"\n          },\n          \"latitude\": {\n            \"type\": \"number\"\n          },\n          \"livePhotoVideoId\": {\n            \"format\": \"uuid\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"longitude\": {\n            \"type\": \"number\"\n          },\n          \"rating\": {\n            \"maximum\": 5,\n            \"minimum\": -1,\n            \"type\": \"number\"\n          },\n          \"visibility\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/AssetVisibility\"\n              }\n            ]\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"UpdateLibraryDto\": {\n        \"properties\": {\n          \"exclusionPatterns\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"maxItems\": 128,\n            \"type\": \"array\",\n            \"uniqueItems\": true\n          },\n          \"importPaths\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"maxItems\": 128,\n            \"type\": \"array\",\n            \"uniqueItems\": true\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"UsageByUserDto\": {\n        \"properties\": {\n          \"photos\": {\n            \"type\": \"integer\"\n          },\n          \"quotaSizeInBytes\": {\n            \"format\": \"int64\",\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"usage\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"usagePhotos\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"usageVideos\": {\n            \"format\": \"int64\",\n            \"type\": \"integer\"\n          },\n          \"userId\": {\n            \"type\": \"string\"\n          },\n          \"userName\": {\n            \"type\": \"string\"\n          },\n          \"videos\": {\n            \"type\": \"integer\"\n          }\n        },\n        \"required\": [\n          \"photos\",\n          \"quotaSizeInBytes\",\n          \"usage\",\n          \"usagePhotos\",\n          \"usageVideos\",\n          \"userId\",\n          \"userName\",\n          \"videos\"\n        ],\n        \"type\": \"object\"\n      },\n      \"UserAdminCreateDto\": {\n        \"properties\": {\n          \"avatarColor\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserAvatarColor\"\n              }\n            ],\n            \"nullable\": true\n          },\n          \"email\": {\n            \"format\": \"email\",\n            \"type\": \"string\"\n          },\n          \"isAdmin\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"notify\": {\n            \"type\": \"boolean\"\n          },\n          \"password\": {\n            \"type\": \"string\"\n          },\n          \"quotaSizeInBytes\": {\n            \"format\": \"int64\",\n            \"minimum\": 0,\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"shouldChangePassword\": {\n            \"type\": \"boolean\"\n          },\n          \"storageLabel\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"email\",\n          \"name\",\n          \"password\"\n        ],\n        \"type\": \"object\"\n      },\n      \"UserAdminDeleteDto\": {\n        \"properties\": {\n          \"force\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"UserAdminResponseDto\": {\n        \"properties\": {\n          \"avatarColor\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserAvatarColor\"\n              }\n            ]\n          },\n          \"createdAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"deletedAt\": {\n            \"format\": \"date-time\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"email\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"isAdmin\": {\n            \"type\": \"boolean\"\n          },\n          \"license\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserLicense\"\n              }\n            ],\n            \"nullable\": true\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"oauthId\": {\n            \"type\": \"string\"\n          },\n          \"profileChangedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"profileImagePath\": {\n            \"type\": \"string\"\n          },\n          \"quotaSizeInBytes\": {\n            \"format\": \"int64\",\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"quotaUsageInBytes\": {\n            \"format\": \"int64\",\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"shouldChangePassword\": {\n            \"type\": \"boolean\"\n          },\n          \"status\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserStatus\"\n              }\n            ]\n          },\n          \"storageLabel\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"updatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"avatarColor\",\n          \"createdAt\",\n          \"deletedAt\",\n          \"email\",\n          \"id\",\n          \"isAdmin\",\n          \"license\",\n          \"name\",\n          \"oauthId\",\n          \"profileChangedAt\",\n          \"profileImagePath\",\n          \"quotaSizeInBytes\",\n          \"quotaUsageInBytes\",\n          \"shouldChangePassword\",\n          \"status\",\n          \"storageLabel\",\n          \"updatedAt\"\n        ],\n        \"type\": \"object\"\n      },\n      \"UserAdminUpdateDto\": {\n        \"properties\": {\n          \"avatarColor\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserAvatarColor\"\n              }\n            ],\n            \"nullable\": true\n          },\n          \"email\": {\n            \"format\": \"email\",\n            \"type\": \"string\"\n          },\n          \"isAdmin\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"password\": {\n            \"type\": \"string\"\n          },\n          \"pinCode\": {\n            \"example\": \"123456\",\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"quotaSizeInBytes\": {\n            \"format\": \"int64\",\n            \"minimum\": 0,\n            \"nullable\": true,\n            \"type\": \"integer\"\n          },\n          \"shouldChangePassword\": {\n            \"type\": \"boolean\"\n          },\n          \"storageLabel\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"UserAvatarColor\": {\n        \"enum\": [\n          \"primary\",\n          \"pink\",\n          \"red\",\n          \"yellow\",\n          \"blue\",\n          \"green\",\n          \"purple\",\n          \"orange\",\n          \"gray\",\n          \"amber\"\n        ],\n        \"type\": \"string\"\n      },\n      \"UserLicense\": {\n        \"properties\": {\n          \"activatedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"activationKey\": {\n            \"type\": \"string\"\n          },\n          \"licenseKey\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"activatedAt\",\n          \"activationKey\",\n          \"licenseKey\"\n        ],\n        \"type\": \"object\"\n      },\n      \"UserMetadataKey\": {\n        \"enum\": [\n          \"preferences\",\n          \"license\",\n          \"onboarding\"\n        ],\n        \"type\": \"string\"\n      },\n      \"UserPreferencesResponseDto\": {\n        \"properties\": {\n          \"albums\": {\n            \"$ref\": \"#/components/schemas/AlbumsResponse\"\n          },\n          \"cast\": {\n            \"$ref\": \"#/components/schemas/CastResponse\"\n          },\n          \"download\": {\n            \"$ref\": \"#/components/schemas/DownloadResponse\"\n          },\n          \"emailNotifications\": {\n            \"$ref\": \"#/components/schemas/EmailNotificationsResponse\"\n          },\n          \"folders\": {\n            \"$ref\": \"#/components/schemas/FoldersResponse\"\n          },\n          \"memories\": {\n            \"$ref\": \"#/components/schemas/MemoriesResponse\"\n          },\n          \"people\": {\n            \"$ref\": \"#/components/schemas/PeopleResponse\"\n          },\n          \"purchase\": {\n            \"$ref\": \"#/components/schemas/PurchaseResponse\"\n          },\n          \"ratings\": {\n            \"$ref\": \"#/components/schemas/RatingsResponse\"\n          },\n          \"sharedLinks\": {\n            \"$ref\": \"#/components/schemas/SharedLinksResponse\"\n          },\n          \"tags\": {\n            \"$ref\": \"#/components/schemas/TagsResponse\"\n          }\n        },\n        \"required\": [\n          \"albums\",\n          \"cast\",\n          \"download\",\n          \"emailNotifications\",\n          \"folders\",\n          \"memories\",\n          \"people\",\n          \"purchase\",\n          \"ratings\",\n          \"sharedLinks\",\n          \"tags\"\n        ],\n        \"type\": \"object\"\n      },\n      \"UserPreferencesUpdateDto\": {\n        \"properties\": {\n          \"albums\": {\n            \"$ref\": \"#/components/schemas/AlbumsUpdate\"\n          },\n          \"avatar\": {\n            \"$ref\": \"#/components/schemas/AvatarUpdate\"\n          },\n          \"cast\": {\n            \"$ref\": \"#/components/schemas/CastUpdate\"\n          },\n          \"download\": {\n            \"$ref\": \"#/components/schemas/DownloadUpdate\"\n          },\n          \"emailNotifications\": {\n            \"$ref\": \"#/components/schemas/EmailNotificationsUpdate\"\n          },\n          \"folders\": {\n            \"$ref\": \"#/components/schemas/FoldersUpdate\"\n          },\n          \"memories\": {\n            \"$ref\": \"#/components/schemas/MemoriesUpdate\"\n          },\n          \"people\": {\n            \"$ref\": \"#/components/schemas/PeopleUpdate\"\n          },\n          \"purchase\": {\n            \"$ref\": \"#/components/schemas/PurchaseUpdate\"\n          },\n          \"ratings\": {\n            \"$ref\": \"#/components/schemas/RatingsUpdate\"\n          },\n          \"sharedLinks\": {\n            \"$ref\": \"#/components/schemas/SharedLinksUpdate\"\n          },\n          \"tags\": {\n            \"$ref\": \"#/components/schemas/TagsUpdate\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"UserResponseDto\": {\n        \"properties\": {\n          \"avatarColor\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserAvatarColor\"\n              }\n            ]\n          },\n          \"email\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"profileChangedAt\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"profileImagePath\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"avatarColor\",\n          \"email\",\n          \"id\",\n          \"name\",\n          \"profileChangedAt\",\n          \"profileImagePath\"\n        ],\n        \"type\": \"object\"\n      },\n      \"UserStatus\": {\n        \"enum\": [\n          \"active\",\n          \"removing\",\n          \"deleted\"\n        ],\n        \"type\": \"string\"\n      },\n      \"UserUpdateMeDto\": {\n        \"properties\": {\n          \"avatarColor\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/UserAvatarColor\"\n              }\n            ],\n            \"nullable\": true\n          },\n          \"email\": {\n            \"format\": \"email\",\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"password\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"ValidateAccessTokenResponseDto\": {\n        \"properties\": {\n          \"authStatus\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"authStatus\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ValidateLibraryDto\": {\n        \"properties\": {\n          \"exclusionPatterns\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"maxItems\": 128,\n            \"type\": \"array\",\n            \"uniqueItems\": true\n          },\n          \"importPaths\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"maxItems\": 128,\n            \"type\": \"array\",\n            \"uniqueItems\": true\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"ValidateLibraryImportPathResponseDto\": {\n        \"properties\": {\n          \"importPath\": {\n            \"type\": \"string\"\n          },\n          \"isValid\": {\n            \"default\": false,\n            \"type\": \"boolean\"\n          },\n          \"message\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"importPath\",\n          \"isValid\"\n        ],\n        \"type\": \"object\"\n      },\n      \"ValidateLibraryResponseDto\": {\n        \"properties\": {\n          \"importPaths\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/ValidateLibraryImportPathResponseDto\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"VersionCheckStateResponseDto\": {\n        \"properties\": {\n          \"checkedAt\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"releaseVersion\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"checkedAt\",\n          \"releaseVersion\"\n        ],\n        \"type\": \"object\"\n      },\n      \"VideoCodec\": {\n        \"enum\": [\n          \"h264\",\n          \"hevc\",\n          \"vp9\",\n          \"av1\"\n        ],\n        \"type\": \"string\"\n      },\n      \"VideoContainer\": {\n        \"enum\": [\n          \"mov\",\n          \"mp4\",\n          \"ogg\",\n          \"webm\"\n        ],\n        \"type\": \"string\"\n      },\n      \"WorkflowActionItemDto\": {\n        \"properties\": {\n          \"actionConfig\": {\n            \"type\": \"object\"\n          },\n          \"pluginActionId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"pluginActionId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"WorkflowActionResponseDto\": {\n        \"properties\": {\n          \"actionConfig\": {\n            \"nullable\": true,\n            \"type\": \"object\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"order\": {\n            \"type\": \"number\"\n          },\n          \"pluginActionId\": {\n            \"type\": \"string\"\n          },\n          \"workflowId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"actionConfig\",\n          \"id\",\n          \"order\",\n          \"pluginActionId\",\n          \"workflowId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"WorkflowCreateDto\": {\n        \"properties\": {\n          \"actions\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/WorkflowActionItemDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"filters\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/WorkflowFilterItemDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"triggerType\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/PluginTriggerType\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"actions\",\n          \"filters\",\n          \"name\",\n          \"triggerType\"\n        ],\n        \"type\": \"object\"\n      },\n      \"WorkflowFilterItemDto\": {\n        \"properties\": {\n          \"filterConfig\": {\n            \"type\": \"object\"\n          },\n          \"pluginFilterId\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"pluginFilterId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"WorkflowFilterResponseDto\": {\n        \"properties\": {\n          \"filterConfig\": {\n            \"nullable\": true,\n            \"type\": \"object\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"order\": {\n            \"type\": \"number\"\n          },\n          \"pluginFilterId\": {\n            \"type\": \"string\"\n          },\n          \"workflowId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"filterConfig\",\n          \"id\",\n          \"order\",\n          \"pluginFilterId\",\n          \"workflowId\"\n        ],\n        \"type\": \"object\"\n      },\n      \"WorkflowResponseDto\": {\n        \"properties\": {\n          \"actions\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/WorkflowActionResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"createdAt\": {\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"filters\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/WorkflowFilterResponseDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"nullable\": true,\n            \"type\": \"string\"\n          },\n          \"ownerId\": {\n            \"type\": \"string\"\n          },\n          \"triggerType\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/PluginTriggerType\"\n              }\n            ]\n          }\n        },\n        \"required\": [\n          \"actions\",\n          \"createdAt\",\n          \"description\",\n          \"enabled\",\n          \"filters\",\n          \"id\",\n          \"name\",\n          \"ownerId\",\n          \"triggerType\"\n        ],\n        \"type\": \"object\"\n      },\n      \"WorkflowUpdateDto\": {\n        \"properties\": {\n          \"actions\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/WorkflowActionItemDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"enabled\": {\n            \"type\": \"boolean\"\n          },\n          \"filters\": {\n            \"items\": {\n              \"$ref\": \"#/components/schemas/WorkflowFilterItemDto\"\n            },\n            \"type\": \"array\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"triggerType\": {\n            \"allOf\": [\n              {\n                \"$ref\": \"#/components/schemas/PluginTriggerType\"\n              }\n            ]\n          }\n        },\n        \"type\": \"object\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/my-swashbuckle.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": { \"version\": \"v1\", \"title\": \"Test Controllers for SwaggerProvider\" },\n  \"host\": \"localhost:8735\",\n  \"schemes\": [\"http\"],\n  \"paths\": {\n    \"/api/ResourceStringString/{key}\": {\n      \"get\": {\n        \"tags\": [\"ResourceStringString\"],\n        \"operationId\": \"ResourceStringString_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          { \"name\": \"key\", \"in\": \"path\", \"required\": true, \"type\": \"string\" }\n        ],\n        \"responses\": {\n          \"200\": { \"description\": \"OK\", \"schema\": { \"type\": \"string\" } }\n        }\n      },\n      \"put\": {\n        \"tags\": [\"ResourceStringString\"],\n        \"operationId\": \"ResourceStringString_Put\",\n        \"consumes\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\",\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"produces\": [],\n        \"parameters\": [\n          { \"name\": \"key\", \"in\": \"path\", \"required\": true, \"type\": \"string\" },\n          {\n            \"name\": \"value\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": { \"type\": \"string\" }\n          }\n        ],\n        \"responses\": { \"204\": { \"description\": \"No Content\" } }\n      },\n      \"post\": {\n        \"tags\": [\"ResourceStringString\"],\n        \"operationId\": \"ResourceStringString_Post\",\n        \"consumes\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\",\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"produces\": [],\n        \"parameters\": [\n          { \"name\": \"key\", \"in\": \"path\", \"required\": true, \"type\": \"string\" },\n          {\n            \"name\": \"value\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": { \"type\": \"string\" }\n          }\n        ],\n        \"responses\": { \"204\": { \"description\": \"No Content\" } }\n      },\n      \"delete\": {\n        \"tags\": [\"ResourceStringString\"],\n        \"operationId\": \"ResourceStringString_Delete\",\n        \"consumes\": [],\n        \"produces\": [],\n        \"parameters\": [\n          { \"name\": \"key\", \"in\": \"path\", \"required\": true, \"type\": \"string\" }\n        ],\n        \"responses\": { \"204\": { \"description\": \"No Content\" } }\n      }\n    },\n    \"/api/ReturnArrayEnum\": {\n      \"get\": {\n        \"tags\": [\"ReturnArrayEnum\"],\n        \"operationId\": \"ReturnArrayEnum_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"enum\": [0, 1, 2],\n                \"type\": \"integer\"\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnArrayEnum\"],\n        \"operationId\": \"ReturnArrayEnum_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"enum\": [0, 1, 2],\n                \"type\": \"integer\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/api/ReturnArrayInt\": {\n      \"get\": {\n        \"tags\": [\"ReturnArrayInt\"],\n        \"operationId\": \"ReturnArrayInt_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnArrayInt\"],\n        \"operationId\": \"ReturnArrayInt_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      }\n    },\n    \"/api/ReturnBoolean\": {\n      \"get\": {\n        \"tags\": [\"ReturnBoolean\"],\n        \"operationId\": \"ReturnBoolean_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": { \"description\": \"OK\", \"schema\": { \"type\": \"boolean\" } }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnBoolean\"],\n        \"operationId\": \"ReturnBoolean_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": { \"description\": \"OK\", \"schema\": { \"type\": \"boolean\" } }\n        }\n      }\n    },\n    \"/api/ReturnDateTime\": {\n      \"get\": {\n        \"tags\": [\"ReturnDateTime\"],\n        \"operationId\": \"ReturnDateTime_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"date-time\", \"type\": \"string\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnDateTime\"],\n        \"operationId\": \"ReturnDateTime_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"date-time\", \"type\": \"string\" }\n          }\n        }\n      }\n    },\n    \"/api/ReturnDouble\": {\n      \"get\": {\n        \"tags\": [\"ReturnDouble\"],\n        \"operationId\": \"ReturnDouble_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"double\", \"type\": \"number\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnDouble\"],\n        \"operationId\": \"ReturnDouble_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"double\", \"type\": \"number\" }\n          }\n        }\n      }\n    },\n    \"/api/ReturnEnum\": {\n      \"get\": {\n        \"tags\": [\"ReturnEnum\"],\n        \"operationId\": \"ReturnEnum_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"format\": \"int32\",\n              \"enum\": [0, 1, 2],\n              \"type\": \"integer\"\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnEnum\"],\n        \"operationId\": \"ReturnEnum_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"format\": \"int32\",\n              \"enum\": [0, 1, 2],\n              \"type\": \"integer\"\n            }\n          }\n        }\n      }\n    },\n    \"/api/ReturnFileDescription\": {\n      \"get\": {\n        \"tags\": [\"ReturnFileDescription\"],\n        \"operationId\": \"ReturnFileDescription_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"$ref\": \"#/definitions/FileDescription\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnFileDescription\"],\n        \"operationId\": \"ReturnFileDescription_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"$ref\": \"#/definitions/FileDescription\" }\n          }\n        }\n      }\n    },\n    \"/api/ReturnFloat\": {\n      \"get\": {\n        \"tags\": [\"ReturnFloat\"],\n        \"operationId\": \"ReturnFloat_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"float\", \"type\": \"number\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnFloat\"],\n        \"operationId\": \"ReturnFloat_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"float\", \"type\": \"number\" }\n          }\n        }\n      }\n    },\n    \"/api/ReturnInt32\": {\n      \"get\": {\n        \"tags\": [\"ReturnInt32\"],\n        \"operationId\": \"ReturnInt32_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"int32\", \"type\": \"integer\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnInt32\"],\n        \"operationId\": \"ReturnInt32_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"int32\", \"type\": \"integer\" }\n          }\n        }\n      }\n    },\n    \"/api/ReturnInt64\": {\n      \"get\": {\n        \"tags\": [\"ReturnInt64\"],\n        \"operationId\": \"ReturnInt64_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"int64\", \"type\": \"integer\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnInt64\"],\n        \"operationId\": \"ReturnInt64_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"int64\", \"type\": \"integer\" }\n          }\n        }\n      }\n    },\n    \"/api/ReturnListInt\": {\n      \"get\": {\n        \"tags\": [\"ReturnListInt\"],\n        \"operationId\": \"ReturnListInt_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnListInt\"],\n        \"operationId\": \"ReturnListInt_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      }\n    },\n    \"/api/ReturnObjectPointClass\": {\n      \"get\": {\n        \"tags\": [\"ReturnObjectPointClass\"],\n        \"operationId\": \"ReturnObjectPointClass_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"$ref\": \"#/definitions/PointClass\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnObjectPointClass\"],\n        \"operationId\": \"ReturnObjectPointClass_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"$ref\": \"#/definitions/PointClass\" }\n          }\n        }\n      }\n    },\n    \"/api/ReturnSeqInt\": {\n      \"get\": {\n        \"tags\": [\"ReturnSeqInt\"],\n        \"operationId\": \"ReturnSeqInt_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnSeqInt\"],\n        \"operationId\": \"ReturnSeqInt_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      }\n    },\n    \"/api/ReturnString\": {\n      \"get\": {\n        \"tags\": [\"ReturnString\"],\n        \"operationId\": \"ReturnString_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": { \"description\": \"OK\", \"schema\": { \"type\": \"string\" } }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"ReturnString\"],\n        \"operationId\": \"ReturnString_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"responses\": {\n          \"200\": { \"description\": \"OK\", \"schema\": { \"type\": \"string\" } }\n        }\n      }\n    },\n    \"/api/UpdateArrayEnum\": {\n      \"get\": {\n        \"tags\": [\"UpdateArrayEnum\"],\n        \"operationId\": \"UpdateArrayEnum_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\",\n              \"enum\": [0, 1, 2]\n            },\n            \"collectionFormat\": \"multi\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"enum\": [0, 1, 2],\n                \"type\": \"integer\"\n              }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateArrayEnum\"],\n        \"operationId\": \"UpdateArrayEnum_Post\",\n        \"consumes\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\",\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"enum\": [0, 1, 2],\n                \"type\": \"integer\"\n              }\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"enum\": [0, 1, 2],\n                \"type\": \"integer\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/api/UpdateArrayInt\": {\n      \"get\": {\n        \"tags\": [\"UpdateArrayInt\"],\n        \"operationId\": \"UpdateArrayInt_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"array\",\n            \"items\": { \"type\": \"integer\", \"format\": \"int32\" },\n            \"collectionFormat\": \"multi\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateArrayInt\"],\n        \"operationId\": \"UpdateArrayInt_Post\",\n        \"consumes\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\",\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      }\n    },\n    \"/api/UpdateBool\": {\n      \"get\": {\n        \"tags\": [\"UpdateBool\"],\n        \"operationId\": \"UpdateBool_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          { \"name\": \"x\", \"in\": \"query\", \"required\": true, \"type\": \"boolean\" }\n        ],\n        \"responses\": {\n          \"200\": { \"description\": \"OK\", \"schema\": { \"type\": \"boolean\" } }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateBool\"],\n        \"operationId\": \"UpdateBool_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          { \"name\": \"x\", \"in\": \"query\", \"required\": true, \"type\": \"boolean\" }\n        ],\n        \"responses\": {\n          \"200\": { \"description\": \"OK\", \"schema\": { \"type\": \"boolean\" } }\n        }\n      }\n    },\n    \"/api/UpdateDateTime\": {\n      \"get\": {\n        \"tags\": [\"UpdateDateTime\"],\n        \"operationId\": \"UpdateDateTime_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"date-time\", \"type\": \"string\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateDateTime\"],\n        \"operationId\": \"UpdateDateTime_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"date-time\", \"type\": \"string\" }\n          }\n        }\n      }\n    },\n    \"/api/UpdateDouble\": {\n      \"get\": {\n        \"tags\": [\"UpdateDouble\"],\n        \"operationId\": \"UpdateDouble_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"number\",\n            \"format\": \"double\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"double\", \"type\": \"number\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateDouble\"],\n        \"operationId\": \"UpdateDouble_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"number\",\n            \"format\": \"double\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"double\", \"type\": \"number\" }\n          }\n        }\n      }\n    },\n    \"/api/UpdateEnum\": {\n      \"get\": {\n        \"tags\": [\"UpdateEnum\"],\n        \"operationId\": \"UpdateEnum_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"format\": \"int32\",\n            \"enum\": [0, 1, 2]\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"format\": \"int32\",\n              \"enum\": [0, 1, 2],\n              \"type\": \"integer\"\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateEnum\"],\n        \"operationId\": \"UpdateEnum_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"format\": \"int32\",\n            \"enum\": [0, 1, 2]\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"format\": \"int32\",\n              \"enum\": [0, 1, 2],\n              \"type\": \"integer\"\n            }\n          }\n        }\n      }\n    },\n    \"/api/UpdateFloat\": {\n      \"get\": {\n        \"tags\": [\"UpdateFloat\"],\n        \"operationId\": \"UpdateFloat_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"number\",\n            \"format\": \"float\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"float\", \"type\": \"number\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateFloat\"],\n        \"operationId\": \"UpdateFloat_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"number\",\n            \"format\": \"float\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"float\", \"type\": \"number\" }\n          }\n        }\n      }\n    },\n    \"/api/UpdateInt32\": {\n      \"get\": {\n        \"tags\": [\"UpdateInt32\"],\n        \"operationId\": \"UpdateInt32_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"int32\", \"type\": \"integer\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateInt32\"],\n        \"operationId\": \"UpdateInt32_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"int32\", \"type\": \"integer\" }\n          }\n        }\n      }\n    },\n    \"/api/UpdateInt64\": {\n      \"get\": {\n        \"tags\": [\"UpdateInt64\"],\n        \"operationId\": \"UpdateInt64_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"int64\", \"type\": \"integer\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateInt64\"],\n        \"operationId\": \"UpdateInt64_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"int64\", \"type\": \"integer\" }\n          }\n        }\n      }\n    },\n    \"/api/UpdateListInt\": {\n      \"get\": {\n        \"tags\": [\"UpdateListInt\"],\n        \"operationId\": \"UpdateListInt_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"array\",\n            \"items\": { \"type\": \"integer\", \"format\": \"int32\" },\n            \"collectionFormat\": \"multi\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateListInt\"],\n        \"operationId\": \"UpdateListInt_Post\",\n        \"consumes\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\",\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      }\n    },\n    \"/api/UpdateObjectFileDescriptionClass\": {\n      \"get\": {\n        \"tags\": [\"UpdateObjectFileDescriptionClass\"],\n        \"operationId\": \"UpdateObjectFileDescriptionClass_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"string\",\n            \"format\": \"byte\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"$ref\": \"#/definitions/FileDescription\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateObjectFileDescriptionClass\"],\n        \"operationId\": \"UpdateObjectFileDescriptionClass_Post\",\n        \"consumes\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\",\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": { \"$ref\": \"#/definitions/FileDescription\" }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"$ref\": \"#/definitions/FileDescription\" }\n          }\n        }\n      }\n    },\n    \"/api/UpdateObjectPointClass\": {\n      \"get\": {\n        \"tags\": [\"UpdateObjectPointClass\"],\n        \"operationId\": \"UpdateObjectPointClass_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x.x\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          },\n          {\n            \"name\": \"x.y\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"$ref\": \"#/definitions/PointClass\" }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateObjectPointClass\"],\n        \"operationId\": \"UpdateObjectPointClass_Post\",\n        \"consumes\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\",\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": { \"$ref\": \"#/definitions/PointClass\" }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"$ref\": \"#/definitions/PointClass\" }\n          }\n        }\n      }\n    },\n    \"/api/UpdateSeqInt\": {\n      \"get\": {\n        \"tags\": [\"UpdateSeqInt\"],\n        \"operationId\": \"UpdateSeqInt_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"array\",\n            \"items\": { \"type\": \"integer\", \"format\": \"int32\" },\n            \"collectionFormat\": \"multi\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateSeqInt\"],\n        \"operationId\": \"UpdateSeqInt_Post\",\n        \"consumes\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\",\n          \"application/x-www-form-urlencoded\"\n        ],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"body\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"format\": \"int32\", \"type\": \"integer\" }\n            }\n          }\n        }\n      }\n    },\n    \"/api/UpdateString\": {\n      \"get\": {\n        \"tags\": [\"UpdateString\"],\n        \"operationId\": \"UpdateString_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          { \"name\": \"x\", \"in\": \"query\", \"required\": true, \"type\": \"string\" }\n        ],\n        \"responses\": {\n          \"200\": { \"description\": \"OK\", \"schema\": { \"type\": \"string\" } }\n        }\n      },\n      \"post\": {\n        \"tags\": [\"UpdateString\"],\n        \"operationId\": \"UpdateString_Post\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          { \"name\": \"x\", \"in\": \"query\", \"required\": true, \"type\": \"string\" }\n        ],\n        \"responses\": {\n          \"200\": { \"description\": \"OK\", \"schema\": { \"type\": \"string\" } }\n        }\n      }\n    },\n    \"/api/UpdateWithOptionalInt\": {\n      \"get\": {\n        \"tags\": [\"UpdateWithOptionalInt\"],\n        \"operationId\": \"UpdateWithOptionalInt_Get\",\n        \"consumes\": [],\n        \"produces\": [\n          \"application/json\",\n          \"text/json\",\n          \"application/xml\",\n          \"text/xml\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"x\",\n            \"in\": \"query\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          },\n          {\n            \"name\": \"y\",\n            \"in\": \"query\",\n            \"required\": false,\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"schema\": { \"format\": \"int32\", \"type\": \"integer\" }\n          }\n        }\n      }\n    }\n  },\n  \"definitions\": {\n    \"FileDescription\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"Name\": { \"type\": \"string\" },\n        \"Bytes\": { \"format\": \"byte\", \"type\": \"string\" }\n      }\n    },\n    \"PointClass\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"X\": { \"format\": \"int32\", \"type\": \"integer\" },\n        \"Y\": { \"format\": \"int32\", \"type\": \"integer\" }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/nullable-date.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Nullable Date Test API\n  version: 1.0.0\npaths:\n  /test:\n    get:\n      operationId: getTest\n      responses:\n        '200':\n          description: Success\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/PersonDto'\ncomponents:\n  schemas:\n    PersonDto:\n      type: object\n      required:\n        - id\n        - name\n      properties:\n        id:\n          type: string\n        name:\n          type: string\n        birthDate:\n          type: string\n          format: date\n          nullable: true\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/nullable-parameter-issue261.json",
    "content": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": {\n    \"title\": \"Nullable Parameter Test\",\n    \"version\": \"1.0.0\"\n  },\n  \"paths\": {\n    \"/items/{id}\": {\n      \"get\": {\n        \"operationId\": \"GetItem\",\n        \"summary\": \"Get an item by ID\",\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"path\",\n            \"required\": true,\n            \"nullable\": true,\n            \"schema\": {\n              \"type\": \"string\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"OK\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"type\": \"string\"\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/petstore-v2.json",
    "content": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"description\": \"This is a sample server Petstore server.  You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/).  For this sample, you can use the api key `special-key` to test the authorization filters.\",\n    \"version\": \"1.0.0\",\n    \"title\": \"Swagger Petstore\",\n    \"termsOfService\": \"http://swagger.io/terms/\",\n    \"contact\": { \"email\": \"apiteam@swagger.io\" },\n    \"license\": {\n      \"name\": \"Apache 2.0\",\n      \"url\": \"http://www.apache.org/licenses/LICENSE-2.0.html\"\n    }\n  },\n  \"host\": \"petstore.swagger.io\",\n  \"basePath\": \"/v2\",\n  \"tags\": [\n    {\n      \"name\": \"pet\",\n      \"description\": \"Everything about your Pets\",\n      \"externalDocs\": {\n        \"description\": \"Find out more\",\n        \"url\": \"http://swagger.io\"\n      }\n    },\n    { \"name\": \"store\", \"description\": \"Access to Petstore orders\" },\n    {\n      \"name\": \"user\",\n      \"description\": \"Operations about user\",\n      \"externalDocs\": {\n        \"description\": \"Find out more about our store\",\n        \"url\": \"http://swagger.io\"\n      }\n    }\n  ],\n  \"schemes\": [\"https\", \"http\"],\n  \"paths\": {\n    \"/pet\": {\n      \"post\": {\n        \"tags\": [\"pet\"],\n        \"summary\": \"Add a new pet to the store\",\n        \"description\": \"\",\n        \"operationId\": \"addPet\",\n        \"consumes\": [\"application/json\", \"application/xml\"],\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"description\": \"Pet object that needs to be added to the store\",\n            \"required\": true,\n            \"schema\": { \"$ref\": \"#/definitions/Pet\" }\n          }\n        ],\n        \"responses\": { \"405\": { \"description\": \"Invalid input\" } },\n        \"security\": [{ \"petstore_auth\": [\"write:pets\", \"read:pets\"] }]\n      },\n      \"put\": {\n        \"tags\": [\"pet\"],\n        \"summary\": \"Update an existing pet\",\n        \"description\": \"\",\n        \"operationId\": \"updatePet\",\n        \"consumes\": [\"application/json\", \"application/xml\"],\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"description\": \"Pet object that needs to be added to the store\",\n            \"required\": true,\n            \"schema\": { \"$ref\": \"#/definitions/Pet\" }\n          }\n        ],\n        \"responses\": {\n          \"400\": { \"description\": \"Invalid ID supplied\" },\n          \"404\": { \"description\": \"Pet not found\" },\n          \"405\": { \"description\": \"Validation exception\" }\n        },\n        \"security\": [{ \"petstore_auth\": [\"write:pets\", \"read:pets\"] }]\n      }\n    },\n    \"/pet/findByStatus\": {\n      \"get\": {\n        \"tags\": [\"pet\"],\n        \"summary\": \"Finds Pets by status\",\n        \"description\": \"Multiple status values can be provided with comma separated strings\",\n        \"operationId\": \"findPetsByStatus\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"status\",\n            \"in\": \"query\",\n            \"description\": \"Status values that need to be considered for filter\",\n            \"required\": true,\n            \"type\": \"array\",\n            \"items\": {\n              \"type\": \"string\",\n              \"enum\": [\"available\", \"pending\", \"sold\"],\n              \"default\": \"available\"\n            },\n            \"collectionFormat\": \"multi\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successful operation\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"$ref\": \"#/definitions/Pet\" }\n            }\n          },\n          \"400\": { \"description\": \"Invalid status value\" }\n        },\n        \"security\": [{ \"petstore_auth\": [\"write:pets\", \"read:pets\"] }]\n      }\n    },\n    \"/pet/findByTags\": {\n      \"get\": {\n        \"tags\": [\"pet\"],\n        \"summary\": \"Finds Pets by tags\",\n        \"description\": \"Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.\",\n        \"operationId\": \"findPetsByTags\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"tags\",\n            \"in\": \"query\",\n            \"description\": \"Tags to filter by\",\n            \"required\": true,\n            \"type\": \"array\",\n            \"items\": { \"type\": \"string\" },\n            \"collectionFormat\": \"multi\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successful operation\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"$ref\": \"#/definitions/Pet\" }\n            }\n          },\n          \"400\": { \"description\": \"Invalid tag value\" }\n        },\n        \"security\": [{ \"petstore_auth\": [\"write:pets\", \"read:pets\"] }],\n        \"deprecated\": true\n      }\n    },\n    \"/pet/{petId}\": {\n      \"get\": {\n        \"tags\": [\"pet\"],\n        \"summary\": \"Find pet by ID\",\n        \"description\": \"Returns a single pet\",\n        \"operationId\": \"getPetById\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"petId\",\n            \"in\": \"path\",\n            \"description\": \"ID of pet to return\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successful operation\",\n            \"schema\": { \"$ref\": \"#/definitions/Pet\" }\n          },\n          \"400\": { \"description\": \"Invalid ID supplied\" },\n          \"404\": { \"description\": \"Pet not found\" }\n        },\n        \"security\": [{ \"api_key\": [] }]\n      },\n      \"post\": {\n        \"tags\": [\"pet\"],\n        \"summary\": \"Updates a pet in the store with form data\",\n        \"description\": \"\",\n        \"operationId\": \"updatePetWithForm\",\n        \"consumes\": [\"application/x-www-form-urlencoded\"],\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"petId\",\n            \"in\": \"path\",\n            \"description\": \"ID of pet that needs to be updated\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          {\n            \"name\": \"name\",\n            \"in\": \"formData\",\n            \"description\": \"Updated name of the pet\",\n            \"required\": false,\n            \"type\": \"string\"\n          },\n          {\n            \"name\": \"status\",\n            \"in\": \"formData\",\n            \"description\": \"Updated status of the pet\",\n            \"required\": false,\n            \"type\": \"string\"\n          }\n        ],\n        \"responses\": { \"405\": { \"description\": \"Invalid input\" } },\n        \"security\": [{ \"petstore_auth\": [\"write:pets\", \"read:pets\"] }]\n      },\n      \"delete\": {\n        \"tags\": [\"pet\"],\n        \"summary\": \"Deletes a pet\",\n        \"description\": \"\",\n        \"operationId\": \"deletePet\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"api_key\",\n            \"in\": \"header\",\n            \"required\": false,\n            \"type\": \"string\"\n          },\n          {\n            \"name\": \"petId\",\n            \"in\": \"path\",\n            \"description\": \"Pet id to delete\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          }\n        ],\n        \"responses\": {\n          \"400\": { \"description\": \"Invalid ID supplied\" },\n          \"404\": { \"description\": \"Pet not found\" }\n        },\n        \"security\": [{ \"petstore_auth\": [\"write:pets\", \"read:pets\"] }]\n      }\n    },\n    \"/pet/{petId}/uploadImage\": {\n      \"post\": {\n        \"tags\": [\"pet\"],\n        \"summary\": \"uploads an image\",\n        \"description\": \"\",\n        \"operationId\": \"uploadFile\",\n        \"consumes\": [\"multipart/form-data\"],\n        \"produces\": [\"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"petId\",\n            \"in\": \"path\",\n            \"description\": \"ID of pet to update\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          {\n            \"name\": \"additionalMetadata\",\n            \"in\": \"formData\",\n            \"description\": \"Additional data to pass to server\",\n            \"required\": false,\n            \"type\": \"string\"\n          },\n          {\n            \"name\": \"file\",\n            \"in\": \"formData\",\n            \"description\": \"file to upload\",\n            \"required\": false,\n            \"type\": \"file\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successful operation\",\n            \"schema\": { \"$ref\": \"#/definitions/ApiResponse\" }\n          }\n        },\n        \"security\": [{ \"petstore_auth\": [\"write:pets\", \"read:pets\"] }]\n      }\n    },\n    \"/store/inventory\": {\n      \"get\": {\n        \"tags\": [\"store\"],\n        \"summary\": \"Returns pet inventories by status\",\n        \"description\": \"Returns a map of status codes to quantities\",\n        \"operationId\": \"getInventory\",\n        \"produces\": [\"application/json\"],\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successful operation\",\n            \"schema\": {\n              \"type\": \"object\",\n              \"additionalProperties\": { \"type\": \"integer\", \"format\": \"int32\" }\n            }\n          }\n        },\n        \"security\": [{ \"api_key\": [] }]\n      }\n    },\n    \"/store/order\": {\n      \"post\": {\n        \"tags\": [\"store\"],\n        \"summary\": \"Place an order for a pet\",\n        \"description\": \"\",\n        \"operationId\": \"placeOrder\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"description\": \"order placed for purchasing the pet\",\n            \"required\": true,\n            \"schema\": { \"$ref\": \"#/definitions/Order\" }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successful operation\",\n            \"schema\": { \"$ref\": \"#/definitions/Order\" }\n          },\n          \"400\": { \"description\": \"Invalid Order\" }\n        }\n      }\n    },\n    \"/store/order/{orderId}\": {\n      \"get\": {\n        \"tags\": [\"store\"],\n        \"summary\": \"Find purchase order by ID\",\n        \"description\": \"For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions\",\n        \"operationId\": \"getOrderById\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"orderId\",\n            \"in\": \"path\",\n            \"description\": \"ID of pet that needs to be fetched\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"maximum\": 10.0,\n            \"minimum\": 1.0,\n            \"format\": \"int64\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successful operation\",\n            \"schema\": { \"$ref\": \"#/definitions/Order\" }\n          },\n          \"400\": { \"description\": \"Invalid ID supplied\" },\n          \"404\": { \"description\": \"Order not found\" }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\"store\"],\n        \"summary\": \"Delete purchase order by ID\",\n        \"description\": \"For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors\",\n        \"operationId\": \"deleteOrder\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"orderId\",\n            \"in\": \"path\",\n            \"description\": \"ID of the order that needs to be deleted\",\n            \"required\": true,\n            \"type\": \"integer\",\n            \"minimum\": 1.0,\n            \"format\": \"int64\"\n          }\n        ],\n        \"responses\": {\n          \"400\": { \"description\": \"Invalid ID supplied\" },\n          \"404\": { \"description\": \"Order not found\" }\n        }\n      }\n    },\n    \"/user\": {\n      \"post\": {\n        \"tags\": [\"user\"],\n        \"summary\": \"Create user\",\n        \"description\": \"This can only be done by the logged in user.\",\n        \"operationId\": \"createUser\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"description\": \"Created user object\",\n            \"required\": true,\n            \"schema\": { \"$ref\": \"#/definitions/User\" }\n          }\n        ],\n        \"responses\": { \"default\": { \"description\": \"successful operation\" } }\n      }\n    },\n    \"/user/createWithArray\": {\n      \"post\": {\n        \"tags\": [\"user\"],\n        \"summary\": \"Creates list of users with given input array\",\n        \"description\": \"\",\n        \"operationId\": \"createUsersWithArrayInput\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"description\": \"List of user object\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"$ref\": \"#/definitions/User\" }\n            }\n          }\n        ],\n        \"responses\": { \"default\": { \"description\": \"successful operation\" } }\n      }\n    },\n    \"/user/createWithList\": {\n      \"post\": {\n        \"tags\": [\"user\"],\n        \"summary\": \"Creates list of users with given input array\",\n        \"description\": \"\",\n        \"operationId\": \"createUsersWithListInput\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"description\": \"List of user object\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": { \"$ref\": \"#/definitions/User\" }\n            }\n          }\n        ],\n        \"responses\": { \"default\": { \"description\": \"successful operation\" } }\n      }\n    },\n    \"/user/login\": {\n      \"get\": {\n        \"tags\": [\"user\"],\n        \"summary\": \"Logs user into the system\",\n        \"description\": \"\",\n        \"operationId\": \"loginUser\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"username\",\n            \"in\": \"query\",\n            \"description\": \"The user name for login\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"name\": \"password\",\n            \"in\": \"query\",\n            \"description\": \"The password for login in clear text\",\n            \"required\": true,\n            \"type\": \"string\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successful operation\",\n            \"schema\": { \"type\": \"string\" },\n            \"headers\": {\n              \"X-Rate-Limit\": {\n                \"type\": \"integer\",\n                \"format\": \"int32\",\n                \"description\": \"calls per hour allowed by the user\"\n              },\n              \"X-Expires-After\": {\n                \"type\": \"string\",\n                \"format\": \"date-time\",\n                \"description\": \"date in UTC when token expires\"\n              }\n            }\n          },\n          \"400\": { \"description\": \"Invalid username/password supplied\" }\n        }\n      }\n    },\n    \"/user/logout\": {\n      \"get\": {\n        \"tags\": [\"user\"],\n        \"summary\": \"Logs out current logged in user session\",\n        \"description\": \"\",\n        \"operationId\": \"logoutUser\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [],\n        \"responses\": { \"default\": { \"description\": \"successful operation\" } }\n      }\n    },\n    \"/user/{username}\": {\n      \"get\": {\n        \"tags\": [\"user\"],\n        \"summary\": \"Get user by user name\",\n        \"description\": \"\",\n        \"operationId\": \"getUserByName\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"username\",\n            \"in\": \"path\",\n            \"description\": \"The name that needs to be fetched. Use user1 for testing. \",\n            \"required\": true,\n            \"type\": \"string\"\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"successful operation\",\n            \"schema\": { \"$ref\": \"#/definitions/User\" }\n          },\n          \"400\": { \"description\": \"Invalid username supplied\" },\n          \"404\": { \"description\": \"User not found\" }\n        }\n      },\n      \"put\": {\n        \"tags\": [\"user\"],\n        \"summary\": \"Updated user\",\n        \"description\": \"This can only be done by the logged in user.\",\n        \"operationId\": \"updateUser\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"username\",\n            \"in\": \"path\",\n            \"description\": \"name that need to be updated\",\n            \"required\": true,\n            \"type\": \"string\"\n          },\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"description\": \"Updated user object\",\n            \"required\": true,\n            \"schema\": { \"$ref\": \"#/definitions/User\" }\n          }\n        ],\n        \"responses\": {\n          \"400\": { \"description\": \"Invalid user supplied\" },\n          \"404\": { \"description\": \"User not found\" }\n        }\n      },\n      \"delete\": {\n        \"tags\": [\"user\"],\n        \"summary\": \"Delete user\",\n        \"description\": \"This can only be done by the logged in user.\",\n        \"operationId\": \"deleteUser\",\n        \"produces\": [\"application/xml\", \"application/json\"],\n        \"parameters\": [\n          {\n            \"name\": \"username\",\n            \"in\": \"path\",\n            \"description\": \"The name that needs to be deleted\",\n            \"required\": true,\n            \"type\": \"string\"\n          }\n        ],\n        \"responses\": {\n          \"400\": { \"description\": \"Invalid username supplied\" },\n          \"404\": { \"description\": \"User not found\" }\n        }\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"petstore_auth\": {\n      \"type\": \"oauth2\",\n      \"authorizationUrl\": \"https://petstore.swagger.io/oauth/authorize\",\n      \"flow\": \"implicit\",\n      \"scopes\": {\n        \"write:pets\": \"modify pets in your account\",\n        \"read:pets\": \"read your pets\"\n      }\n    },\n    \"api_key\": { \"type\": \"apiKey\", \"name\": \"api_key\", \"in\": \"header\" }\n  },\n  \"definitions\": {\n    \"Order\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"id\": { \"type\": \"integer\", \"format\": \"int64\" },\n        \"petId\": { \"type\": \"integer\", \"format\": \"int64\" },\n        \"quantity\": { \"type\": \"integer\", \"format\": \"int32\" },\n        \"shipDate\": { \"type\": \"string\", \"format\": \"date-time\" },\n        \"status\": {\n          \"type\": \"string\",\n          \"description\": \"Order Status\",\n          \"enum\": [\"placed\", \"approved\", \"delivered\"]\n        },\n        \"complete\": { \"type\": \"boolean\", \"default\": false }\n      },\n      \"xml\": { \"name\": \"Order\" }\n    },\n    \"User\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"id\": { \"type\": \"integer\", \"format\": \"int64\" },\n        \"username\": { \"type\": \"string\" },\n        \"firstName\": { \"type\": \"string\" },\n        \"lastName\": { \"type\": \"string\" },\n        \"email\": { \"type\": \"string\" },\n        \"password\": { \"type\": \"string\" },\n        \"phone\": { \"type\": \"string\" },\n        \"userStatus\": {\n          \"type\": \"integer\",\n          \"format\": \"int32\",\n          \"description\": \"User Status\"\n        }\n      },\n      \"xml\": { \"name\": \"User\" }\n    },\n    \"Category\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"id\": { \"type\": \"integer\", \"format\": \"int64\" },\n        \"name\": { \"type\": \"string\" }\n      },\n      \"xml\": { \"name\": \"Category\" }\n    },\n    \"Tag\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"id\": { \"type\": \"integer\", \"format\": \"int64\" },\n        \"name\": { \"type\": \"string\" }\n      },\n      \"xml\": { \"name\": \"Tag\" }\n    },\n    \"Pet\": {\n      \"type\": \"object\",\n      \"required\": [\"name\", \"photoUrls\"],\n      \"properties\": {\n        \"id\": { \"type\": \"integer\", \"format\": \"int64\" },\n        \"category\": { \"$ref\": \"#/definitions/Category\" },\n        \"name\": { \"type\": \"string\", \"example\": \"doggie\" },\n        \"photoUrls\": {\n          \"type\": \"array\",\n          \"xml\": { \"name\": \"photoUrl\", \"wrapped\": true },\n          \"items\": { \"type\": \"string\" }\n        },\n        \"tags\": {\n          \"type\": \"array\",\n          \"xml\": { \"name\": \"tag\", \"wrapped\": true },\n          \"items\": { \"$ref\": \"#/definitions/Tag\" }\n        },\n        \"status\": {\n          \"type\": \"string\",\n          \"description\": \"pet status in the store\",\n          \"enum\": [\"available\", \"pending\", \"sold\"]\n        }\n      },\n      \"xml\": { \"name\": \"Pet\" }\n    },\n    \"ApiResponse\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"code\": { \"type\": \"integer\", \"format\": \"int32\" },\n        \"type\": { \"type\": \"string\" },\n        \"message\": { \"type\": \"string\" }\n      }\n    }\n  },\n  \"externalDocs\": {\n    \"description\": \"Find out more about Swagger\",\n    \"url\": \"http://swagger.io\"\n  }\n}\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/petstore.yaml",
    "content": "openapi: 3.0.2\ninfo:\n  title: Swagger Petstore - OpenAPI 3.0\n  description: \"This is a sample Pet Store Server based on the OpenAPI 3.0 specification.\\\n    \\  You can find out more about\\nSwagger at [http://swagger.io](http://swagger.io).\\\n    \\ In the third iteration of the pet store, we've switched to the design first\\\n    \\ approach!\\nYou can now help us improve the API whether it's by making changes\\\n    \\ to the definition itself or to the code.\\nThat way, with time, we can improve\\\n    \\ the API in general, and expose some of the new features in OAS3.\\n\\nSome useful\\\n    \\ links:\\n- [The Pet Store repository](https://github.com/swagger-api/swagger-petstore)\\n\\\n    - [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml)\"\n  termsOfService: http://swagger.io/terms/\n  contact:\n    email: apiteam@swagger.io\n  license:\n    name: Apache 2.0\n    url: http://www.apache.org/licenses/LICENSE-2.0.html\n  version: 1.0.15\nexternalDocs:\n  description: Find out more about Swagger\n  url: http://swagger.io\nservers:\n- url: /api/v3\ntags:\n- name: pet\n  description: Everything about your Pets\n  externalDocs:\n    description: Find out more\n    url: http://swagger.io\n- name: store\n  description: Access to Petstore orders\n  externalDocs:\n    description: Find out more about our store\n    url: http://swagger.io\n- name: user\n  description: Operations about user\npaths:\n  /pet:\n    put:\n      tags:\n      - pet\n      summary: Update an existing pet\n      description: Update an existing pet by Id\n      operationId: updatePet\n      requestBody:\n        description: Update an existent pet in the store\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Pet'\n          application/xml:\n            schema:\n              $ref: '#/components/schemas/Pet'\n          application/x-www-form-urlencoded:\n            schema:\n              $ref: '#/components/schemas/Pet'\n        required: true\n      responses:\n        \"200\":\n          description: Successful operation\n          content:\n            application/xml:\n              schema:\n                $ref: '#/components/schemas/Pet'\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Pet'\n        \"400\":\n          description: Invalid ID supplied\n        \"404\":\n          description: Pet not found\n        \"405\":\n          description: Validation exception\n      security:\n      - petstore_auth:\n        - write:pets\n        - read:pets\n    post:\n      tags:\n      - pet\n      summary: Add a new pet to the store\n      description: Add a new pet to the store\n      operationId: addPet\n      requestBody:\n        description: Create a new pet in the store\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Pet'\n          application/xml:\n            schema:\n              $ref: '#/components/schemas/Pet'\n          application/x-www-form-urlencoded:\n            schema:\n              $ref: '#/components/schemas/Pet'\n        required: true\n      responses:\n        \"200\":\n          description: Successful operation\n          content:\n            application/xml:\n              schema:\n                $ref: '#/components/schemas/Pet'\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Pet'\n        \"405\":\n          description: Invalid input\n      security:\n      - petstore_auth:\n        - write:pets\n        - read:pets\n  /pet/findByStatus:\n    get:\n      tags:\n      - pet\n      summary: Finds Pets by status\n      description: Multiple status values can be provided with comma separated strings\n      operationId: findPetsByStatus\n      parameters:\n      - name: status\n        in: query\n        description: Status values that need to be considered for filter\n        required: false\n        explode: true\n        schema:\n          type: string\n          default: available\n          enum:\n          - available\n          - pending\n          - sold\n      responses:\n        \"200\":\n          description: successful operation\n          content:\n            application/xml:\n              schema:\n                type: array\n                items:\n                  $ref: '#/components/schemas/Pet'\n            application/json:\n              schema:\n                type: array\n                items:\n                  $ref: '#/components/schemas/Pet'\n        \"400\":\n          description: Invalid status value\n      security:\n      - petstore_auth:\n        - write:pets\n        - read:pets\n  /pet/findByTags:\n    get:\n      tags:\n      - pet\n      summary: Finds Pets by tags\n      description: \"Multiple tags can be provided with comma separated strings. Use\\\n        \\ tag1, tag2, tag3 for testing.\"\n      operationId: findPetsByTags\n      parameters:\n      - name: tags\n        in: query\n        description: Tags to filter by\n        required: false\n        explode: true\n        schema:\n          type: array\n          items:\n            type: string\n      responses:\n        \"200\":\n          description: successful operation\n          content:\n            application/xml:\n              schema:\n                type: array\n                items:\n                  $ref: '#/components/schemas/Pet'\n            application/json:\n              schema:\n                type: array\n                items:\n                  $ref: '#/components/schemas/Pet'\n        \"400\":\n          description: Invalid tag value\n      security:\n      - petstore_auth:\n        - write:pets\n        - read:pets\n  /pet/{petId}:\n    get:\n      tags:\n      - pet\n      summary: Find pet by ID\n      description: Returns a single pet\n      operationId: getPetById\n      parameters:\n      - name: petId\n        in: path\n        description: ID of pet to return\n        required: true\n        schema:\n          type: integer\n          format: int64\n      responses:\n        \"200\":\n          description: successful operation\n          content:\n            application/xml:\n              schema:\n                $ref: '#/components/schemas/Pet'\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Pet'\n        \"400\":\n          description: Invalid ID supplied\n        \"404\":\n          description: Pet not found\n      security:\n      - api_key: []\n      - petstore_auth:\n        - write:pets\n        - read:pets\n    post:\n      tags:\n      - pet\n      summary: Updates a pet in the store with form data\n      description: \"\"\n      operationId: updatePetWithForm\n      parameters:\n      - name: petId\n        in: path\n        description: ID of pet that needs to be updated\n        required: true\n        schema:\n          type: integer\n          format: int64\n      - name: name\n        in: query\n        description: Name of pet that needs to be updated\n        schema:\n          type: string\n      - name: status\n        in: query\n        description: Status of pet that needs to be updated\n        schema:\n          type: string\n      responses:\n        \"405\":\n          description: Invalid input\n      security:\n      - petstore_auth:\n        - write:pets\n        - read:pets\n    delete:\n      tags:\n      - pet\n      summary: Deletes a pet\n      description: \"\"\n      operationId: deletePet\n      parameters:\n      - name: api_key\n        in: header\n        description: \"\"\n        required: false\n        schema:\n          type: string\n      - name: petId\n        in: path\n        description: Pet id to delete\n        required: true\n        schema:\n          type: integer\n          format: int64\n      responses:\n        \"400\":\n          description: Invalid pet value\n      security:\n      - petstore_auth:\n        - write:pets\n        - read:pets\n  /pet/{petId}/uploadImage:\n    post:\n      tags:\n      - pet\n      summary: uploads an image\n      description: \"\"\n      operationId: uploadFile\n      parameters:\n      - name: petId\n        in: path\n        description: ID of pet to update\n        required: true\n        schema:\n          type: integer\n          format: int64\n      - name: additionalMetadata\n        in: query\n        description: Additional Metadata\n        required: false\n        schema:\n          type: string\n      requestBody:\n        content:\n          application/octet-stream:\n            schema:\n              type: string\n              format: binary\n      responses:\n        \"200\":\n          description: successful operation\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/ApiResponse'\n      security:\n      - petstore_auth:\n        - write:pets\n        - read:pets\n  /store/inventory:\n    get:\n      tags:\n      - store\n      summary: Returns pet inventories by status\n      description: Returns a map of status codes to quantities\n      operationId: getInventory\n      responses:\n        \"200\":\n          description: successful operation\n          content:\n            application/json:\n              schema:\n                type: object\n                additionalProperties:\n                  type: integer\n                  format: int32\n      security:\n      - api_key: []\n  /store/order:\n    post:\n      tags:\n      - store\n      summary: Place an order for a pet\n      description: Place a new order in the store\n      operationId: placeOrder\n      requestBody:\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Order'\n          application/xml:\n            schema:\n              $ref: '#/components/schemas/Order'\n          application/x-www-form-urlencoded:\n            schema:\n              $ref: '#/components/schemas/Order'\n      responses:\n        \"200\":\n          description: successful operation\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Order'\n        \"405\":\n          description: Invalid input\n  /store/order/{orderId}:\n    get:\n      tags:\n      - store\n      summary: Find purchase order by ID\n      description: For valid response try integer IDs with value <= 5 or > 10. Other\n        values will generate exceptions.\n      operationId: getOrderById\n      parameters:\n      - name: orderId\n        in: path\n        description: ID of order that needs to be fetched\n        required: true\n        schema:\n          type: integer\n          format: int64\n      responses:\n        \"200\":\n          description: successful operation\n          content:\n            application/xml:\n              schema:\n                $ref: '#/components/schemas/Order'\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Order'\n        \"400\":\n          description: Invalid ID supplied\n        \"404\":\n          description: Order not found\n    delete:\n      tags:\n      - store\n      summary: Delete purchase order by ID\n      description: For valid response try integer IDs with value < 1000. Anything\n        above 1000 or nonintegers will generate API errors\n      operationId: deleteOrder\n      parameters:\n      - name: orderId\n        in: path\n        description: ID of the order that needs to be deleted\n        required: true\n        schema:\n          type: integer\n          format: int64\n      responses:\n        \"400\":\n          description: Invalid ID supplied\n        \"404\":\n          description: Order not found\n  /user:\n    post:\n      tags:\n      - user\n      summary: Create user\n      description: This can only be done by the logged in user.\n      operationId: createUser\n      requestBody:\n        description: Created user object\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/User'\n          application/xml:\n            schema:\n              $ref: '#/components/schemas/User'\n          application/x-www-form-urlencoded:\n            schema:\n              $ref: '#/components/schemas/User'\n      responses:\n        default:\n          description: successful operation\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/User'\n            application/xml:\n              schema:\n                $ref: '#/components/schemas/User'\n  /user/createWithList:\n    post:\n      tags:\n      - user\n      summary: Creates list of users with given input array\n      description: Creates list of users with given input array\n      operationId: createUsersWithListInput\n      requestBody:\n        content:\n          application/json:\n            schema:\n              type: array\n              items:\n                $ref: '#/components/schemas/User'\n      responses:\n        \"200\":\n          description: Successful operation\n          content:\n            application/xml:\n              schema:\n                $ref: '#/components/schemas/User'\n            application/json:\n              schema:\n                $ref: '#/components/schemas/User'\n        default:\n          description: successful operation\n  /user/login:\n    get:\n      tags:\n      - user\n      summary: Logs user into the system\n      description: \"\"\n      operationId: loginUser\n      parameters:\n      - name: username\n        in: query\n        description: The user name for login\n        required: false\n        schema:\n          type: string\n      - name: password\n        in: query\n        description: The password for login in clear text\n        required: false\n        schema:\n          type: string\n      responses:\n        \"200\":\n          description: successful operation\n          headers:\n            X-Rate-Limit:\n              description: calls per hour allowed by the user\n              schema:\n                type: integer\n                format: int32\n            X-Expires-After:\n              description: date in UTC when token expires\n              schema:\n                type: string\n                format: date-time\n          content:\n            application/xml:\n              schema:\n                type: string\n            application/json:\n              schema:\n                type: string\n        \"400\":\n          description: Invalid username/password supplied\n  /user/logout:\n    get:\n      tags:\n      - user\n      summary: Logs out current logged in user session\n      description: \"\"\n      operationId: logoutUser\n      parameters: []\n      responses:\n        default:\n          description: successful operation\n  /user/{username}:\n    get:\n      tags:\n      - user\n      summary: Get user by user name\n      description: \"\"\n      operationId: getUserByName\n      parameters:\n      - name: username\n        in: path\n        description: 'The name that needs to be fetched. Use user1 for testing. '\n        required: true\n        schema:\n          type: string\n      responses:\n        \"200\":\n          description: successful operation\n          content:\n            application/xml:\n              schema:\n                $ref: '#/components/schemas/User'\n            application/json:\n              schema:\n                $ref: '#/components/schemas/User'\n        \"400\":\n          description: Invalid username supplied\n        \"404\":\n          description: User not found\n    put:\n      tags:\n      - user\n      summary: Update user\n      description: This can only be done by the logged in user.\n      operationId: updateUser\n      parameters:\n      - name: username\n        in: path\n        description: name that need to be deleted\n        required: true\n        schema:\n          type: string\n      requestBody:\n        description: Update an existent user in the store\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/User'\n          application/xml:\n            schema:\n              $ref: '#/components/schemas/User'\n          application/x-www-form-urlencoded:\n            schema:\n              $ref: '#/components/schemas/User'\n      responses:\n        default:\n          description: successful operation\n    delete:\n      tags:\n      - user\n      summary: Delete user\n      description: This can only be done by the logged in user.\n      operationId: deleteUser\n      parameters:\n      - name: username\n        in: path\n        description: The name that needs to be deleted\n        required: true\n        schema:\n          type: string\n      responses:\n        \"400\":\n          description: Invalid username supplied\n        \"404\":\n          description: User not found\ncomponents:\n  schemas:\n    Order:\n      type: object\n      properties:\n        id:\n          type: integer\n          format: int64\n          example: 10\n        petId:\n          type: integer\n          format: int64\n          example: 198772\n        quantity:\n          type: integer\n          format: int32\n          example: 7\n        shipDate:\n          type: string\n          format: date-time\n        status:\n          type: string\n          description: Order Status\n          example: approved\n          enum:\n          - placed\n          - approved\n          - delivered\n        complete:\n          type: boolean\n      xml:\n        name: order\n    Customer:\n      type: object\n      properties:\n        id:\n          type: integer\n          format: int64\n          example: 100000\n        username:\n          type: string\n          example: fehguy\n        address:\n          type: array\n          xml:\n            name: addresses\n            wrapped: true\n          items:\n            $ref: '#/components/schemas/Address'\n      xml:\n        name: customer\n    Address:\n      type: object\n      properties:\n        street:\n          type: string\n          example: 437 Lytton\n        city:\n          type: string\n          example: Palo Alto\n        state:\n          type: string\n          example: CA\n        zip:\n          type: string\n          example: \"94301\"\n      xml:\n        name: address\n    Category:\n      type: object\n      properties:\n        id:\n          type: integer\n          format: int64\n          example: 1\n        name:\n          type: string\n          example: Dogs\n      xml:\n        name: category\n    User:\n      type: object\n      properties:\n        id:\n          type: integer\n          format: int64\n          example: 10\n        username:\n          type: string\n          example: theUser\n        firstName:\n          type: string\n          example: John\n        lastName:\n          type: string\n          example: James\n        email:\n          type: string\n          example: john@email.com\n        password:\n          type: string\n          example: \"12345\"\n        phone:\n          type: string\n          example: \"12345\"\n        userStatus:\n          type: integer\n          description: User Status\n          format: int32\n          example: 1\n      xml:\n        name: user\n    Tag:\n      type: object\n      properties:\n        id:\n          type: integer\n          format: int64\n        name:\n          type: string\n      xml:\n        name: tag\n    Pet:\n      required:\n      - name\n      - photoUrls\n      type: object\n      properties:\n        id:\n          type: integer\n          format: int64\n          example: 10\n        name:\n          type: string\n          example: doggie\n        category:\n          $ref: '#/components/schemas/Category'\n        photoUrls:\n          type: array\n          xml:\n            wrapped: true\n          items:\n            type: string\n            xml:\n              name: photoUrl\n        tags:\n          type: array\n          xml:\n            wrapped: true\n          items:\n            $ref: '#/components/schemas/Tag'\n        status:\n          type: string\n          description: pet status in the store\n          enum:\n          - available\n          - pending\n          - sold\n      xml:\n        name: pet\n    ApiResponse:\n      type: object\n      properties:\n        code:\n          type: integer\n          format: int32\n        type:\n          type: string\n        message:\n          type: string\n      xml:\n        name: '##default'\n  requestBodies:\n    Pet:\n      description: Pet object that needs to be added to the store\n      content:\n        application/json:\n          schema:\n            $ref: '#/components/schemas/Pet'\n        application/xml:\n          schema:\n            $ref: '#/components/schemas/Pet'\n    UserArray:\n      description: List of user object\n      content:\n        application/json:\n          schema:\n            type: array\n            items:\n              $ref: '#/components/schemas/User'\n  securitySchemes:\n    petstore_auth:\n      type: oauth2\n      flows:\n        implicit:\n          authorizationUrl: https://petstore3.swagger.io/oauth/authorize\n          scopes:\n            write:pets: modify pets in your account\n            read:pets: read your pets\n    api_key:\n      type: apiKey\n      name: api_key\n      in: header\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/slack.json",
    "content": "{\n    \"basePath\": \"/api\",\n    \"definitions\": {\n        \"blocks\": {\n            \"description\": \"This is a very loose definition, in the future, we'll populate this with deeper schema in this definition namespace.\",\n            \"items\": {\n                \"additionalProperties\": true,\n                \"properties\": {\n                    \"type\": {\n                        \"type\": \"string\"\n                    }\n                },\n                \"required\": [\n                    \"type\"\n                ],\n                \"type\": \"object\"\n            },\n            \"title\": \"Block Kit blocks\",\n            \"type\": \"array\"\n        },\n        \"defs_app_id\": {\n            \"pattern\": \"^A[A-Z0-9]{8}$\",\n            \"title\": \"App ID\",\n            \"type\": \"string\"\n        },\n        \"defs_bot_id\": {\n            \"pattern\": \"^B[A-Z0-9]{8}$\",\n            \"title\": \"Bot User ID\",\n            \"type\": \"string\"\n        },\n        \"defs_channel\": {\n            \"pattern\": \"^[CGD][A-Z0-9]{8}$\",\n            \"title\": \"Channel-like conversation ID\",\n            \"type\": \"string\"\n        },\n        \"defs_channel_id\": {\n            \"pattern\": \"^[C][A-Z0-9]{8}$\",\n            \"title\": \"Channel ID\",\n            \"type\": \"string\"\n        },\n        \"defs_channel_name\": {\n            \"title\": \"Name of a channel\",\n            \"type\": \"string\"\n        },\n        \"defs_comment_id\": {\n            \"pattern\": \"^Fc[A-Z0-9]{8}$\",\n            \"title\": \"File Comment ID\",\n            \"type\": \"string\"\n        },\n        \"defs_dm_id\": {\n            \"pattern\": \"^[D][A-Z0-9]{8}$\",\n            \"title\": \"Direct Message Channel ID\",\n            \"type\": \"string\"\n        },\n        \"defs_enterprise_id\": {\n            \"pattern\": \"^[E][A-Z0-9]{8}$\",\n            \"title\": \"Enterprise ID\",\n            \"type\": \"string\"\n        },\n        \"defs_enterprise_name\": {\n            \"title\": \"Name of the enterprise org\",\n            \"type\": \"string\"\n        },\n        \"defs_enterprise_user_id\": {\n            \"pattern\": \"^[W][A-Z0-9]{8}$\",\n            \"title\": \"Enterprise User ID\",\n            \"type\": \"string\"\n        },\n        \"defs_file_id\": {\n            \"pattern\": \"^[F][A-Z0-9]{8}$\",\n            \"title\": \"File ID\",\n            \"type\": \"string\"\n        },\n        \"defs_group_id\": {\n            \"pattern\": \"^[G][A-Z0-9]{8}$\",\n            \"title\": \"Private Channel ID\",\n            \"type\": \"string\"\n        },\n        \"defs_ok_false\": {\n            \"enum\": [\n                false\n            ],\n            \"title\": \"default failure response\",\n            \"type\": \"boolean\"\n        },\n        \"defs_ok_true\": {\n            \"enum\": [\n                true\n            ],\n            \"title\": \"default success response\",\n            \"type\": \"boolean\"\n        },\n        \"defs_pinned_info\": {\n            \"additionalProperties\": {\n                \"additionalProperties\": false,\n                \"properties\": {\n                    \"pinned_by\": {\n                        \"$ref\": \"#/definitions/defs_user_id\"\n                    },\n                    \"pinned_ts\": {\n                        \"type\": \"integer\"\n                    }\n                },\n                \"required\": [\n                    \"pinned_by\",\n                    \"pinned_ts\"\n                ],\n                \"type\": \"object\"\n            },\n            \"title\": \"Info for a pinned item\",\n            \"type\": \"object\"\n        },\n        \"defs_reminder_id\": {\n            \"pattern\": \"^Rm[A-Z0-9]{8}$\",\n            \"title\": \"Reminder ID\",\n            \"type\": \"string\"\n        },\n        \"defs_subteam_id\": {\n            \"pattern\": \"^S[A-Z0-9]{8}$\",\n            \"title\": \"Subteam ID\",\n            \"type\": \"string\"\n        },\n        \"defs_team\": {\n            \"pattern\": \"^[T][A-Z0-9]{8}$\",\n            \"title\": \"Team ID\",\n            \"type\": \"string\"\n        },\n        \"defs_topic_purpose_creator\": {\n            \"pattern\": \"^[UW][A-Z0-9]{8}$|^$\",\n            \"title\": \"User ID or empty string, used for topic and purpose creation\",\n            \"type\": \"string\"\n        },\n        \"defs_ts\": {\n            \"pattern\": \"^\\\\d{10}\\\\.\\\\d{6}$\",\n            \"title\": \"Timestamp in format 0123456789.012345\",\n            \"type\": \"string\"\n        },\n        \"defs_user_id\": {\n            \"pattern\": \"^[UW][A-Z0-9]{8}$\",\n            \"title\": \"User ID\",\n            \"type\": \"string\"\n        },\n        \"defs_workspace_id\": {\n            \"pattern\": \"^[TE][A-Z0-9]{8}$\",\n            \"title\": \"Team or Enterprise ID\",\n            \"type\": \"string\"\n        },\n        \"objs_channel\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"accepted_user\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                },\n                \"created\": {\n                    \"type\": \"integer\"\n                },\n                \"creator\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                },\n                \"id\": {\n                    \"$ref\": \"#/definitions/defs_channel_id\"\n                },\n                \"is_archived\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_channel\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_general\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_member\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_moved\": {\n                    \"type\": \"integer\"\n                },\n                \"is_mpim\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_org_shared\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_pending_ext_shared\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_private\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_read_only\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_shared\": {\n                    \"type\": \"boolean\"\n                },\n                \"last_read\": {\n                    \"$ref\": \"#/definitions/defs_ts\"\n                },\n                \"latest\": {\n                    \"items\": [\n                        {\n                            \"$ref\": \"#/definitions/objs_message\"\n                        },\n                        {\n                            \"type\": \"null\"\n                        }\n                    ]\n                },\n                \"members\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_user_id\"\n                    },\n                    \"minItems\": 0,\n                    \"type\": \"array\",\n                    \"uniqueItems\": true\n                },\n                \"name\": {\n                    \"type\": \"string\"\n                },\n                \"name_normalized\": {\n                    \"type\": \"string\"\n                },\n                \"num_members\": {\n                    \"type\": \"integer\"\n                },\n                \"pending_shared\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_team\"\n                    },\n                    \"minItems\": 0,\n                    \"type\": \"array\",\n                    \"uniqueItems\": true\n                },\n                \"previous_names\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_channel_name\"\n                    },\n                    \"minItems\": 0,\n                    \"type\": \"array\",\n                    \"uniqueItems\": true\n                },\n                \"priority\": {\n                    \"type\": \"number\"\n                },\n                \"purpose\": {\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                        \"creator\": {\n                            \"$ref\": \"#/definitions/defs_topic_purpose_creator\"\n                        },\n                        \"last_set\": {\n                            \"type\": \"integer\"\n                        },\n                        \"value\": {\n                            \"type\": \"string\"\n                        }\n                    },\n                    \"required\": [\n                        \"value\",\n                        \"creator\",\n                        \"last_set\"\n                    ],\n                    \"type\": \"object\"\n                },\n                \"topic\": {\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                        \"creator\": {\n                            \"$ref\": \"#/definitions/defs_topic_purpose_creator\"\n                        },\n                        \"last_set\": {\n                            \"type\": \"integer\"\n                        },\n                        \"value\": {\n                            \"type\": \"string\"\n                        }\n                    },\n                    \"required\": [\n                        \"value\",\n                        \"creator\",\n                        \"last_set\"\n                    ],\n                    \"type\": \"object\"\n                },\n                \"unlinked\": {\n                    \"title\": \"Field to determine whether a channel has ever been shared/disconnected in the past\",\n                    \"type\": \"integer\"\n                },\n                \"unread_count\": {\n                    \"type\": \"integer\"\n                },\n                \"unread_count_display\": {\n                    \"type\": \"integer\"\n                }\n            },\n            \"required\": [\n                \"id\",\n                \"name\",\n                \"created\",\n                \"creator\",\n                \"is_channel\",\n                \"is_org_shared\",\n                \"is_private\",\n                \"is_mpim\",\n                \"is_shared\",\n                \"name_normalized\",\n                \"members\",\n                \"topic\",\n                \"purpose\"\n            ],\n            \"title\": \"Channel Object\",\n            \"type\": \"object\"\n        },\n        \"objs_comment\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"comment\": {\n                    \"type\": \"string\"\n                },\n                \"created\": {\n                    \"type\": \"integer\"\n                },\n                \"id\": {\n                    \"$ref\": \"#/definitions/defs_comment_id\"\n                },\n                \"is_intro\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_starred\": {\n                    \"type\": \"boolean\"\n                },\n                \"num_stars\": {\n                    \"type\": \"integer\"\n                },\n                \"pinned_info\": {\n                    \"$ref\": \"#/definitions/defs_pinned_info\"\n                },\n                \"pinned_to\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_channel\"\n                    },\n                    \"type\": \"array\"\n                },\n                \"reactions\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/objs_reaction\"\n                    },\n                    \"type\": \"array\"\n                },\n                \"timestamp\": {\n                    \"type\": \"integer\"\n                },\n                \"user\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                }\n            },\n            \"required\": [\n                \"id\",\n                \"created\",\n                \"timestamp\",\n                \"user\",\n                \"is_intro\",\n                \"comment\"\n            ],\n            \"title\": \"File Comment Object\",\n            \"type\": \"object\"\n        },\n        \"objs_comments\": {\n            \"items\": {},\n            \"title\": \"file comments object\",\n            \"type\": \"array\"\n        },\n        \"objs_conversation\": {\n            \"items\": [\n                {\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                        \"accepted_user\": {\n                            \"$ref\": \"#/definitions/defs_user_id\"\n                        },\n                        \"connected_team_ids\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"conversation_host_id\": {\n                            \"$ref\": \"#/definitions/defs_workspace_id\"\n                        },\n                        \"created\": {\n                            \"type\": \"integer\"\n                        },\n                        \"creator\": {\n                            \"$ref\": \"#/definitions/defs_user_id\"\n                        },\n                        \"display_counts\": {\n                            \"additionalProperties\": false,\n                            \"properties\": {\n                                \"display_counts\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"guest_counts\": {\n                                    \"type\": \"integer\"\n                                }\n                            },\n                            \"required\": [\n                                \"display_counts\",\n                                \"guest_counts\"\n                            ],\n                            \"type\": \"object\"\n                        },\n                        \"enterprise_id\": {\n                            \"$ref\": \"#/definitions/defs_enterprise_id\"\n                        },\n                        \"external_connections\": {\n                            \"additionalProperties\": false,\n                            \"type\": \"object\"\n                        },\n                        \"has_pins\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"id\": {\n                            \"$ref\": \"#/definitions/defs_channel\"\n                        },\n                        \"internal_team_ids\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"is_archived\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_channel\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_ext_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_general\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_global_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_group\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_im\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_member\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_moved\": {\n                            \"type\": \"integer\"\n                        },\n                        \"is_mpim\": {\n                            \"enum\": [\n                                false\n                            ],\n                            \"type\": \"boolean\"\n                        },\n                        \"is_non_threadable\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_open\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_org_default\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_org_mandatory\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_org_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_pending_ext_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_private\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_read_only\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_starred\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_thread_only\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"last_read\": {\n                            \"$ref\": \"#/definitions/defs_ts\"\n                        },\n                        \"latest\": {\n                            \"items\": [\n                                {\n                                    \"$ref\": \"#/definitions/objs_message\"\n                                },\n                                {\n                                    \"type\": \"null\"\n                                }\n                            ]\n                        },\n                        \"members\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_user_id\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"name\": {\n                            \"type\": \"string\"\n                        },\n                        \"name_normalized\": {\n                            \"type\": \"string\"\n                        },\n                        \"num_members\": {\n                            \"type\": \"integer\"\n                        },\n                        \"parent_conversation\": {\n                            \"items\": [\n                                {\n                                    \"$ref\": \"#/definitions/defs_channel\"\n                                },\n                                {\n                                    \"type\": \"null\"\n                                }\n                            ]\n                        },\n                        \"pending_connected_team_ids\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"pending_shared\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"pin_count\": {\n                            \"type\": \"integer\"\n                        },\n                        \"previous_names\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_channel_name\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"priority\": {\n                            \"type\": \"number\"\n                        },\n                        \"purpose\": {\n                            \"additionalProperties\": false,\n                            \"properties\": {\n                                \"creator\": {\n                                    \"$ref\": \"#/definitions/defs_topic_purpose_creator\"\n                                },\n                                \"last_set\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"value\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"value\",\n                                \"creator\",\n                                \"last_set\"\n                            ],\n                            \"type\": \"object\"\n                        },\n                        \"shared_team_ids\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"shares\": {\n                            \"items\": {\n                                \"additionalProperties\": false,\n                                \"properties\": {\n                                    \"accepted_user\": {\n                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                    },\n                                    \"is_active\": {\n                                        \"type\": \"boolean\"\n                                    },\n                                    \"team\": {\n                                        \"$ref\": \"#/definitions/objs_team\"\n                                    },\n                                    \"user\": {\n                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                    }\n                                },\n                                \"required\": [\n                                    \"team\",\n                                    \"user\",\n                                    \"is_active\"\n                                ],\n                                \"type\": \"object\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"timezone_count\": {\n                            \"type\": \"integer\"\n                        },\n                        \"topic\": {\n                            \"additionalProperties\": false,\n                            \"properties\": {\n                                \"creator\": {\n                                    \"$ref\": \"#/definitions/defs_topic_purpose_creator\"\n                                },\n                                \"last_set\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"value\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"value\",\n                                \"creator\",\n                                \"last_set\"\n                            ],\n                            \"type\": \"object\"\n                        },\n                        \"unlinked\": {\n                            \"title\": \"Field to determine whether a channel has ever been shared/disconnected in the past\",\n                            \"type\": \"integer\"\n                        },\n                        \"unread_count\": {\n                            \"type\": \"integer\"\n                        },\n                        \"unread_count_display\": {\n                            \"type\": \"integer\"\n                        },\n                        \"user\": {\n                            \"$ref\": \"#/definitions/defs_user_id\"\n                        },\n                        \"version\": {\n                            \"type\": \"integer\"\n                        }\n                    },\n                    \"required\": [\n                        \"id\",\n                        \"name\",\n                        \"created\",\n                        \"creator\",\n                        \"is_archived\",\n                        \"is_channel\",\n                        \"is_general\",\n                        \"is_mpim\",\n                        \"is_group\",\n                        \"is_org_shared\",\n                        \"is_im\",\n                        \"is_shared\",\n                        \"is_private\",\n                        \"name_normalized\",\n                        \"topic\",\n                        \"purpose\"\n                    ],\n                    \"title\": \"Conversation object\",\n                    \"type\": \"object\"\n                },\n                {\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                        \"accepted_user\": {\n                            \"$ref\": \"#/definitions/defs_user_id\"\n                        },\n                        \"connected_team_ids\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"conversation_host_id\": {\n                            \"$ref\": \"#/definitions/defs_workspace_id\"\n                        },\n                        \"created\": {\n                            \"type\": \"integer\"\n                        },\n                        \"creator\": {\n                            \"$ref\": \"#/definitions/defs_user_id\"\n                        },\n                        \"display_counts\": {\n                            \"additionalProperties\": false,\n                            \"properties\": {\n                                \"display_counts\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"guest_counts\": {\n                                    \"type\": \"integer\"\n                                }\n                            },\n                            \"required\": [\n                                \"display_counts\",\n                                \"guest_counts\"\n                            ],\n                            \"type\": \"object\"\n                        },\n                        \"id\": {\n                            \"$ref\": \"#/definitions/defs_channel\"\n                        },\n                        \"internal_team_ids\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"is_archived\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_channel\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_ext_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_general\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_group\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_im\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_member\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_moved\": {\n                            \"type\": \"integer\"\n                        },\n                        \"is_mpim\": {\n                            \"enum\": [\n                                true\n                            ],\n                            \"type\": \"boolean\"\n                        },\n                        \"is_open\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_org_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_pending_ext_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_private\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_read_only\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_starred\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"last_read\": {\n                            \"$ref\": \"#/definitions/defs_ts\"\n                        },\n                        \"latest\": {\n                            \"items\": [\n                                {\n                                    \"$ref\": \"#/definitions/objs_message\"\n                                },\n                                {\n                                    \"type\": \"null\"\n                                }\n                            ]\n                        },\n                        \"members\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_user_id\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"name\": {\n                            \"type\": \"string\"\n                        },\n                        \"name_normalized\": {\n                            \"type\": \"string\"\n                        },\n                        \"num_members\": {\n                            \"type\": \"integer\"\n                        },\n                        \"parent_conversation\": {\n                            \"items\": [\n                                {\n                                    \"$ref\": \"#/definitions/defs_channel\"\n                                },\n                                {\n                                    \"type\": \"null\"\n                                }\n                            ]\n                        },\n                        \"pending_connected_team_ids\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"pending_shared\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"pin_count\": {\n                            \"type\": \"integer\"\n                        },\n                        \"previous_names\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_channel_name\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"priority\": {\n                            \"type\": \"number\"\n                        },\n                        \"purpose\": {\n                            \"additionalProperties\": false,\n                            \"properties\": {\n                                \"creator\": {\n                                    \"$ref\": \"#/definitions/defs_topic_purpose_creator\"\n                                },\n                                \"last_set\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"value\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"value\",\n                                \"creator\",\n                                \"last_set\"\n                            ],\n                            \"type\": \"object\"\n                        },\n                        \"shared_team_ids\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"shares\": {\n                            \"items\": {\n                                \"additionalProperties\": false,\n                                \"properties\": {\n                                    \"accepted_user\": {\n                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                    },\n                                    \"is_active\": {\n                                        \"type\": \"boolean\"\n                                    },\n                                    \"team\": {\n                                        \"$ref\": \"#/definitions/objs_team\"\n                                    },\n                                    \"user\": {\n                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                    }\n                                },\n                                \"required\": [\n                                    \"team\",\n                                    \"user\",\n                                    \"is_active\"\n                                ],\n                                \"type\": \"object\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"timezone_count\": {\n                            \"type\": \"integer\"\n                        },\n                        \"topic\": {\n                            \"additionalProperties\": false,\n                            \"properties\": {\n                                \"creator\": {\n                                    \"$ref\": \"#/definitions/defs_topic_purpose_creator\"\n                                },\n                                \"last_set\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"value\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"value\",\n                                \"creator\",\n                                \"last_set\"\n                            ],\n                            \"type\": \"object\"\n                        },\n                        \"unlinked\": {\n                            \"title\": \"Field to determine whether a channel has ever been shared/disconnected in the past\",\n                            \"type\": \"integer\"\n                        },\n                        \"unread_count\": {\n                            \"type\": \"integer\"\n                        },\n                        \"unread_count_display\": {\n                            \"type\": \"integer\"\n                        },\n                        \"user\": {\n                            \"$ref\": \"#/definitions/defs_user_id\"\n                        },\n                        \"version\": {\n                            \"type\": \"integer\"\n                        }\n                    },\n                    \"required\": [\n                        \"id\",\n                        \"name\",\n                        \"created\",\n                        \"creator\",\n                        \"is_archived\",\n                        \"is_channel\",\n                        \"is_general\",\n                        \"is_mpim\",\n                        \"is_group\",\n                        \"is_org_shared\",\n                        \"is_im\",\n                        \"is_shared\",\n                        \"is_private\",\n                        \"name_normalized\",\n                        \"topic\",\n                        \"purpose\"\n                    ],\n                    \"title\": \"Conversation MPIM Object\",\n                    \"type\": \"object\"\n                },\n                {\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                        \"created\": {\n                            \"type\": \"integer\"\n                        },\n                        \"has_pins\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"id\": {\n                            \"$ref\": \"#/definitions/defs_dm_id\"\n                        },\n                        \"is_ext_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_im\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_open\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_org_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_shared\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_starred\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_user_deleted\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"last_read\": {\n                            \"$ref\": \"#/definitions/defs_ts\"\n                        },\n                        \"latest\": {\n                            \"items\": [\n                                {\n                                    \"$ref\": \"#/definitions/objs_message\"\n                                },\n                                {\n                                    \"type\": \"null\"\n                                }\n                            ]\n                        },\n                        \"parent_conversation\": {\n                            \"items\": [\n                                {\n                                    \"$ref\": \"#/definitions/defs_channel\"\n                                },\n                                {\n                                    \"type\": \"null\"\n                                }\n                            ]\n                        },\n                        \"pin_count\": {\n                            \"type\": \"integer\"\n                        },\n                        \"priority\": {\n                            \"type\": \"number\"\n                        },\n                        \"shares\": {\n                            \"items\": {\n                                \"additionalProperties\": false,\n                                \"properties\": {\n                                    \"date_create\": {\n                                        \"type\": \"integer\"\n                                    },\n                                    \"id\": {\n                                        \"$ref\": \"#/definitions/defs_team\"\n                                    },\n                                    \"is_active\": {\n                                        \"type\": \"boolean\"\n                                    },\n                                    \"name\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"team\": {\n                                        \"$ref\": \"#/definitions/objs_team\"\n                                    }\n                                },\n                                \"required\": [\n                                    \"id\",\n                                    \"name\",\n                                    \"team\",\n                                    \"date_create\",\n                                    \"is_active\"\n                                ],\n                                \"type\": \"object\"\n                            },\n                            \"minItems\": 0,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"unread_count\": {\n                            \"type\": \"integer\"\n                        },\n                        \"unread_count_display\": {\n                            \"type\": \"integer\"\n                        },\n                        \"user\": {\n                            \"$ref\": \"#/definitions/defs_user_id\"\n                        },\n                        \"version\": {\n                            \"type\": \"integer\"\n                        }\n                    },\n                    \"required\": [\n                        \"id\",\n                        \"created\",\n                        \"is_im\",\n                        \"is_org_shared\",\n                        \"user\",\n                        \"priority\"\n                    ],\n                    \"title\": \"Conversation IM Channel Object from conversations.* methods\",\n                    \"type\": \"object\"\n                }\n            ]\n        },\n        \"objs_enterprise_user\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"enterprise_id\": {\n                    \"$ref\": \"#/definitions/defs_enterprise_id\"\n                },\n                \"enterprise_name\": {\n                    \"$ref\": \"#/definitions/defs_enterprise_name\"\n                },\n                \"id\": {\n                    \"$ref\": \"#/definitions/defs_enterprise_user_id\"\n                },\n                \"is_admin\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_owner\": {\n                    \"type\": \"boolean\"\n                },\n                \"teams\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_team\"\n                    },\n                    \"minItems\": 1,\n                    \"type\": \"array\",\n                    \"uniqueItems\": true\n                }\n            },\n            \"required\": [\n                \"id\",\n                \"enterprise_id\",\n                \"enterprise_name\",\n                \"is_admin\",\n                \"is_owner\",\n                \"teams\"\n            ],\n            \"type\": \"object\"\n        },\n        \"objs_file\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"channels\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_channel_id\"\n                    },\n                    \"type\": \"array\",\n                    \"uniqueItems\": true\n                },\n                \"comments_count\": {\n                    \"type\": \"integer\"\n                },\n                \"created\": {\n                    \"type\": \"integer\"\n                },\n                \"display_as_bot\": {\n                    \"type\": \"boolean\"\n                },\n                \"editable\": {\n                    \"type\": \"boolean\"\n                },\n                \"editor\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                },\n                \"external_id\": {\n                    \"type\": \"string\"\n                },\n                \"external_type\": {\n                    \"type\": \"string\"\n                },\n                \"external_url\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"filetype\": {\n                    \"type\": \"string\"\n                },\n                \"groups\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_group_id\"\n                    },\n                    \"type\": \"array\",\n                    \"uniqueItems\": true\n                },\n                \"has_rich_preview\": {\n                    \"type\": \"boolean\"\n                },\n                \"id\": {\n                    \"$ref\": \"#/definitions/defs_file_id\"\n                },\n                \"image_exif_rotation\": {\n                    \"type\": \"integer\"\n                },\n                \"ims\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_dm_id\"\n                    },\n                    \"type\": \"array\",\n                    \"uniqueItems\": true\n                },\n                \"is_external\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_public\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_starred\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_tombstoned\": {\n                    \"type\": \"boolean\"\n                },\n                \"last_editor\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                },\n                \"mimetype\": {\n                    \"type\": \"string\"\n                },\n                \"mode\": {\n                    \"type\": \"string\"\n                },\n                \"name\": {\n                    \"type\": \"string\"\n                },\n                \"num_stars\": {\n                    \"type\": \"integer\"\n                },\n                \"original_h\": {\n                    \"type\": \"integer\"\n                },\n                \"original_w\": {\n                    \"type\": \"integer\"\n                },\n                \"permalink\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"permalink_public\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"pinned_info\": {\n                    \"$ref\": \"#/definitions/defs_pinned_info\"\n                },\n                \"pinned_to\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_channel\"\n                    },\n                    \"type\": \"array\"\n                },\n                \"pretty_type\": {\n                    \"type\": \"string\"\n                },\n                \"preview\": {\n                    \"type\": \"null\"\n                },\n                \"public_url_shared\": {\n                    \"type\": \"boolean\"\n                },\n                \"reactions\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/objs_reaction\"\n                    },\n                    \"type\": \"array\"\n                },\n                \"shares\": {\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                        \"private\": {\n                            \"additionalProperties\": false\n                        },\n                        \"public\": {\n                            \"additionalProperties\": false\n                        }\n                    },\n                    \"type\": \"object\"\n                },\n                \"size\": {\n                    \"type\": \"integer\"\n                },\n                \"source_team\": {\n                    \"$ref\": \"#/definitions/defs_team\"\n                },\n                \"state\": {\n                    \"type\": \"string\"\n                },\n                \"thumb_1024\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"thumb_1024_h\": {\n                    \"type\": \"integer\"\n                },\n                \"thumb_1024_w\": {\n                    \"type\": \"integer\"\n                },\n                \"thumb_160\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"thumb_360\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"thumb_360_h\": {\n                    \"type\": \"integer\"\n                },\n                \"thumb_360_w\": {\n                    \"type\": \"integer\"\n                },\n                \"thumb_480\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"thumb_480_h\": {\n                    \"type\": \"integer\"\n                },\n                \"thumb_480_w\": {\n                    \"type\": \"integer\"\n                },\n                \"thumb_64\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"thumb_720\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"thumb_720_h\": {\n                    \"type\": \"integer\"\n                },\n                \"thumb_720_w\": {\n                    \"type\": \"integer\"\n                },\n                \"thumb_80\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"thumb_800\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"thumb_800_h\": {\n                    \"type\": \"integer\"\n                },\n                \"thumb_800_w\": {\n                    \"type\": \"integer\"\n                },\n                \"thumb_960\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"thumb_960_h\": {\n                    \"type\": \"integer\"\n                },\n                \"thumb_960_w\": {\n                    \"type\": \"integer\"\n                },\n                \"timestamp\": {\n                    \"type\": \"integer\"\n                },\n                \"title\": {\n                    \"type\": \"string\"\n                },\n                \"updated\": {\n                    \"type\": \"integer\"\n                },\n                \"url_private\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"url_private_download\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"user\": {\n                    \"type\": \"string\"\n                },\n                \"user_team\": {\n                    \"$ref\": \"#/definitions/defs_team\"\n                },\n                \"username\": {\n                    \"type\": \"string\"\n                }\n            },\n            \"title\": \"file object\",\n            \"type\": \"object\"\n        },\n        \"objs_group\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"created\": {\n                    \"type\": \"integer\"\n                },\n                \"creator\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                },\n                \"id\": {\n                    \"$ref\": \"#/definitions/defs_group_id\"\n                },\n                \"is_archived\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_deleted\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_group\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_moved\": {\n                    \"type\": \"integer\"\n                },\n                \"is_mpim\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_open\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_pending_ext_shared\": {\n                    \"type\": \"boolean\"\n                },\n                \"last_read\": {\n                    \"$ref\": \"#/definitions/defs_ts\"\n                },\n                \"latest\": {\n                    \"items\": [\n                        {\n                            \"$ref\": \"#/definitions/objs_message\"\n                        },\n                        {\n                            \"type\": \"null\"\n                        }\n                    ]\n                },\n                \"members\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_user_id\"\n                    },\n                    \"minItems\": 1,\n                    \"type\": \"array\",\n                    \"uniqueItems\": true\n                },\n                \"name\": {\n                    \"type\": \"string\"\n                },\n                \"name_normalized\": {\n                    \"type\": \"string\"\n                },\n                \"num_members\": {\n                    \"type\": \"integer\"\n                },\n                \"priority\": {\n                    \"type\": \"number\"\n                },\n                \"purpose\": {\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                        \"creator\": {\n                            \"$ref\": \"#/definitions/defs_topic_purpose_creator\"\n                        },\n                        \"last_set\": {\n                            \"type\": \"integer\"\n                        },\n                        \"value\": {\n                            \"type\": \"string\"\n                        }\n                    },\n                    \"required\": [\n                        \"value\",\n                        \"creator\",\n                        \"last_set\"\n                    ],\n                    \"type\": \"object\"\n                },\n                \"topic\": {\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                        \"creator\": {\n                            \"$ref\": \"#/definitions/defs_topic_purpose_creator\"\n                        },\n                        \"last_set\": {\n                            \"type\": \"integer\"\n                        },\n                        \"value\": {\n                            \"type\": \"string\"\n                        }\n                    },\n                    \"required\": [\n                        \"value\",\n                        \"creator\",\n                        \"last_set\"\n                    ],\n                    \"type\": \"object\"\n                },\n                \"unread_count\": {\n                    \"type\": \"integer\"\n                },\n                \"unread_count_display\": {\n                    \"type\": \"integer\"\n                }\n            },\n            \"required\": [\n                \"id\",\n                \"name\",\n                \"is_group\",\n                \"created\",\n                \"creator\",\n                \"name_normalized\",\n                \"members\",\n                \"topic\",\n                \"purpose\"\n            ],\n            \"title\": \"Group object\",\n            \"type\": \"object\"\n        },\n        \"objs_icon\": {\n            \"properties\": {\n                \"image_102\": {\n                    \"type\": \"string\"\n                },\n                \"image_132\": {\n                    \"type\": \"string\"\n                },\n                \"image_230\": {\n                    \"type\": \"string\"\n                },\n                \"image_34\": {\n                    \"type\": \"string\"\n                },\n                \"image_44\": {\n                    \"type\": \"string\"\n                },\n                \"image_68\": {\n                    \"type\": \"string\"\n                },\n                \"image_88\": {\n                    \"type\": \"string\"\n                },\n                \"image_default\": {\n                    \"type\": \"boolean\"\n                }\n            },\n            \"type\": \"object\"\n        },\n        \"objs_im\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"created\": {\n                    \"type\": \"integer\"\n                },\n                \"id\": {\n                    \"$ref\": \"#/definitions/defs_dm_id\"\n                },\n                \"is_app_home\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_ext_shared\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_im\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_org_shared\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_shared\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_user_deleted\": {\n                    \"type\": \"boolean\"\n                },\n                \"priority\": {\n                    \"type\": \"number\"\n                },\n                \"user\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                }\n            },\n            \"required\": [\n                \"id\",\n                \"is_im\",\n                \"is_org_shared\",\n                \"user\",\n                \"created\",\n                \"is_user_deleted\"\n            ],\n            \"title\": \"IM Object\",\n            \"type\": \"object\"\n        },\n        \"objs_message\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"attachments\": {\n                    \"items\": {\n                        \"additionalProperties\": false,\n                        \"properties\": {\n                            \"fallback\": {\n                                \"type\": \"string\"\n                            },\n                            \"id\": {\n                                \"type\": \"integer\"\n                            },\n                            \"image_bytes\": {\n                                \"type\": \"integer\"\n                            },\n                            \"image_height\": {\n                                \"type\": \"integer\"\n                            },\n                            \"image_url\": {\n                                \"type\": \"string\"\n                            },\n                            \"image_width\": {\n                                \"type\": \"integer\"\n                            }\n                        },\n                        \"required\": [\n                            \"id\"\n                        ],\n                        \"type\": \"object\"\n                    },\n                    \"minItems\": 1,\n                    \"type\": \"array\",\n                    \"uniqueItems\": true\n                },\n                \"blocks\": {\n                    \"$ref\": \"#/definitions/blocks\"\n                },\n                \"bot_id\": {\n                    \"items\": [\n                        {\n                            \"$ref\": \"#/definitions/defs_bot_id\"\n                        },\n                        {\n                            \"title\": \"Nil bot_id set when display_as_bot is false\",\n                            \"type\": \"null\"\n                        }\n                    ]\n                },\n                \"client_msg_id\": {\n                    \"type\": \"string\"\n                },\n                \"comment\": {\n                    \"$ref\": \"#/definitions/objs_comment\"\n                },\n                \"display_as_bot\": {\n                    \"type\": \"boolean\"\n                },\n                \"file\": {\n                    \"$ref\": \"#/definitions/objs_file\"\n                },\n                \"files\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/objs_file\"\n                    },\n                    \"minItems\": 1,\n                    \"type\": \"array\",\n                    \"uniqueItems\": true\n                },\n                \"icons\": {\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                        \"emoji\": {\n                            \"type\": \"string\"\n                        }\n                    },\n                    \"type\": \"object\"\n                },\n                \"inviter\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                },\n                \"is_delayed_message\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_intro\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_starred\": {\n                    \"type\": \"boolean\"\n                },\n                \"last_read\": {\n                    \"$ref\": \"#/definitions/defs_ts\"\n                },\n                \"latest_reply\": {\n                    \"$ref\": \"#/definitions/defs_ts\"\n                },\n                \"name\": {\n                    \"type\": \"string\"\n                },\n                \"old_name\": {\n                    \"type\": \"string\"\n                },\n                \"parent_user_id\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                },\n                \"permalink\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"pinned_to\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_channel\"\n                    },\n                    \"type\": \"array\"\n                },\n                \"purpose\": {\n                    \"type\": \"string\"\n                },\n                \"reactions\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/objs_reaction\"\n                    },\n                    \"type\": \"array\"\n                },\n                \"replies\": {\n                    \"items\": {\n                        \"additionalProperties\": false,\n                        \"properties\": {\n                            \"ts\": {\n                                \"$ref\": \"#/definitions/defs_ts\"\n                            },\n                            \"user\": {\n                                \"$ref\": \"#/definitions/defs_user_id\"\n                            }\n                        },\n                        \"required\": [\n                            \"user\",\n                            \"ts\"\n                        ],\n                        \"type\": \"object\"\n                    },\n                    \"type\": \"array\"\n                },\n                \"reply_count\": {\n                    \"type\": \"integer\"\n                },\n                \"reply_users\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_user_id\"\n                    },\n                    \"minItems\": 1,\n                    \"type\": \"array\",\n                    \"uniqueItems\": true\n                },\n                \"reply_users_count\": {\n                    \"type\": \"integer\"\n                },\n                \"source_team\": {\n                    \"$ref\": \"#/definitions/defs_workspace_id\"\n                },\n                \"subscribed\": {\n                    \"type\": \"boolean\"\n                },\n                \"subtype\": {\n                    \"type\": \"string\"\n                },\n                \"team\": {\n                    \"$ref\": \"#/definitions/defs_workspace_id\"\n                },\n                \"text\": {\n                    \"type\": \"string\"\n                },\n                \"thread_ts\": {\n                    \"$ref\": \"#/definitions/defs_ts\"\n                },\n                \"topic\": {\n                    \"type\": \"string\"\n                },\n                \"ts\": {\n                    \"$ref\": \"#/definitions/defs_ts\"\n                },\n                \"type\": {\n                    \"type\": \"string\"\n                },\n                \"unread_count\": {\n                    \"type\": \"integer\"\n                },\n                \"upload\": {\n                    \"type\": \"boolean\"\n                },\n                \"user\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                },\n                \"user_profile\": {\n                    \"$ref\": \"#/definitions/objs_user_profile_short\"\n                },\n                \"user_team\": {\n                    \"$ref\": \"#/definitions/defs_workspace_id\"\n                },\n                \"username\": {\n                    \"type\": \"string\"\n                }\n            },\n            \"required\": [\n                \"text\",\n                \"type\",\n                \"ts\"\n            ],\n            \"title\": \"Message object\",\n            \"type\": \"object\"\n        },\n        \"objs_paging\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"count\": {\n                    \"type\": \"integer\"\n                },\n                \"page\": {\n                    \"type\": \"integer\"\n                },\n                \"pages\": {\n                    \"type\": \"integer\"\n                },\n                \"per_page\": {\n                    \"type\": \"integer\"\n                },\n                \"spill\": {\n                    \"type\": \"integer\"\n                },\n                \"total\": {\n                    \"type\": \"integer\"\n                }\n            },\n            \"required\": [\n                \"page\",\n                \"total\"\n            ],\n            \"title\": \"paging object\",\n            \"type\": \"object\"\n        },\n        \"objs_reaction\": {\n            \"additionalProperties\": true,\n            \"properties\": {\n                \"count\": {\n                    \"type\": \"integer\"\n                },\n                \"name\": {\n                    \"type\": \"string\"\n                },\n                \"users\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_user_id\"\n                    },\n                    \"type\": \"array\"\n                }\n            },\n            \"required\": [\n                \"name\",\n                \"users\",\n                \"count\"\n            ],\n            \"title\": \"Reaction object\",\n            \"type\": \"object\"\n        },\n        \"objs_reminder\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"complete_ts\": {\n                    \"type\": \"integer\"\n                },\n                \"creator\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                },\n                \"id\": {\n                    \"$ref\": \"#/definitions/defs_reminder_id\"\n                },\n                \"recurring\": {\n                    \"type\": \"boolean\"\n                },\n                \"text\": {\n                    \"type\": \"string\"\n                },\n                \"time\": {\n                    \"type\": \"integer\"\n                },\n                \"user\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                }\n            },\n            \"required\": [\n                \"id\",\n                \"creator\",\n                \"user\",\n                \"text\",\n                \"recurring\"\n            ],\n            \"type\": \"object\"\n        },\n        \"objs_resources\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"excluded_ids\": {\n                    \"items\": {\n                        \"items\": [\n                            {\n                                \"$ref\": \"#/definitions/defs_channel\"\n                            },\n                            {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            }\n                        ]\n                    },\n                    \"type\": \"array\"\n                },\n                \"ids\": {\n                    \"items\": {\n                        \"items\": [\n                            {\n                                \"$ref\": \"#/definitions/defs_channel\"\n                            },\n                            {\n                                \"$ref\": \"#/definitions/defs_team\"\n                            }\n                        ]\n                    },\n                    \"type\": \"array\"\n                },\n                \"wildcard\": {\n                    \"type\": \"boolean\"\n                }\n            },\n            \"required\": [\n                \"ids\"\n            ],\n            \"title\": \"resources in info from apps.permissions.info\",\n            \"type\": \"object\"\n        },\n        \"objs_response_metadata\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"next_cursor\": {\n                    \"type\": \"string\"\n                }\n            },\n            \"required\": [\n                \"next_cursor\"\n            ],\n            \"title\": \"new paging style\",\n            \"type\": \"object\"\n        },\n        \"objs_scopes\": {\n            \"items\": {\n                \"title\": \"Named OAuth scopes\",\n                \"type\": \"string\",\n                \"x-examples\": [\n                    \"chat:write\",\n                    \"im:history\",\n                    \"im:read\"\n                ]\n            },\n            \"type\": \"array\"\n        },\n        \"objs_subteam\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"auto_provision\": {\n                    \"type\": \"boolean\"\n                },\n                \"auto_type\": {\n                    \"items\": [\n                        {\n                            \"type\": \"null\"\n                        },\n                        {\n                            \"enum\": [\n                                \"owner\",\n                                \"admin\"\n                            ],\n                            \"type\": \"string\"\n                        }\n                    ]\n                },\n                \"created_by\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                },\n                \"date_create\": {\n                    \"type\": \"integer\"\n                },\n                \"date_delete\": {\n                    \"type\": \"integer\"\n                },\n                \"date_update\": {\n                    \"type\": \"integer\"\n                },\n                \"deleted_by\": {\n                    \"items\": [\n                        {\n                            \"type\": \"null\"\n                        },\n                        {\n                            \"$ref\": \"#/definitions/defs_user_id\"\n                        }\n                    ]\n                },\n                \"description\": {\n                    \"type\": \"string\"\n                },\n                \"enterprise_subteam_id\": {\n                    \"type\": \"string\"\n                },\n                \"handle\": {\n                    \"type\": \"string\"\n                },\n                \"id\": {\n                    \"$ref\": \"#/definitions/defs_subteam_id\"\n                },\n                \"is_external\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_subteam\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_usergroup\": {\n                    \"type\": \"boolean\"\n                },\n                \"name\": {\n                    \"type\": \"string\"\n                },\n                \"prefs\": {\n                    \"additionalProperties\": false,\n                    \"properties\": {\n                        \"channels\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_channel_id\"\n                            },\n                            \"type\": \"array\"\n                        },\n                        \"groups\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_group_id\"\n                            },\n                            \"type\": \"array\"\n                        }\n                    },\n                    \"required\": [\n                        \"channels\",\n                        \"groups\"\n                    ],\n                    \"type\": \"object\"\n                },\n                \"team_id\": {\n                    \"$ref\": \"#/definitions/defs_team\"\n                },\n                \"updated_by\": {\n                    \"$ref\": \"#/definitions/defs_user_id\"\n                },\n                \"user_count\": {\n                    \"type\": \"integer\"\n                },\n                \"users\": {\n                    \"items\": {\n                        \"$ref\": \"#/definitions/defs_user_id\"\n                    },\n                    \"type\": \"array\"\n                }\n            },\n            \"required\": [\n                \"id\",\n                \"team_id\",\n                \"is_usergroup\",\n                \"is_subteam\",\n                \"name\",\n                \"description\",\n                \"handle\",\n                \"is_external\",\n                \"date_create\",\n                \"date_update\",\n                \"date_delete\",\n                \"auto_type\",\n                \"auto_provision\",\n                \"enterprise_subteam_id\",\n                \"created_by\",\n                \"updated_by\",\n                \"deleted_by\",\n                \"prefs\"\n            ],\n            \"title\": \"Subteam/Usergroup Object\",\n            \"type\": \"object\"\n        },\n        \"objs_team\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"archived\": {\n                    \"type\": \"boolean\"\n                },\n                \"avatar_base_url\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"created\": {\n                    \"type\": \"integer\"\n                },\n                \"date_create\": {\n                    \"type\": \"integer\"\n                },\n                \"deleted\": {\n                    \"type\": \"boolean\"\n                },\n                \"description\": {\n                    \"type\": \"string\"\n                },\n                \"discoverable\": {\n                    \"type\": \"string\"\n                },\n                \"domain\": {\n                    \"type\": \"string\"\n                },\n                \"email_domain\": {\n                    \"type\": \"string\"\n                },\n                \"enterprise_id\": {\n                    \"$ref\": \"#/definitions/defs_enterprise_id\"\n                },\n                \"enterprise_name\": {\n                    \"$ref\": \"#/definitions/defs_enterprise_name\"\n                },\n                \"has_compliance_export\": {\n                    \"type\": \"boolean\"\n                },\n                \"icon\": {\n                    \"$ref\": \"#/definitions/objs_icon\"\n                },\n                \"id\": {\n                    \"$ref\": \"#/definitions/defs_team\"\n                },\n                \"is_assigned\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_enterprise\": {\n                    \"type\": \"integer\"\n                },\n                \"limit_ts\": {\n                    \"type\": \"integer\"\n                },\n                \"messages_count\": {\n                    \"type\": \"integer\"\n                },\n                \"msg_edit_window_mins\": {\n                    \"type\": \"integer\"\n                },\n                \"name\": {\n                    \"type\": \"string\"\n                },\n                \"over_integrations_limit\": {\n                    \"type\": \"boolean\"\n                },\n                \"over_storage_limit\": {\n                    \"type\": \"boolean\"\n                },\n                \"plan\": {\n                    \"enum\": [\n                        \"\",\n                        \"std\",\n                        \"plus\",\n                        \"compliance\",\n                        \"enterprise\"\n                    ],\n                    \"type\": \"string\"\n                }\n            },\n            \"required\": [\n                \"id\",\n                \"name\",\n                \"domain\",\n                \"email_domain\",\n                \"icon\"\n            ],\n            \"title\": \"Team Object\",\n            \"type\": \"object\"\n        },\n        \"objs_team_profile_field\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"field_name\": {\n                    \"type\": \"string\"\n                },\n                \"hint\": {\n                    \"type\": \"string\"\n                },\n                \"id\": {\n                    \"pattern\": \"^X[a-zA-Z0-9]{9}$\",\n                    \"type\": \"string\"\n                },\n                \"is_hidden\": {\n                    \"type\": \"boolean\"\n                },\n                \"label\": {\n                    \"type\": \"string\"\n                },\n                \"options\": {\n                    \"items\": {\n                        \"type\": \"string\"\n                    },\n                    \"type\": \"array\"\n                },\n                \"ordering\": {\n                    \"type\": \"number\"\n                },\n                \"possible_values\": {\n                    \"items\": {\n                        \"type\": \"string\"\n                    },\n                    \"type\": \"array\"\n                },\n                \"type\": {\n                    \"enum\": [\n                        \"text\",\n                        \"date\",\n                        \"link\",\n                        \"mailto\",\n                        \"options_list\",\n                        \"user\"\n                    ],\n                    \"type\": \"string\"\n                }\n            },\n            \"required\": [\n                \"id\",\n                \"ordering\",\n                \"label\",\n                \"hint\",\n                \"type\",\n                \"options\"\n            ],\n            \"type\": \"object\"\n        },\n        \"objs_user\": {\n            \"items\": [\n                {\n                    \"additionalProperties\": false,\n                    \"description\": \"user object for non enterprise type\",\n                    \"properties\": {\n                        \"color\": {\n                            \"pattern\": \"^[a-fA-F0-9]{6}$\",\n                            \"type\": \"string\"\n                        },\n                        \"deleted\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"enterprise_user\": {\n                            \"$ref\": \"#/definitions/objs_enterprise_user\"\n                        },\n                        \"has_2fa\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"id\": {\n                            \"$ref\": \"#/definitions/defs_user_id\"\n                        },\n                        \"is_admin\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_app_user\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_bot\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_invited_user\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_owner\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_primary_owner\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_restricted\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_ultra_restricted\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"locale\": {\n                            \"type\": \"string\"\n                        },\n                        \"name\": {\n                            \"type\": \"string\"\n                        },\n                        \"presence\": {\n                            \"type\": \"string\"\n                        },\n                        \"profile\": {\n                            \"$ref\": \"#/definitions/objs_user_profile\"\n                        },\n                        \"real_name\": {\n                            \"type\": \"string\"\n                        },\n                        \"team\": {\n                            \"$ref\": \"#/definitions/defs_team\"\n                        },\n                        \"team_id\": {\n                            \"$ref\": \"#/definitions/defs_team\"\n                        },\n                        \"team_profile\": {\n                            \"additionalProperties\": false,\n                            \"properties\": {\n                                \"fields\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_team_profile_field\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                }\n                            },\n                            \"required\": [\n                                \"fields\"\n                            ],\n                            \"type\": \"object\"\n                        },\n                        \"two_factor_type\": {\n                            \"type\": \"string\"\n                        },\n                        \"tz\": {\n                            \"items\": [\n                                {\n                                    \"type\": \"null\"\n                                },\n                                {\n                                    \"type\": \"string\"\n                                }\n                            ]\n                        },\n                        \"tz_label\": {\n                            \"type\": \"string\"\n                        },\n                        \"tz_offset\": {\n                            \"type\": \"number\"\n                        },\n                        \"updated\": {\n                            \"type\": \"number\"\n                        }\n                    },\n                    \"required\": [\n                        \"id\",\n                        \"name\",\n                        \"deleted\",\n                        \"profile\",\n                        \"is_bot\",\n                        \"updated\",\n                        \"is_app_user\"\n                    ],\n                    \"type\": \"object\"\n                },\n                {\n                    \"additionalProperties\": false,\n                    \"description\": \"enterprise user\",\n                    \"properties\": {\n                        \"color\": {\n                            \"description\": \"refercing to bug: https://jira.tinyspeck.com/browse/EVALUE-1559\",\n                            \"pattern\": \"^$\",\n                            \"type\": \"string\"\n                        },\n                        \"deleted\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"enterprise_user\": {\n                            \"$ref\": \"#/definitions/objs_enterprise_user\"\n                        },\n                        \"has_2fa\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"id\": {\n                            \"$ref\": \"#/definitions/defs_user_id\"\n                        },\n                        \"is_admin\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_app_user\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_bot\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_owner\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_primary_owner\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_restricted\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"is_ultra_restricted\": {\n                            \"type\": \"boolean\"\n                        },\n                        \"locale\": {\n                            \"type\": \"string\"\n                        },\n                        \"name\": {\n                            \"type\": \"string\"\n                        },\n                        \"presence\": {\n                            \"type\": \"string\"\n                        },\n                        \"profile\": {\n                            \"$ref\": \"#/definitions/objs_user_profile\"\n                        },\n                        \"real_name\": {\n                            \"type\": \"string\"\n                        },\n                        \"team_id\": {\n                            \"$ref\": \"#/definitions/defs_team\"\n                        },\n                        \"team_profile\": {\n                            \"additionalProperties\": false,\n                            \"properties\": {\n                                \"fields\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_team_profile_field\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                }\n                            },\n                            \"required\": [\n                                \"fields\"\n                            ],\n                            \"type\": \"object\"\n                        },\n                        \"teams\": {\n                            \"items\": {\n                                \"$ref\": \"#/definitions/defs_workspace_id\"\n                            },\n                            \"minItems\": 1,\n                            \"type\": \"array\",\n                            \"uniqueItems\": true\n                        },\n                        \"two_factor_type\": {\n                            \"type\": \"string\"\n                        },\n                        \"tz\": {\n                            \"items\": [\n                                {\n                                    \"type\": \"null\"\n                                },\n                                {\n                                    \"type\": \"string\"\n                                }\n                            ]\n                        },\n                        \"tz_label\": {\n                            \"type\": \"string\"\n                        },\n                        \"tz_offset\": {\n                            \"type\": \"number\"\n                        },\n                        \"updated\": {\n                            \"type\": \"number\"\n                        }\n                    },\n                    \"required\": [\n                        \"id\",\n                        \"name\",\n                        \"deleted\",\n                        \"profile\",\n                        \"is_restricted\",\n                        \"is_ultra_restricted\",\n                        \"is_bot\",\n                        \"updated\",\n                        \"is_app_user\"\n                    ],\n                    \"type\": \"object\"\n                }\n            ]\n        },\n        \"objs_user_profile\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"always_active\": {\n                    \"type\": \"boolean\"\n                },\n                \"api_app_id\": {\n                    \"$ref\": \"#/definitions/defs_app_id\"\n                },\n                \"avatar_hash\": {\n                    \"type\": \"string\"\n                },\n                \"bot_id\": {\n                    \"$ref\": \"#/definitions/defs_bot_id\"\n                },\n                \"display_name\": {\n                    \"type\": \"string\"\n                },\n                \"display_name_normalized\": {\n                    \"type\": \"string\"\n                },\n                \"email\": {\n                    \"format\": \"email\",\n                    \"type\": \"string\"\n                },\n                \"fields\": {\n                    \"items\": {\n                        \"type\": \"object\"\n                    },\n                    \"type\": [\n                        \"object\",\n                        \"null\",\n                        \"array\"\n                    ]\n                },\n                \"first_name\": {\n                    \"type\": \"string\"\n                },\n                \"guest_channels\": {\n                    \"type\": \"string\"\n                },\n                \"guest_expiration_ts\": {\n                    \"type\": \"integer\"\n                },\n                \"guest_invited_by\": {\n                    \"type\": \"string\"\n                },\n                \"image_1024\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"image_192\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"image_24\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"image_32\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"image_48\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"image_512\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"image_72\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"image_original\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"is_custom_image\": {\n                    \"type\": \"boolean\"\n                },\n                \"last_name\": {\n                    \"type\": \"string\"\n                },\n                \"phone\": {\n                    \"type\": \"string\"\n                },\n                \"real_name\": {\n                    \"type\": \"string\"\n                },\n                \"real_name_normalized\": {\n                    \"type\": \"string\"\n                },\n                \"skype\": {\n                    \"type\": \"string\"\n                },\n                \"status_emoji\": {\n                    \"type\": \"string\"\n                },\n                \"status_expiration\": {\n                    \"type\": \"integer\"\n                },\n                \"status_text\": {\n                    \"type\": \"string\"\n                },\n                \"status_text_canonical\": {\n                    \"type\": \"string\"\n                },\n                \"team\": {\n                    \"$ref\": \"#/definitions/defs_workspace_id\"\n                },\n                \"teams\": {\n                    \"$ref\": \"#/definitions/defs_workspace_id\"\n                },\n                \"title\": {\n                    \"type\": \"string\"\n                }\n            },\n            \"required\": [\n                \"real_name\",\n                \"display_name\",\n                \"avatar_hash\",\n                \"real_name_normalized\",\n                \"display_name_normalized\"\n            ],\n            \"title\": \"User profile object\",\n            \"type\": \"object\"\n        },\n        \"objs_user_profile_short\": {\n            \"additionalProperties\": false,\n            \"properties\": {\n                \"avatar_hash\": {\n                    \"type\": \"string\"\n                },\n                \"display_name\": {\n                    \"type\": \"string\"\n                },\n                \"first_name\": {\n                    \"type\": \"string\"\n                },\n                \"image_72\": {\n                    \"format\": \"uri\",\n                    \"type\": \"string\"\n                },\n                \"is_restricted\": {\n                    \"type\": \"boolean\"\n                },\n                \"is_ultra_restricted\": {\n                    \"type\": \"boolean\"\n                },\n                \"name\": {\n                    \"type\": \"string\"\n                },\n                \"real_name\": {\n                    \"type\": \"string\"\n                },\n                \"team\": {\n                    \"$ref\": \"#/definitions/defs_workspace_id\"\n                }\n            },\n            \"required\": [\n                \"avatar_hash\",\n                \"image_72\",\n                \"first_name\",\n                \"real_name\",\n                \"display_name\",\n                \"team\",\n                \"name\",\n                \"is_restricted\",\n                \"is_ultra_restricted\"\n            ],\n            \"type\": \"object\"\n        }\n    },\n    \"externalDocs\": {\n        \"description\": \"Learn more about the Slack Web API\",\n        \"url\": \"https://api.slack.com/web\"\n    },\n    \"host\": \"slack.com\",\n    \"info\": {\n        \"description\": \"One way to interact with the Slack platform is its HTTP RPC-based Web API, a collection of methods requiring OAuth 2.0-based user, bot, or workspace tokens blessed with related OAuth scopes.\",\n        \"title\": \"Slack Web API\",\n        \"version\": \"1.2.0\"\n    },\n    \"paths\": {\n        \"/admin.users.session.reset\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Wipes all valid sessions on all devices for a given user\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/admin.users.session.reset\"\n                },\n                \"operationId\": \"admin_users_session_reset\",\n                \"parameters\": [],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default success template\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default error template\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"admin.users:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"admin.users.session\",\n                    \"admin\"\n                ]\n            }\n        },\n        \"/api.test\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Checks API calling code.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/api.test\"\n                },\n                \"operationId\": \"api_test\",\n                \"parameters\": [\n                    {\n                        \"description\": \"example property to return\",\n                        \"in\": \"query\",\n                        \"name\": \"foo\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Error response to return\",\n                        \"in\": \"query\",\n                        \"name\": \"error\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Standard success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": {\n                                \"type\": \"object\"\n                            },\n                            \"description\": \"Schema for successful response api.test method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"api.test success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Artificial error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"args\": {\n                                    \"error\": \"my_error\"\n                                },\n                                \"error\": \"my_error\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": {\n                                \"type\": \"object\"\n                            },\n                            \"description\": \"Schema for error response api.test method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"api.test error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"api\"\n                ]\n            }\n        },\n        \"/apps.permissions.info\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Returns list of permissions this app has on a team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/apps.permissions.info\"\n                },\n                \"operationId\": \"apps_permissions_info\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `none`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Standard success response when used with a user token\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"info\": {\n                                    \"app_home\": {\n                                        \"resources\": {\n                                            \"ids\": [\n                                                \"D0C0NU1Q8\",\n                                                \"D0BH95DLH\"\n                                            ]\n                                        },\n                                        \"scopes\": [\n                                            \"chat:write\",\n                                            \"im:history\",\n                                            \"im:read\"\n                                        ]\n                                    },\n                                    \"channel\": {\n                                        \"resources\": {\n                                            \"excluded_ids\": [],\n                                            \"ids\": [\n                                                \"C061FA5PB\"\n                                            ],\n                                            \"wildcard\": false\n                                        },\n                                        \"scopes\": [\n                                            \"channels:read\"\n                                        ]\n                                    },\n                                    \"group\": {\n                                        \"resources\": {\n                                            \"ids\": []\n                                        },\n                                        \"scopes\": []\n                                    },\n                                    \"im\": {\n                                        \"resources\": {\n                                            \"ids\": []\n                                        },\n                                        \"scopes\": []\n                                    },\n                                    \"mpim\": {\n                                        \"resources\": {\n                                            \"ids\": []\n                                        },\n                                        \"scopes\": []\n                                    },\n                                    \"team\": {\n                                        \"resources\": {\n                                            \"ids\": []\n                                        },\n                                        \"scopes\": []\n                                    }\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from apps.permissions.info method\",\n                            \"properties\": {\n                                \"info\": {\n                                    \"properties\": {\n                                        \"app_home\": {\n                                            \"properties\": {\n                                                \"resources\": {\n                                                    \"$ref\": \"#/definitions/objs_resources\"\n                                                },\n                                                \"scopes\": {\n                                                    \"$ref\": \"#/definitions/objs_scopes\"\n                                                }\n                                            },\n                                            \"type\": \"object\"\n                                        },\n                                        \"channel\": {\n                                            \"properties\": {\n                                                \"resources\": {\n                                                    \"$ref\": \"#/definitions/objs_resources\"\n                                                },\n                                                \"scopes\": {\n                                                    \"$ref\": \"#/definitions/objs_scopes\"\n                                                }\n                                            },\n                                            \"type\": \"object\"\n                                        },\n                                        \"group\": {\n                                            \"properties\": {\n                                                \"resources\": {\n                                                    \"$ref\": \"#/definitions/objs_resources\"\n                                                },\n                                                \"scopes\": {\n                                                    \"$ref\": \"#/definitions/objs_scopes\"\n                                                }\n                                            },\n                                            \"type\": \"object\"\n                                        },\n                                        \"im\": {\n                                            \"properties\": {\n                                                \"resources\": {\n                                                    \"$ref\": \"#/definitions/objs_resources\"\n                                                },\n                                                \"scopes\": {\n                                                    \"$ref\": \"#/definitions/objs_scopes\"\n                                                }\n                                            },\n                                            \"type\": \"object\"\n                                        },\n                                        \"mpim\": {\n                                            \"properties\": {\n                                                \"resources\": {\n                                                    \"$ref\": \"#/definitions/objs_resources\"\n                                                },\n                                                \"scopes\": {\n                                                    \"$ref\": \"#/definitions/objs_scopes\"\n                                                }\n                                            },\n                                            \"type\": \"object\"\n                                        },\n                                        \"team\": {\n                                            \"properties\": {\n                                                \"resources\": {\n                                                    \"$ref\": \"#/definitions/objs_resources\"\n                                                },\n                                                \"scopes\": {\n                                                    \"$ref\": \"#/definitions/objs_scopes\"\n                                                }\n                                            },\n                                            \"required\": [\n                                                \"scopes\",\n                                                \"resources\"\n                                            ],\n                                            \"type\": \"object\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"team\",\n                                        \"channel\",\n                                        \"group\",\n                                        \"mpim\",\n                                        \"im\",\n                                        \"app_home\"\n                                    ],\n                                    \"type\": \"object\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"info\"\n                            ],\n                            \"title\": \"apps.permissions.info schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Standard failure response when used with an invalid token\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from apps.permissions.info method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"apps.permissions.info error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"apps.permissions\",\n                    \"apps\"\n                ]\n            }\n        },\n        \"/apps.permissions.request\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Allows an app to request additional scopes\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/apps.permissions.request\"\n                },\n                \"operationId\": \"apps_permissions_request\",\n                \"parameters\": [\n                    {\n                        \"description\": \"A comma separated list of scopes to request for\",\n                        \"in\": \"query\",\n                        \"name\": \"scopes\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `none`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Token used to trigger the permissions API\",\n                        \"in\": \"query\",\n                        \"name\": \"trigger_id\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Standard success response when used with a user token\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from apps.permissions.request method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"apps.permissions.request schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Standard failure response when trigger_id is invalid\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_trigger_id\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from apps.permissions.request method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"invalid_trigger\",\n                                        \"trigger_exchanged\",\n                                        \"invalid_scope\",\n                                        \"invalid_user\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"apps.permissions.request error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"apps.permissions\",\n                    \"apps\"\n                ]\n            }\n        },\n        \"/apps.permissions.resources.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Returns list of resource grants this app has on a team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/apps.permissions.resources.list\"\n                },\n                \"operationId\": \"apps_permissions_resources_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more detail.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `none`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical successful paginated response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"resources\": [\n                                    {\n                                        \"id\": \"T0DES3UAN\",\n                                        \"type\": \"team\"\n                                    },\n                                    {\n                                        \"id\": \"D024BFF1M\",\n                                        \"type\": \"app_home\"\n                                    },\n                                    {\n                                        \"id\": \"C024BE91L\",\n                                        \"type\": \"channel\"\n                                    }\n                                ],\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"dGVhbTpDMUg5UkVTR0w=\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": true,\n                            \"description\": \"Schema for successful response apps.permissions.resources.list method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"resources\": {\n                                    \"items\": {\n                                        \"properties\": {\n                                            \"id\": {\n                                                \"title\": \"An ID for a resource\",\n                                                \"type\": \"string\",\n                                                \"x-examples\": [\n                                                    \"T0DES3UAN\",\n                                                    \"C0ABC1ABC\"\n                                                ]\n                                            },\n                                            \"type\": {\n                                                \"title\": \"The type of resource the `id` corresponds to\",\n                                                \"type\": \"string\",\n                                                \"x-examples\": [\n                                                    \"team\",\n                                                    \"channel\",\n                                                    \"mpim\"\n                                                ]\n                                            }\n                                        },\n                                        \"type\": \"object\"\n                                    },\n                                    \"type\": \"array\"\n                                },\n                                \"response_metadata\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"next_cursor\": {\n                                            \"type\": \"string\",\n                                            \"x-examples\": [\n                                                \"dGVhbTpDMUg5UkVTR0w=\"\n                                            ]\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"next_cursor\"\n                                    ],\n                                    \"type\": \"object\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"resources\"\n                            ],\n                            \"title\": \"apps.permissions.resources.list success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_cursor\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from apps.permissions.resources.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"invalid_cursor\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"apps.permissions.resources.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"apps.permissions.resources\",\n                    \"apps\"\n                ]\n            }\n        },\n        \"/apps.permissions.scopes.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Returns list of scopes this app has on a team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/apps.permissions.scopes.list\"\n                },\n                \"operationId\": \"apps_permissions_scopes_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `none`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical successful paginated response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"scopes\": {\n                                    \"app_home\": [\n                                        \"chat:write\",\n                                        \"im:history\",\n                                        \"im:read\"\n                                    ],\n                                    \"channel\": [\n                                        \"channels:history\",\n                                        \"chat:write\"\n                                    ],\n                                    \"group\": [\n                                        \"chat:write\"\n                                    ],\n                                    \"im\": [\n                                        \"chat:write\"\n                                    ],\n                                    \"mpim\": [\n                                        \"chat:write\"\n                                    ],\n                                    \"team\": [\n                                        \"users:read\"\n                                    ],\n                                    \"user\": []\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": true,\n                            \"description\": \"Schema for successful response api.permissions.scopes.list method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"scopes\": {\n                                    \"additionalProperties\": true,\n                                    \"properties\": {\n                                        \"app_home\": {\n                                            \"$ref\": \"#/definitions/objs_scopes\"\n                                        },\n                                        \"channel\": {\n                                            \"$ref\": \"#/definitions/objs_scopes\"\n                                        },\n                                        \"group\": {\n                                            \"$ref\": \"#/definitions/objs_scopes\"\n                                        },\n                                        \"im\": {\n                                            \"$ref\": \"#/definitions/objs_scopes\"\n                                        },\n                                        \"mpim\": {\n                                            \"$ref\": \"#/definitions/objs_scopes\"\n                                        },\n                                        \"team\": {\n                                            \"$ref\": \"#/definitions/objs_scopes\"\n                                        },\n                                        \"user\": {\n                                            \"$ref\": \"#/definitions/objs_scopes\"\n                                        }\n                                    },\n                                    \"type\": \"object\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"scopes\"\n                            ],\n                            \"title\": \"api.permissions.scopes.list success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from apps.permissions.scopes.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"apps.permissions.scopes.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"apps.permissions.scopes\",\n                    \"apps\"\n                ]\n            }\n        },\n        \"/apps.permissions.users.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Returns list of user grants and corresponding scopes this app has on a team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/apps.permissions.users.list\"\n                },\n                \"operationId\": \"apps_permissions_users_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more detail.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `none`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical successful paginated response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"resources\": [\n                                    {\n                                        \"id\": \"U0DES3UAN\",\n                                        \"scopes\": [\n                                            \"dnd:write:user\",\n                                            \"reminders:write:user\"\n                                        ]\n                                    },\n                                    {\n                                        \"id\": \"U024BFF1M\",\n                                        \"scopes\": [\n                                            \"reminders:write:user\"\n                                        ]\n                                    }\n                                ],\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"dGVhbTdPMUg5UkFTT0w=\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default success template\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_cursor\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default error template\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"apps.permissions.users\",\n                    \"apps\"\n                ]\n            }\n        },\n        \"/apps.permissions.users.request\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Enables an app to trigger a permissions modal to grant an app access to a user access scope.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/apps.permissions.users.request\"\n                },\n                \"operationId\": \"apps_permissions_users_request\",\n                \"parameters\": [\n                    {\n                        \"description\": \"A comma separated list of user scopes to request for\",\n                        \"in\": \"query\",\n                        \"name\": \"scopes\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `none`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The user this scope is being requested for\",\n                        \"in\": \"query\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Token used to trigger the request\",\n                        \"in\": \"query\",\n                        \"name\": \"trigger_id\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Standard success response when used with a user token\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default success template\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Standard failure response when trigger_id is invalid\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_trigger_id\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default error template\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"apps.permissions.users\",\n                    \"apps\"\n                ]\n            }\n        },\n        \"/apps.uninstall\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Uninstalls your app from a workspace.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/apps.uninstall\"\n                },\n                \"operationId\": \"apps_uninstall\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Issued when you created your application.\",\n                        \"in\": \"query\",\n                        \"name\": \"client_secret\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `none`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Issued when you created your application.\",\n                        \"in\": \"query\",\n                        \"name\": \"client_id\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from apps.uninstall method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"apps.uninstall schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from apps.uninstall method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"invalid_client_id\",\n                                        \"bad_client_secret\",\n                                        \"client_id_token_mismatch\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"apps.uninstall error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"apps\"\n                ]\n            }\n        },\n        \"/auth.revoke\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Revokes a token.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/auth.revoke\"\n                },\n                \"operationId\": \"auth_revoke\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Setting this parameter to `1` triggers a _testing mode_ where the specified token will not actually be revoked.\",\n                        \"in\": \"query\",\n                        \"name\": \"test\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `none`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"revoked\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from auth.revoke method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"revoked\": {\n                                    \"type\": \"boolean\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"revoked\"\n                            ],\n                            \"title\": \"auth.revoke schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from auth.revoke method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"auth.revoke error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"auth\"\n                ]\n            }\n        },\n        \"/auth.test\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Checks authentication & identity.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/auth.test\"\n                },\n                \"operationId\": \"auth_test\",\n                \"parameters\": [],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Standard success response when used with a user token\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"team\": \"Subarachnoid Workspace\",\n                                \"team_id\": \"T12345678\",\n                                \"url\": \"https://subarachnoid.slack.com/\",\n                                \"user\": \"grace\",\n                                \"user_id\": \"W12345678\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response auth.test method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"team\": {\n                                    \"type\": \"string\"\n                                },\n                                \"team_id\": {\n                                    \"$ref\": \"#/definitions/defs_team\"\n                                },\n                                \"url\": {\n                                    \"type\": \"string\"\n                                },\n                                \"user\": {\n                                    \"type\": \"string\"\n                                },\n                                \"user_id\": {\n                                    \"$ref\": \"#/definitions/defs_user_id\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"url\",\n                                \"team\",\n                                \"user\",\n                                \"team_id\",\n                                \"user_id\"\n                            ],\n                            \"title\": \"auth.test success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Standard failure response when used with an invalid token\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response auth.test method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"token_revoked\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"auth.test error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"auth\"\n                ]\n            }\n        },\n        \"/bots.info\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets information about a bot user.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/bots.info\"\n                },\n                \"operationId\": \"bots_info\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Bot user to get info on\",\n                        \"in\": \"query\",\n                        \"name\": \"bot\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"When successful, returns bot info by bot ID.\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"bot\": {\n                                    \"app_id\": \"A161CLERW\",\n                                    \"deleted\": false,\n                                    \"icons\": {\n                                        \"image_36\": \"https://...\",\n                                        \"image_48\": \"https://...\",\n                                        \"image_72\": \"https://...\"\n                                    },\n                                    \"id\": \"B061F7JD2\",\n                                    \"name\": \"beforebot\",\n                                    \"updated\": 1449272004,\n                                    \"user_id\": \"U012ABCDEF\"\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from bots.info method\",\n                            \"properties\": {\n                                \"bot\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"app_id\": {\n                                            \"$ref\": \"#/definitions/defs_app_id\"\n                                        },\n                                        \"deleted\": {\n                                            \"type\": \"boolean\"\n                                        },\n                                        \"icons\": {\n                                            \"additionalProperties\": false,\n                                            \"properties\": {\n                                                \"image_36\": {\n                                                    \"format\": \"uri\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_48\": {\n                                                    \"format\": \"uri\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_72\": {\n                                                    \"format\": \"uri\",\n                                                    \"type\": \"string\"\n                                                }\n                                            },\n                                            \"required\": [\n                                                \"image_36\",\n                                                \"image_48\",\n                                                \"image_72\"\n                                            ],\n                                            \"type\": \"object\"\n                                        },\n                                        \"id\": {\n                                            \"$ref\": \"#/definitions/defs_bot_id\"\n                                        },\n                                        \"name\": {\n                                            \"type\": \"string\"\n                                        },\n                                        \"updated\": {\n                                            \"type\": \"integer\"\n                                        },\n                                        \"user_id\": {\n                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"id\",\n                                        \"deleted\",\n                                        \"name\",\n                                        \"updated\",\n                                        \"app_id\",\n                                        \"icons\"\n                                    ],\n                                    \"type\": \"object\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"bot\"\n                            ],\n                            \"title\": \"bots.info schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"When no bot can be found, it returns an error.\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"bot_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from bots.info method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"bot_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"bots.info error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"bots\"\n                ]\n            }\n        },\n        \"/channels.archive\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Archives a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.archive\"\n                },\n                \"operationId\": \"channels_archive\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to archive\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from channels.archive method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"channels.archive success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response channels.archive method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"already_archived\",\n                                        \"cant_archive_general\",\n                                        \"restricted_action\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"team_added_to_org\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.archive error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.create\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Creates a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.create\"\n                },\n                \"operationId\": \"channels_create\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.\",\n                        \"in\": \"formData\",\n                        \"name\": \"validate\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Name of channel to create\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response resulting in a new channel\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"created\": 1502833204,\n                                    \"creator\": \"U061F7AUR\",\n                                    \"id\": \"C0DEL09A5\",\n                                    \"is_archived\": false,\n                                    \"is_channel\": true,\n                                    \"is_general\": false,\n                                    \"is_member\": true,\n                                    \"is_mpim\": false,\n                                    \"is_org_shared\": false,\n                                    \"is_private\": false,\n                                    \"is_shared\": false,\n                                    \"last_read\": \"0000000000.000000\",\n                                    \"latest\": null,\n                                    \"members\": [\n                                        \"U061F7AUR\"\n                                    ],\n                                    \"name\": \"endeavor\",\n                                    \"name_normalized\": \"endeavor\",\n                                    \"previous_names\": [],\n                                    \"purpose\": {\n                                        \"creator\": \"\",\n                                        \"last_set\": 0,\n                                        \"value\": \"\"\n                                    },\n                                    \"topic\": {\n                                        \"creator\": \"\",\n                                        \"last_set\": 0,\n                                        \"value\": \"\"\n                                    },\n                                    \"unread_count\": 0,\n                                    \"unread_count_display\": 0\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response channels.create method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_channel\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"channels.create error schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Example error response when an invalid name is provided\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"detail\": \"Value passed for `name` contained unallowed special characters.\",\n                                \"error\": \"invalid_name_specials\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response channels.create method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"name_taken\",\n                                        \"restricted_action\",\n                                        \"no_channel\",\n                                        \"invalid_name_required\",\n                                        \"invalid_name_punctuation\",\n                                        \"invalid_name_maxlength\",\n                                        \"invalid_name_specials\",\n                                        \"invalid_name\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"team_added_to_org\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.create error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.history\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Fetches history of messages and events from a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.history\"\n                },\n                \"operationId\": \"channels_history\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Number of messages to return, between 1 and 1000.\",\n                        \"in\": \"query\",\n                        \"name\": \"count\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Include `unread_count_display` in the output?\",\n                        \"in\": \"query\",\n                        \"name\": \"unreads\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Include messages with latest or oldest timestamp in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"inclusive\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:history`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Start of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"oldest\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Channel to fetch history for.\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"End of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"latest\",\n                        \"type\": \"number\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response containing the channel's history\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"has_more\": false,\n                                \"messages\": [\n                                    {\n                                        \"text\": \"Hello\",\n                                        \"ts\": \"1358546515.000008\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"is_starred\": true,\n                                        \"reactions\": [\n                                            {\n                                                \"count\": 3,\n                                                \"name\": \"space_invader\",\n                                                \"users\": [\n                                                    \"U1\",\n                                                    \"U2\",\n                                                    \"U3\"\n                                                ]\n                                            },\n                                            {\n                                                \"count\": 5,\n                                                \"name\": \"sweet_potato\",\n                                                \"users\": [\n                                                    \"U1\",\n                                                    \"U2\",\n                                                    \"U3\",\n                                                    \"U4\",\n                                                    \"U5\"\n                                                ]\n                                            }\n                                        ],\n                                        \"text\": \"World\",\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"something_else\"\n                                    },\n                                    {\n                                        \"attachments\": [\n                                            {\n                                                \"fallback\": \"This is an attachment fallback\",\n                                                \"id\": 1,\n                                                \"text\": \"Don't get too attached\"\n                                            }\n                                        ],\n                                        \"bot_id\": \"B19LU7CSY\",\n                                        \"subtype\": \"bot_message\",\n                                        \"text\": \"Containment unit is 98% full\",\n                                        \"ts\": \"1503435956.000247\",\n                                        \"type\": \"message\",\n                                        \"username\": \"ecto1138\"\n                                    }\n                                ],\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response channels.history method\",\n                            \"properties\": {\n                                \"has_more\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"is_limited\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"messages\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_message\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"messages\",\n                                \"has_more\"\n                            ],\n                            \"title\": \"channels.history success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Error response when the specified channel cannot be found\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response channels.history method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"invalid_ts_latest\",\n                                        \"invalid_ts_oldest\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.history error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:history\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.info\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets information about a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.info\"\n                },\n                \"operationId\": \"channels_info\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Set this to `true` to receive the locale for this channel. Defaults to `false`\",\n                        \"in\": \"query\",\n                        \"name\": \"include_locale\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Channel to get info on\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"created\": 1466025154,\n                                    \"creator\": \"U0G9QF9C6\",\n                                    \"id\": \"C1H9RESGL\",\n                                    \"is_archived\": false,\n                                    \"is_channel\": true,\n                                    \"is_general\": false,\n                                    \"is_member\": true,\n                                    \"is_mpim\": false,\n                                    \"is_org_shared\": false,\n                                    \"is_private\": false,\n                                    \"is_shared\": false,\n                                    \"last_read\": \"1503435939.000101\",\n                                    \"latest\": {\n                                        \"attachments\": [\n                                            {\n                                                \"fallback\": \"This is an attachment fallback\",\n                                                \"id\": 1,\n                                                \"text\": \"Don't get too attached\"\n                                            }\n                                        ],\n                                        \"bot_id\": \"B19LU7CSY\",\n                                        \"subtype\": \"bot_message\",\n                                        \"text\": \"Containment unit is 98% full\",\n                                        \"ts\": \"1503435956.000247\",\n                                        \"type\": \"message\",\n                                        \"username\": \"ecto1138\"\n                                    },\n                                    \"members\": [\n                                        \"U0G9QF9C6\",\n                                        \"U1QNSQB9U\"\n                                    ],\n                                    \"name\": \"busting\",\n                                    \"name_normalized\": \"busting\",\n                                    \"previous_names\": [\n                                        \"dusting\"\n                                    ],\n                                    \"purpose\": {\n                                        \"creator\": \"U0G9QF9C6\",\n                                        \"last_set\": 1503435128,\n                                        \"value\": \"Discuss busting ghosts\"\n                                    },\n                                    \"topic\": {\n                                        \"creator\": \"U0G9QF9C6\",\n                                        \"last_set\": 1503435128,\n                                        \"value\": \"Spiritual containment strategies\"\n                                    },\n                                    \"unread_count\": 1,\n                                    \"unread_count_display\": 1\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response channels.info method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_channel\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"channels.info success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Error response when the specified channel cannot be found\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response channels.info method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"team_added_to_org\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.info error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.invite\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Invites a user to a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.invite\"\n                },\n                \"operationId\": \"channels_invite\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"User to invite to channel.\",\n                        \"in\": \"formData\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to invite user to.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"created\": 1466025154,\n                                    \"creator\": \"U0G9QF9C6\",\n                                    \"id\": \"C1H9RESGL\",\n                                    \"is_archived\": false,\n                                    \"is_channel\": true,\n                                    \"is_general\": false,\n                                    \"is_member\": true,\n                                    \"is_mpim\": false,\n                                    \"is_org_shared\": false,\n                                    \"is_private\": false,\n                                    \"is_shared\": false,\n                                    \"last_read\": \"1503435963.000307\",\n                                    \"latest\": {\n                                        \"subtype\": \"channel_leave\",\n                                        \"text\": \"<@U1QNSQB9U|protobot> has left the channel\",\n                                        \"ts\": \"1503435963.000307\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U1QNSQB9U\"\n                                    },\n                                    \"members\": [\n                                        \"U0G9QF9C6\",\n                                        \"U1QNSQB9U\"\n                                    ],\n                                    \"name\": \"busting\",\n                                    \"name_normalized\": \"busting\",\n                                    \"previous_names\": [],\n                                    \"purpose\": {\n                                        \"creator\": \"U0G9QF9C6\",\n                                        \"last_set\": 1503435128,\n                                        \"value\": \"My Purpose\"\n                                    },\n                                    \"topic\": {\n                                        \"creator\": \"U0G9QF9C6\",\n                                        \"last_set\": 1503435128,\n                                        \"value\": \"My Topic\"\n                                    },\n                                    \"unread_count\": 0,\n                                    \"unread_count_display\": 0\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response channels.invite method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_channel\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"channels.invite error schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"A somewhat typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"cant_invite\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response channels.invite method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"user_not_found\",\n                                        \"cant_invite_self\",\n                                        \"not_in_channel\",\n                                        \"already_in_channel\",\n                                        \"is_archived\",\n                                        \"cant_invite\",\n                                        \"too_many_users\",\n                                        \"ura_max_channels\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"team_added_to_org\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.invite error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.join\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Joins a channel, creating it if needed.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.join\"\n                },\n                \"operationId\": \"channels_join\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.\",\n                        \"in\": \"formData\",\n                        \"name\": \"validate\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Name of channel to join\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"already_in_channel\": true,\n                                \"channel\": {\n                                    \"created\": 1466025154,\n                                    \"creator\": \"U0G9QF9C6\",\n                                    \"id\": \"C1H9RESGL\",\n                                    \"is_archived\": false,\n                                    \"is_channel\": true,\n                                    \"is_general\": false,\n                                    \"is_member\": true,\n                                    \"is_mpim\": false,\n                                    \"is_org_shared\": false,\n                                    \"is_private\": false,\n                                    \"is_shared\": false,\n                                    \"members\": [\n                                        \"U0G9QF9C6\",\n                                        \"U1QNSQB9U\"\n                                    ],\n                                    \"name\": \"busting\",\n                                    \"name_normalized\": \"busting\",\n                                    \"previous_names\": [],\n                                    \"purpose\": {\n                                        \"creator\": \"U0G9QF9C6\",\n                                        \"last_set\": 1503435128,\n                                        \"value\": \"My Purpose\"\n                                    },\n                                    \"topic\": {\n                                        \"creator\": \"U0G9QF9C6\",\n                                        \"last_set\": 1503435128,\n                                        \"value\": \"My Topic\"\n                                    }\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from channels.join method\",\n                            \"properties\": {\n                                \"already_in_channel\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_channel\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"channels.join schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from channels.join method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"name_taken\",\n                                        \"restricted_action\",\n                                        \"no_channel\",\n                                        \"is_archived\",\n                                        \"invalid_name_required\",\n                                        \"invalid_name_punctuation\",\n                                        \"invalid_name_maxlength\",\n                                        \"invalid_name_specials\",\n                                        \"invalid_name\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.join error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.kick\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Removes a user from a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.kick\"\n                },\n                \"operationId\": \"channels_kick\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"User to remove from channel.\",\n                        \"in\": \"formData\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to remove user from.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from channels.kick method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"channels.kick schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"not_in_channel\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from channels.kick method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"user_not_found\",\n                                        \"cant_kick_self\",\n                                        \"not_in_channel\",\n                                        \"cant_kick_from_general\",\n                                        \"restricted_action\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.kick error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.leave\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Leaves a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.leave\"\n                },\n                \"operationId\": \"channels_leave\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to leave\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from channels.leave method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"channels.leave schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from channels.leave method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"is_archived\",\n                                        \"cant_leave_general\",\n                                        \"cant_leave_mandatory_shared_channel\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.leave error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists all channels in a Slack team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.list\"\n                },\n                \"operationId\": \"channels_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Exclude the `members` collection from each `channel`\",\n                        \"in\": \"query\",\n                        \"name\": \"exclude_members\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more detail.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Exclude archived channels from the list\",\n                        \"in\": \"query\",\n                        \"name\": \"exclude_archived\",\n                        \"type\": \"boolean\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical cursored success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channels\": [\n                                    {\n                                        \"created\": 1449709280,\n                                        \"creator\": \"U0G9QF9C6\",\n                                        \"id\": \"C0G9QF9GW\",\n                                        \"is_archived\": false,\n                                        \"is_channel\": true,\n                                        \"is_general\": false,\n                                        \"is_member\": true,\n                                        \"is_mpim\": false,\n                                        \"is_org_shared\": false,\n                                        \"is_private\": false,\n                                        \"is_shared\": false,\n                                        \"members\": [\n                                            \"U0G9QF9C6\",\n                                            \"U0G9WFXNZ\"\n                                        ],\n                                        \"name\": \"random\",\n                                        \"name_normalized\": \"random\",\n                                        \"num_members\": 2,\n                                        \"previous_names\": [],\n                                        \"purpose\": {\n                                            \"creator\": \"\",\n                                            \"last_set\": 0,\n                                            \"value\": \"A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you'd prefer to keep out of more focused work-related channels.\"\n                                        },\n                                        \"topic\": {\n                                            \"creator\": \"U0G9QF9C6\",\n                                            \"last_set\": 1449709352,\n                                            \"value\": \"Other stuff\"\n                                        }\n                                    },\n                                    {\n                                        \"created\": 1449709280,\n                                        \"creator\": \"U0G9QF9C6\",\n                                        \"id\": \"C0G9QKBBL\",\n                                        \"is_archived\": false,\n                                        \"is_channel\": true,\n                                        \"is_general\": true,\n                                        \"is_member\": true,\n                                        \"is_mpim\": false,\n                                        \"is_org_shared\": false,\n                                        \"is_private\": false,\n                                        \"is_shared\": false,\n                                        \"members\": [\n                                            \"U0G9QF9C6\",\n                                            \"U0G9WFXNZ\"\n                                        ],\n                                        \"name\": \"general\",\n                                        \"name_normalized\": \"general\",\n                                        \"num_members\": 2,\n                                        \"previous_names\": [],\n                                        \"purpose\": {\n                                            \"creator\": \"U0G9QF9C6\",\n                                            \"last_set\": 1449709334,\n                                            \"value\": \"To talk about anything!\"\n                                        },\n                                        \"topic\": {\n                                            \"creator\": \"U0G9QF9C6\",\n                                            \"last_set\": 1449709364,\n                                            \"value\": \"Talk about anything!\"\n                                        }\n                                    }\n                                ],\n                                \"ok\": true,\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"dGVhbTpDMUg5UkVTR0w=\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response channels.list method\",\n                            \"properties\": {\n                                \"channels\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_channel\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channels\"\n                            ],\n                            \"title\": \"channels.list success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response channels.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"limit_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.mark\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sets the read cursor in a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.mark\"\n                },\n                \"operationId\": \"channels_mark\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the most recently seen message.\",\n                        \"in\": \"formData\",\n                        \"name\": \"ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Channel to set reading cursor in.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response channels.mark method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"channels.mark success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response channels.mark method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"invalid_timestamp\",\n                                        \"not_in_channel\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.mark error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.rename\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Renames a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.rename\"\n                },\n                \"operationId\": \"channels_rename\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.\",\n                        \"in\": \"formData\",\n                        \"name\": \"validate\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"New name for channel.\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to rename\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"created\": 1477445146,\n                                    \"creator\": \"U2U85N1RZ\",\n                                    \"id\": \"C2U875RJN\",\n                                    \"is_archived\": false,\n                                    \"is_channel\": true,\n                                    \"is_general\": false,\n                                    \"is_member\": false,\n                                    \"is_mpim\": false,\n                                    \"is_org_shared\": false,\n                                    \"is_private\": false,\n                                    \"is_shared\": false,\n                                    \"members\": [],\n                                    \"name\": \"humans-and-bots\",\n                                    \"name_normalized\": \"humans-and-bots\",\n                                    \"previous_names\": [\n                                        \"humans\"\n                                    ],\n                                    \"purpose\": {\n                                        \"creator\": \"U2U85N1RZ\",\n                                        \"last_set\": 1509475801,\n                                        \"value\": \"the purpose of this channel is to bring people and robots together in harmony\"\n                                    },\n                                    \"topic\": {\n                                        \"creator\": \"U2U85N1RZ\",\n                                        \"last_set\": 1509475775,\n                                        \"value\": \"here be robots\"\n                                    },\n                                    \"unlinked\": 0\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from channels.rename method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_channel\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"channels.rename schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from channels.rename method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_in_channel\",\n                                        \"not_authorized\",\n                                        \"invalid_name\",\n                                        \"name_taken\",\n                                        \"invalid_name_required\",\n                                        \"invalid_name_punctuation\",\n                                        \"invalid_name_maxlength\",\n                                        \"invalid_name_specials\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.rename error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.replies\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieve a thread of messages posted to a channel\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.replies\"\n                },\n                \"operationId\": \"channels_replies\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Unique identifier of a thread's parent message\",\n                        \"in\": \"query\",\n                        \"name\": \"thread_ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:history`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to fetch thread from\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"has_more\": false,\n                                \"messages\": [\n                                    {\n                                        \"last_read\": \"1509484885.000082\",\n                                        \"replies\": [\n                                            {\n                                                \"ts\": \"1509484424.000601\",\n                                                \"user\": \"U2U85N1RZ\"\n                                            },\n                                            {\n                                                \"ts\": \"1509484885.000082\",\n                                                \"user\": \"U2U85N1RZ\"\n                                            }\n                                        ],\n                                        \"reply_count\": 2,\n                                        \"subscribed\": true,\n                                        \"text\": \"This is a channel message\",\n                                        \"thread_ts\": \"1485913694.000025\",\n                                        \"ts\": \"1485913694.000025\",\n                                        \"type\": \"message\",\n                                        \"unread_count\": 0,\n                                        \"user\": \"U2X9P5FEL\"\n                                    },\n                                    {\n                                        \"parent_user_id\": \"U2X9P5FEL\",\n                                        \"text\": \"This is a thread reply\",\n                                        \"thread_ts\": \"1485913694.000025\",\n                                        \"ts\": \"1509484424.000601\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2U85N1RZ\"\n                                    },\n                                    {\n                                        \"parent_user_id\": \"U2X9P5FEL\",\n                                        \"text\": \"This is another thread reply\",\n                                        \"thread_ts\": \"1485913694.000025\",\n                                        \"ts\": \"1509484885.000082\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2U85N1RZ\"\n                                    }\n                                ],\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from channels.replies method\",\n                            \"properties\": {\n                                \"has_more\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"messages\": {\n                                    \"items\": {\n                                        \"items\": [\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"last_read\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"latest_reply\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"replies\": {\n                                                        \"items\": {\n                                                            \"additionalProperties\": false,\n                                                            \"properties\": {\n                                                                \"ts\": {\n                                                                    \"$ref\": \"#/definitions/defs_ts\"\n                                                                },\n                                                                \"user\": {\n                                                                    \"$ref\": \"#/definitions/defs_user_id\"\n                                                                }\n                                                            },\n                                                            \"required\": [\n                                                                \"user\",\n                                                                \"ts\"\n                                                            ],\n                                                            \"type\": \"object\"\n                                                        },\n                                                        \"type\": \"array\"\n                                                    },\n                                                    \"reply_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"reply_users\": {\n                                                        \"items\": {\n                                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                                        },\n                                                        \"type\": \"array\",\n                                                        \"uniqueItems\": true\n                                                    },\n                                                    \"reply_users_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"source_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"subscribed\": {\n                                                        \"type\": \"boolean\"\n                                                    },\n                                                    \"team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"text\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"thread_ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"type\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"unread_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"user\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"user_profile\": {\n                                                        \"$ref\": \"#/definitions/objs_user_profile_short\"\n                                                    },\n                                                    \"user_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"user\",\n                                                    \"text\",\n                                                    \"thread_ts\",\n                                                    \"reply_count\",\n                                                    \"replies\",\n                                                    \"subscribed\",\n                                                    \"ts\"\n                                                ],\n                                                \"type\": \"object\"\n                                            },\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"is_starred\": {\n                                                        \"type\": \"boolean\"\n                                                    },\n                                                    \"parent_user_id\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"source_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"text\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"thread_ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"type\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"user\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"user_profile\": {\n                                                        \"$ref\": \"#/definitions/objs_user_profile_short\"\n                                                    },\n                                                    \"user_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"user\",\n                                                    \"text\",\n                                                    \"thread_ts\",\n                                                    \"parent_user_id\",\n                                                    \"ts\"\n                                                ],\n                                                \"type\": \"object\"\n                                            }\n                                        ]\n                                    },\n                                    \"type\": \"array\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"messages\",\n                                \"has_more\"\n                            ],\n                            \"title\": \"channels.replies schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"thread_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from channels.replies method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"thread_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.replies error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:history\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.setPurpose\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sets the purpose for a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.setPurpose\"\n                },\n                \"operationId\": \"channels_setPurpose\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The new purpose\",\n                        \"in\": \"formData\",\n                        \"name\": \"purpose\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to set the purpose of\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"purpose\": \"My special purpose\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from channels.setPurpose method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"purpose\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"purpose\"\n                            ],\n                            \"title\": \"channels.setPurpose schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from channels.setPurpose method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_in_channel\",\n                                        \"is_archived\",\n                                        \"too_long\",\n                                        \"user_is_restricted\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.setPurpose error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.setTopic\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sets the topic for a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.setTopic\"\n                },\n                \"operationId\": \"channels_setTopic\",\n                \"parameters\": [\n                    {\n                        \"description\": \"The new topic\",\n                        \"in\": \"formData\",\n                        \"name\": \"topic\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to set the topic of\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"topic\": \"To picture topicality\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from channels.setTopic method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"topic\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"topic\",\n                                \"ok\"\n                            ],\n                            \"title\": \"channels.setTopic schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from channels.setTopic method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_in_channel\",\n                                        \"is_archived\",\n                                        \"too_long\",\n                                        \"user_is_restricted\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.setTopic error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/channels.unarchive\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Unarchives a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/channels.unarchive\"\n                },\n                \"operationId\": \"channels_unarchive\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to unarchive\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from channels.unarchive method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"channels.unarchive schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from channels.unarchive method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_archived\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"channels.unarchive error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"channels\"\n                ]\n            }\n        },\n        \"/chat.delete\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Deletes a message.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/chat.delete\"\n                },\n                \"operationId\": \"chat_delete\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Pass true to delete the message as the authed user with `chat:write:user` scope. [Bot users](/bot-users) in this context are considered authed users. If unused or false, the message will be deleted with `chat:write:bot` scope.\",\n                        \"in\": \"formData\",\n                        \"name\": \"as_user\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `chat:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the message to be deleted.\",\n                        \"in\": \"formData\",\n                        \"name\": \"ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Channel containing the message to be deleted.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": \"C024BE91L\",\n                                \"ok\": true,\n                                \"ts\": \"1401383885.000061\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response of chat.delete method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/defs_channel\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"ts\": {\n                                    \"$ref\": \"#/definitions/defs_ts\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\",\n                                \"ts\"\n                            ],\n                            \"title\": \"chat.delete success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"message_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from chat.delete method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"message_not_found\",\n                                        \"channel_not_found\",\n                                        \"cant_delete_message\",\n                                        \"compliance_exports_prevent_deletion\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"chat.delete error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"chat:write:user\",\n                            \"chat:write:bot\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"chat\"\n                ]\n            }\n        },\n        \"/chat.deleteScheduledMessage\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Deletes a pending scheduled message from the queue.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/chat.deleteScheduledMessage\"\n                },\n                \"operationId\": \"chat_deleteScheduledMessage\",\n                \"parameters\": [],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from chat.deleteScheduledMessage method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"chat.deleteScheduledMessage schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response if no message is found\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_scheduled_message_id\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from chat.deleteScheduledMessage method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"invalid_scheduled_message_id\",\n                                        \"channel_not_found\",\n                                        \"bad_token\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"ekm_access_denied\",\n                                        \"missing_scope\",\n                                        \"invalid_arguments\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"chat.deleteScheduledMessage error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"chat:write:user\",\n                            \"chat:write:bot\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"chat\"\n                ]\n            }\n        },\n        \"/chat.getPermalink\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieve a permalink URL for a specific extant message\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/chat.getPermalink\"\n                },\n                \"operationId\": \"chat_getPermalink\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `none`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A message's `ts` value, uniquely identifying it within a channel\",\n                        \"in\": \"query\",\n                        \"name\": \"message_ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"The ID of the conversation or channel containing the message\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Standard success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": \"C1H9RESGA\",\n                                \"ok\": true,\n                                \"permalink\": \"https://ghostbusters.slack.com/archives/C1H9RESGA/p135854651500008\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response chat.getPermalink\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/defs_channel\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"permalink\": {\n                                    \"format\": \"uri\",\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\",\n                                \"permalink\"\n                            ],\n                            \"title\": \"chat.getPermalink success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Error response when channel cannot be found\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from chat.getPermalink method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"message_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"chat.getPermalink error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"chat\"\n                ]\n            }\n        },\n        \"/chat.meMessage\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Share a me message into a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/chat.meMessage\"\n                },\n                \"operationId\": \"chat_meMessage\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Text of the message to send.\",\n                        \"in\": \"formData\",\n                        \"name\": \"text\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `chat:write:user`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to send message to. Can be a public channel, private group or IM channel. Can be an encoded ID, or a name.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": \"C024BE7LR\",\n                                \"ok\": true,\n                                \"ts\": \"1417671948.000006\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from chat.meMessage method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/defs_channel\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"ts\": {\n                                    \"$ref\": \"#/definitions/defs_ts\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"chat.meMessage schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from chat.meMessage method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_in_channel\",\n                                        \"is_archived\",\n                                        \"msg_too_long\",\n                                        \"no_text\",\n                                        \"rate_limited\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"chat.meMessage error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"chat:write:user\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"chat\"\n                ]\n            }\n        },\n        \"/chat.postEphemeral\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sends an ephemeral message to a user in a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/chat.postEphemeral\"\n                },\n                \"operationId\": \"chat_postEphemeral\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Provide another message's `ts` value to post this message in a thread. Avoid using a reply's `ts` value; use its parent's value instead. Ephemeral messages in threads are only shown if there is already an active thread.\",\n                        \"in\": \"formData\",\n                        \"name\": \"thread_ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"A JSON-based array of structured blocks, presented as a URL-encoded string.\",\n                        \"in\": \"formData\",\n                        \"name\": \"blocks\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A JSON-based array of structured attachments, presented as a URL-encoded string.\",\n                        \"in\": \"formData\",\n                        \"name\": \"attachments\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Pass true to post the message as the authed user. Defaults to true if the chat:write:bot scope is not included. Otherwise, defaults to false.\",\n                        \"in\": \"formData\",\n                        \"name\": \"as_user\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Change how messages are treated. Defaults to `none`. See [below](#formatting).\",\n                        \"in\": \"formData\",\n                        \"name\": \"parse\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `chat:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Text of the message to send. See below for an explanation of [formatting](#formatting). This field is usually required, unless you're providing only `attachments` instead.\",\n                        \"in\": \"formData\",\n                        \"name\": \"text\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"`id` of the user who will receive the ephemeral message. The user should be in the channel specified by the `channel` argument.\",\n                        \"in\": \"formData\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Find and link channel names and usernames.\",\n                        \"in\": \"formData\",\n                        \"name\": \"link_names\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"message_ts\": \"1502210682.580145\",\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from chat.postEphemeral method\",\n                            \"properties\": {\n                                \"message_ts\": {\n                                    \"$ref\": \"#/definitions/defs_ts\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"message_ts\"\n                            ],\n                            \"title\": \"chat.postEphemeral success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"user_not_in_channel\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from chat.postEphemeral method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"is_archived\",\n                                        \"msg_too_long\",\n                                        \"no_text\",\n                                        \"restricted_action\",\n                                        \"too_many_attachments\",\n                                        \"user_not_in_channel\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"chat.postEphemeral error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"chat:write:user\",\n                            \"chat:write:bot\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"chat\"\n                ]\n            }\n        },\n        \"/chat.postMessage\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sends a message to a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/chat.postMessage\"\n                },\n                \"operationId\": \"chat_postMessage\",\n                \"parameters\": [\n                    {\n                        \"description\": \"A JSON-based array of structured attachments, presented as a URL-encoded string.\",\n                        \"in\": \"formData\",\n                        \"name\": \"attachments\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Pass true to enable unfurling of primarily text-based content.\",\n                        \"in\": \"formData\",\n                        \"name\": \"unfurl_links\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Text of the message to send. See below for an explanation of [formatting](#formatting). This field is usually required, unless you're providing only `attachments` instead. Provide no more than 40,000 characters or [risk truncation](/changelog/2018-04-truncating-really-long-messages).\",\n                        \"in\": \"formData\",\n                        \"name\": \"text\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Pass false to disable unfurling of media content.\",\n                        \"in\": \"formData\",\n                        \"name\": \"unfurl_media\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Change how messages are treated. Defaults to `none`. See [below](#formatting).\",\n                        \"in\": \"formData\",\n                        \"name\": \"parse\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Pass true to post the message as the authed user, instead of as a bot. Defaults to false. See [authorship](#authorship) below.\",\n                        \"in\": \"formData\",\n                        \"name\": \"as_user\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Disable Slack markup parsing by setting to `false`. Enabled by default.\",\n                        \"in\": \"formData\",\n                        \"name\": \"mrkdwn\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name. See [below](#channels) for more details.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Set your bot's user name. Must be used in conjunction with `as_user` set to false, otherwise ignored. See [authorship](#authorship) below.\",\n                        \"in\": \"formData\",\n                        \"name\": \"username\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A JSON-based array of structured blocks, presented as a URL-encoded string.\",\n                        \"in\": \"formData\",\n                        \"name\": \"blocks\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Emoji to use as the icon for this message. Overrides `icon_url`. Must be used in conjunction with `as_user` set to `false`, otherwise ignored. See [authorship](#authorship) below.\",\n                        \"in\": \"formData\",\n                        \"name\": \"icon_emoji\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Find and link channel names and usernames.\",\n                        \"in\": \"formData\",\n                        \"name\": \"link_names\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Used in conjunction with `thread_ts` and indicates whether reply should be made visible to everyone in the channel or conversation. Defaults to `false`.\",\n                        \"in\": \"formData\",\n                        \"name\": \"reply_broadcast\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Provide another message's `ts` value to make this message a reply. Avoid using a reply's `ts` value; use its parent instead.\",\n                        \"in\": \"formData\",\n                        \"name\": \"thread_ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `chat:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"URL to an image to use as the icon for this message. Must be used in conjunction with `as_user` set to false, otherwise ignored. See [authorship](#authorship) below.\",\n                        \"in\": \"formData\",\n                        \"name\": \"icon_url\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": \"C1H9RESGL\",\n                                \"message\": {\n                                    \"attachments\": [\n                                        {\n                                            \"fallback\": \"This is an attachment's fallback\",\n                                            \"id\": 1,\n                                            \"text\": \"This is an attachment\"\n                                        }\n                                    ],\n                                    \"bot_id\": \"B19LU7CSY\",\n                                    \"subtype\": \"bot_message\",\n                                    \"text\": \"Here's a message for you\",\n                                    \"ts\": \"1503435956.000247\",\n                                    \"type\": \"message\",\n                                    \"username\": \"ecto1\"\n                                },\n                                \"ok\": true,\n                                \"ts\": \"1503435956.000247\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response of chat.postMessage method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/defs_channel\"\n                                },\n                                \"message\": {\n                                    \"$ref\": \"#/definitions/objs_message\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"ts\": {\n                                    \"$ref\": \"#/definitions/defs_ts\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\",\n                                \"ts\",\n                                \"message\"\n                            ],\n                            \"title\": \"chat.postMessage success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response if too many attachments are included\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"too_many_attachments\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response chat.postMessage method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_in_channel\",\n                                        \"is_archived\",\n                                        \"msg_too_long\",\n                                        \"no_text\",\n                                        \"too_many_attachments\",\n                                        \"rate_limited\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"chat.postMessage error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"chat:write:user\",\n                            \"chat:write:bot\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"chat\"\n                ]\n            }\n        },\n        \"/chat.scheduleMessage\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Schedules a message to be sent to a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/chat.scheduleMessage\"\n                },\n                \"operationId\": \"chat_scheduleMessage\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Provide another message's `ts` value to make this message a reply. Avoid using a reply's `ts` value; use its parent instead.\",\n                        \"in\": \"formData\",\n                        \"name\": \"thread_ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"A JSON-based array of structured blocks, presented as a URL-encoded string.\",\n                        \"in\": \"formData\",\n                        \"name\": \"blocks\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A JSON-based array of structured attachments, presented as a URL-encoded string.\",\n                        \"in\": \"formData\",\n                        \"name\": \"attachments\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Pass true to enable unfurling of primarily text-based content.\",\n                        \"in\": \"formData\",\n                        \"name\": \"unfurl_links\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Text of the message to send. See below for an explanation of [formatting](#formatting). This field is usually required, unless you're providing only `attachments` instead. Provide no more than 40,000 characters or [risk truncation](/changelog/2018-04-truncating-really-long-messages).\",\n                        \"in\": \"formData\",\n                        \"name\": \"text\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Find and link channel names and usernames.\",\n                        \"in\": \"formData\",\n                        \"name\": \"link_names\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Pass false to disable unfurling of media content.\",\n                        \"in\": \"formData\",\n                        \"name\": \"unfurl_media\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Change how messages are treated. Defaults to `none`. See [below](#formatting).\",\n                        \"in\": \"formData\",\n                        \"name\": \"parse\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `chat:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Pass true to post the message as the authed user, instead of as a bot. Defaults to false. See [authorship](#authorship) below.\",\n                        \"in\": \"formData\",\n                        \"name\": \"as_user\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Unix EPOCH timestamp of time in future to send the message.\",\n                        \"in\": \"formData\",\n                        \"name\": \"post_at\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel, private group, or DM channel to send message to. Can be an encoded ID, or a name. See [below](#channels) for more details.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Used in conjunction with `thread_ts` and indicates whether reply should be made visible to everyone in the channel or conversation. Defaults to `false`.\",\n                        \"in\": \"formData\",\n                        \"name\": \"reply_broadcast\",\n                        \"type\": \"boolean\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": \"C1H9RESGL\",\n                                \"message\": {\n                                    \"attachments\": [\n                                        {\n                                            \"fallback\": \"This is an attachment's fallback\",\n                                            \"id\": 1,\n                                            \"text\": \"This is an attachment\"\n                                        }\n                                    ],\n                                    \"bot_id\": \"B19LU7CSY\",\n                                    \"subtype\": \"bot_message\",\n                                    \"text\": \"Here's a message for you in the future\",\n                                    \"type\": \"delayed_message\",\n                                    \"username\": \"ecto1\"\n                                },\n                                \"ok\": true,\n                                \"post_at\": \"1562180400\",\n                                \"scheduled_message_id\": \"Q1298393284\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response of chat.scheduleMessage method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/defs_channel\"\n                                },\n                                \"message\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"bot_id\": {\n                                            \"$ref\": \"#/definitions/defs_bot_id\"\n                                        },\n                                        \"text\": {\n                                            \"type\": \"string\"\n                                        },\n                                        \"type\": {\n                                            \"type\": \"string\"\n                                        },\n                                        \"user\": {\n                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                        },\n                                        \"username\": {\n                                            \"type\": \"string\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"type\",\n                                        \"text\",\n                                        \"bot_id\",\n                                        \"user\"\n                                    ],\n                                    \"type\": \"object\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"post_at\": {\n                                    \"pattern\": \"^\\\\d{10}$\",\n                                    \"type\": \"integer\"\n                                },\n                                \"scheduled_message_id\": {\n                                    \"pattern\": \"^[Q][A-Z0-9]{8}$\",\n                                    \"title\": \"Scheduled Message ID\",\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\",\n                                \"post_at\",\n                                \"scheduled_message_id\",\n                                \"message\"\n                            ],\n                            \"title\": \"chat.scheduleMessage success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response if the `post_at` is invalid (ex. in the past or too far into the future)\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"time_in_past\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response chat.scheduleMessage method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"invalid_time\",\n                                        \"time_in_past\",\n                                        \"time_too_far\",\n                                        \"channel_not_found\",\n                                        \"not_in_channel\",\n                                        \"is_archived\",\n                                        \"msg_too_long\",\n                                        \"no_text\",\n                                        \"restricted_action\",\n                                        \"restricted_action_read_only_channel\",\n                                        \"restricted_action_thread_only_channel\",\n                                        \"restricted_action_non_threadable_channel\",\n                                        \"too_many_attachments\",\n                                        \"rate_limited\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"ekm_access_denied\",\n                                        \"missing_scope\",\n                                        \"invalid_arguments\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"chat.scheduleMessage error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"chat:write:user\",\n                            \"chat:write:bot\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"chat\"\n                ]\n            }\n        },\n        \"/chat.scheduledMessages.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Returns a list of scheduled messages.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/chat.scheduledMessages.list\"\n                },\n                \"operationId\": \"chat_scheduledMessages_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"For pagination purposes, this is the `cursor` value returned from a previous call to `chat.scheduledmessages.list` indicating where you want to start this call from.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `none`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Maximum number of original entries to return.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"A UNIX timestamp of the oldest value in the time range\",\n                        \"in\": \"query\",\n                        \"name\": \"oldest\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"The channel of the scheduled messages\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A UNIX timestamp of the latest value in the time range\",\n                        \"in\": \"query\",\n                        \"name\": \"latest\",\n                        \"type\": \"number\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"\"\n                                },\n                                \"scheduled_messages\": [\n                                    {\n                                        \"channel_id\": \"C1H9RESGL\",\n                                        \"date_created\": 1551891734,\n                                        \"id\": 1298393284,\n                                        \"post_at\": 1551991428\n                                    }\n                                ]\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from chat.scheduledMessages.list method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"response_metadata\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"next_cursor\": {\n                                            \"type\": \"string\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"next_cursor\"\n                                    ],\n                                    \"type\": \"object\"\n                                },\n                                \"scheduled_messages\": {\n                                    \"items\": {\n                                        \"additionalProperties\": false,\n                                        \"properties\": {\n                                            \"channel_id\": {\n                                                \"$ref\": \"#/definitions/defs_channel_id\"\n                                            },\n                                            \"date_created\": {\n                                                \"pattern\": \"^\\\\d{10}$\",\n                                                \"type\": \"integer\"\n                                            },\n                                            \"id\": {\n                                                \"pattern\": \"^[Q][A-Z0-9]{8}$\",\n                                                \"type\": \"string\"\n                                            },\n                                            \"post_at\": {\n                                                \"pattern\": \"^\\\\d{10}$\",\n                                                \"type\": \"integer\"\n                                            }\n                                        },\n                                        \"required\": [\n                                            \"id\",\n                                            \"channel_id\",\n                                            \"post_at\",\n                                            \"date_created\"\n                                        ],\n                                        \"type\": \"object\"\n                                    },\n                                    \"type\": \"array\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"scheduled_messages\",\n                                \"response_metadata\"\n                            ],\n                            \"title\": \"chat.scheduledMessages.list schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response if the channel passed is invalid\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_channel\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from chat.scheduledMessages.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"invalid_channel\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"ekm_access_denied\",\n                                        \"missing_scope\",\n                                        \"invalid_arguments\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"chat.scheduledMessages.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"chat.scheduledMessages\",\n                    \"chat\"\n                ]\n            }\n        },\n        \"/chat.unfurl\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Provide custom unfurl behavior for user-posted URLs\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/chat.unfurl\"\n                },\n                \"operationId\": \"chat_unfurl\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Provide a simply-formatted string to send as an ephemeral message to the user as invitation to authenticate further and enable full unfurling behavior\",\n                        \"in\": \"formData\",\n                        \"name\": \"user_auth_message\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Set to `true` or `1` to indicate the user must install your Slack app to trigger unfurls for this domain\",\n                        \"in\": \"formData\",\n                        \"name\": \"user_auth_required\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"URL-encoded JSON map with keys set to URLs featured in the the message, pointing to their unfurl blocks or message attachments.\",\n                        \"in\": \"formData\",\n                        \"name\": \"unfurls\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the message to add unfurl behavior to.\",\n                        \"in\": \"formData\",\n                        \"name\": \"ts\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Send users to this custom URL where they will complete authentication in your app to fully trigger unfurling. Value should be properly URL-encoded.\",\n                        \"in\": \"formData\",\n                        \"name\": \"user_auth_url\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `links:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel ID of the message\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical, minimal success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from chat.unfurl method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"chat.unfurl success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"cannot_unfurl_url\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from chat.unfurl method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"cannot_unfurl_url\",\n                                        \"cannot_find_service\",\n                                        \"missing_unfurls\",\n                                        \"cannot_prompt\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"chat.unfurl error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"links:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"chat\"\n                ]\n            }\n        },\n        \"/chat.update\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Updates a message.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/chat.update\"\n                },\n                \"operationId\": \"chat_update\",\n                \"parameters\": [\n                    {\n                        \"description\": \"A JSON-based array of structured blocks, presented as a URL-encoded string.\",\n                        \"in\": \"formData\",\n                        \"name\": \"blocks\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A JSON-based array of structured attachments, presented as a URL-encoded string. This field is required when not presenting `text`.\",\n                        \"in\": \"formData\",\n                        \"name\": \"attachments\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"New text for the message, using the [default formatting rules](/docs/formatting). It's not required when presenting `attachments`.\",\n                        \"in\": \"formData\",\n                        \"name\": \"text\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the message to be updated.\",\n                        \"in\": \"formData\",\n                        \"name\": \"ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Change how messages are treated. Defaults to `client`, unlike `chat.postMessage`. See [below](#formatting).\",\n                        \"in\": \"formData\",\n                        \"name\": \"parse\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Pass true to update the message as the authed user. [Bot users](/bot-users) in this context are considered authed users.\",\n                        \"in\": \"formData\",\n                        \"name\": \"as_user\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `chat:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Find and link channel names and usernames. Defaults to `none`. See [below](#formatting).\",\n                        \"in\": \"formData\",\n                        \"name\": \"link_names\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Channel containing the message to be updated.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": \"C024BE91L\",\n                                \"ok\": true,\n                                \"text\": \"Updated text you carefully authored\",\n                                \"ts\": \"1401383885.000061\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response of chat.update method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/defs_channel\"\n                                },\n                                \"message\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"team\": {\n                                            \"$ref\": \"#/definitions/defs_team\"\n                                        },\n                                        \"text\": {\n                                            \"type\": \"string\"\n                                        },\n                                        \"type\": {\n                                            \"type\": \"string\"\n                                        },\n                                        \"user\": {\n                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"type\",\n                                        \"user\",\n                                        \"text\"\n                                    ],\n                                    \"title\": \"Message object\",\n                                    \"type\": \"object\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"text\": {\n                                    \"title\": \"Updated message text\",\n                                    \"type\": \"string\"\n                                },\n                                \"ts\": {\n                                    \"$ref\": \"#/definitions/defs_ts\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\",\n                                \"ts\",\n                                \"text\",\n                                \"message\"\n                            ],\n                            \"title\": \"chat.update success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"cant_update_message\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response chat.update method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"message_not_found\",\n                                        \"cant_update_message\",\n                                        \"channel_not_found\",\n                                        \"edit_window_closed\",\n                                        \"msg_too_long\",\n                                        \"too_many_attachments\",\n                                        \"rate_limited\",\n                                        \"no_text\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"request_timeout\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"chat.update error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"chat:write:user\",\n                            \"chat:write:bot\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"chat\"\n                ]\n            }\n        },\n        \"/conversations.archive\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Archives a conversation.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.archive\"\n                },\n                \"operationId\": \"conversations_archive\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"ID of conversation to archive\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response conversations.archive method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"conversations.archive success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.archive method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"missing_scope\",\n                                        \"not_supported\",\n                                        \"channel_not_found\",\n                                        \"already_archived\",\n                                        \"cant_archive_general\",\n                                        \"restricted_action\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"team_added_to_org\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.archive error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\",\n                            \"groups:write\",\n                            \"im:write\",\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.close\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Closes a direct message or multi-person direct message.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.close\"\n                },\n                \"operationId\": \"conversations_close\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Conversation to close.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response conversations.close method\",\n                            \"properties\": {\n                                \"already_closed\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"no_op\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"conversations.close success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.close method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"channel_not_found\",\n                                        \"user_does_not_own_channel\",\n                                        \"missing_scope\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.close error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\",\n                            \"groups:write\",\n                            \"im:write\",\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.create\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Initiates a public or private channel-based conversation\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.create\"\n                },\n                \"operationId\": \"conversations_create\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"**Required** for workspace apps. A list of between 1 and 30 human users that will be added to the newly-created conversation. This argument has no effect when used by classic Slack apps.\",\n                        \"in\": \"formData\",\n                        \"name\": \"user_ids\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Name of the public or private channel to create\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Create a private channel instead of a public one\",\n                        \"in\": \"formData\",\n                        \"name\": \"is_private\",\n                        \"type\": \"boolean\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"If successful, the command returns a rather stark [conversation object](/types/conversation)\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"created\": 1504554479,\n                                    \"creator\": \"U0123456\",\n                                    \"id\": \"C0EAQDV4Z\",\n                                    \"is_archived\": false,\n                                    \"is_channel\": true,\n                                    \"is_ext_shared\": false,\n                                    \"is_general\": false,\n                                    \"is_group\": false,\n                                    \"is_im\": false,\n                                    \"is_member\": true,\n                                    \"is_mpim\": false,\n                                    \"is_org_shared\": false,\n                                    \"is_pending_ext_shared\": false,\n                                    \"is_private\": false,\n                                    \"is_shared\": false,\n                                    \"last_read\": \"0000000000.000000\",\n                                    \"latest\": null,\n                                    \"name\": \"endeavor\",\n                                    \"name_normalized\": \"endeavor\",\n                                    \"pending_shared\": [],\n                                    \"previous_names\": [],\n                                    \"priority\": 0,\n                                    \"purpose\": {\n                                        \"creator\": \"\",\n                                        \"last_set\": 0,\n                                        \"value\": \"\"\n                                    },\n                                    \"topic\": {\n                                        \"creator\": \"\",\n                                        \"last_set\": 0,\n                                        \"value\": \"\"\n                                    },\n                                    \"unlinked\": 0,\n                                    \"unread_count\": 0,\n                                    \"unread_count_display\": 0\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response conversations.create method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_conversation\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"conversations.create success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response when name already in use\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"name_taken\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.create method\",\n                            \"properties\": {\n                                \"detail\": {\n                                    \"type\": \"string\"\n                                },\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"missing_scope\",\n                                        \"name_taken\",\n                                        \"restricted_action\",\n                                        \"no_channel\",\n                                        \"invalid_name_required\",\n                                        \"invalid_name_punctuation\",\n                                        \"invalid_name_maxlength\",\n                                        \"invalid_name_specials\",\n                                        \"invalid_name\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.create error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\",\n                            \"groups:write\",\n                            \"im:write\",\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.history\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Fetches a conversation's history of messages and events.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.history\"\n                },\n                \"operationId\": \"conversations_history\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Include messages with latest or oldest timestamp in results only when either timestamp is specified.\",\n                        \"in\": \"query\",\n                        \"name\": \"inclusive\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more detail.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:history`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Start of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"oldest\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Conversation ID to fetch history for.\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"End of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"latest\",\n                        \"type\": \"number\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response containing a channel's messages\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"has_more\": true,\n                                \"messages\": [\n                                    {\n                                        \"text\": \"I find you punny and would like to smell your nose letter\",\n                                        \"ts\": \"1512085950.000216\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U012AB3CDE\"\n                                    },\n                                    {\n                                        \"text\": \"What, you want to smell my shoes better?\",\n                                        \"ts\": \"1512104434.000490\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U061F7AUR\"\n                                    }\n                                ],\n                                \"ok\": true,\n                                \"pin_count\": 0,\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"bmV4dF90czoxNTEyMDg1ODYxMDAwNTQz\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from conversations.history method\",\n                            \"properties\": {\n                                \"has_more\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"messages\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_message\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"pin_count\": {\n                                    \"type\": \"integer\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"messages\",\n                                \"has_more\",\n                                \"pin_count\"\n                            ],\n                            \"title\": \"conversations.history success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.history method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"missing_scope\",\n                                        \"channel_not_found\",\n                                        \"invalid_ts_latest\",\n                                        \"invalid_ts_oldest\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.history error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:history\",\n                            \"groups:history\",\n                            \"im:history\",\n                            \"mpim:history\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.info\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieve information about a conversation.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.info\"\n                },\n                \"operationId\": \"conversations_info\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Set to `true` to include the member count for the specified conversation. Defaults to `false`\",\n                        \"in\": \"query\",\n                        \"name\": \"include_num_members\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Conversation ID to learn more about\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Set this to `true` to receive the locale for this conversation. Defaults to `false`\",\n                        \"in\": \"query\",\n                        \"name\": \"include_locale\",\n                        \"type\": \"boolean\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response for a public channel. (Also, a response from a private channel and a multi-party IM is very similar to this example.)\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"created\": 1449252889,\n                                    \"creator\": \"W012A3BCD\",\n                                    \"id\": \"C012AB3CD\",\n                                    \"is_archived\": false,\n                                    \"is_channel\": true,\n                                    \"is_ext_shared\": false,\n                                    \"is_general\": true,\n                                    \"is_group\": false,\n                                    \"is_im\": false,\n                                    \"is_member\": true,\n                                    \"is_mpim\": false,\n                                    \"is_org_shared\": false,\n                                    \"is_pending_ext_shared\": false,\n                                    \"is_private\": false,\n                                    \"is_read_only\": false,\n                                    \"is_shared\": false,\n                                    \"last_read\": \"1502126650.228446\",\n                                    \"locale\": \"en-US\",\n                                    \"name\": \"general\",\n                                    \"name_normalized\": \"general\",\n                                    \"parent_conversation\": null,\n                                    \"pending_shared\": [],\n                                    \"previous_names\": [\n                                        \"specifics\",\n                                        \"abstractions\",\n                                        \"etc\"\n                                    ],\n                                    \"purpose\": {\n                                        \"creator\": \"W012A3BCD\",\n                                        \"last_set\": 1449709364,\n                                        \"value\": \"This part of the workspace is for fun. Make fun here.\"\n                                    },\n                                    \"topic\": {\n                                        \"creator\": \"W012A3BCD\",\n                                        \"last_set\": 1449709364,\n                                        \"value\": \"For public discussion of generalities\"\n                                    },\n                                    \"unlinked\": 0\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response conversations.info\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_conversation\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"conversations.info success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response when a channel cannot be found\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.info method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"missing_scope\",\n                                        \"channel_not_found\",\n                                        \"team_added_to_org\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.info error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:read\",\n                            \"groups:read\",\n                            \"im:read\",\n                            \"mpim:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.invite\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Invites users to a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.invite\"\n                },\n                \"operationId\": \"conversations_invite\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A comma separated list of user IDs. Up to 30 users may be listed.\",\n                        \"in\": \"formData\",\n                        \"name\": \"users\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The ID of the public or private channel to invite user(s) to.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response when an invitation is extended\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"created\": 1449252889,\n                                    \"creator\": \"W012A3BCD\",\n                                    \"id\": \"C012AB3CD\",\n                                    \"is_archived\": false,\n                                    \"is_channel\": true,\n                                    \"is_ext_shared\": false,\n                                    \"is_general\": true,\n                                    \"is_group\": false,\n                                    \"is_im\": false,\n                                    \"is_member\": true,\n                                    \"is_mpim\": false,\n                                    \"is_org_shared\": false,\n                                    \"is_pending_ext_shared\": false,\n                                    \"is_private\": false,\n                                    \"is_read_only\": false,\n                                    \"is_shared\": false,\n                                    \"last_read\": \"1502126650.228446\",\n                                    \"locale\": \"en-US\",\n                                    \"name\": \"general\",\n                                    \"name_normalized\": \"general\",\n                                    \"num_members\": 23,\n                                    \"pending_shared\": [],\n                                    \"previous_names\": [\n                                        \"specifics\",\n                                        \"abstractions\",\n                                        \"etc\"\n                                    ],\n                                    \"purpose\": {\n                                        \"creator\": \"W012A3BCD\",\n                                        \"last_set\": 1449709364,\n                                        \"value\": \"This part of the workspace is for fun. Make fun here.\"\n                                    },\n                                    \"topic\": {\n                                        \"creator\": \"W012A3BCD\",\n                                        \"last_set\": 1449709364,\n                                        \"value\": \"For public discussion of generalities\"\n                                    },\n                                    \"unlinked\": 0\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from conversations.invite method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_conversation\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"conversations.invite error schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response when an invite is attempted on a conversation type that does not support it\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"method_not_supported_for_channel_type\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.invite method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"missing_scope\",\n                                        \"channel_not_found\",\n                                        \"user_not_found\",\n                                        \"no_user\",\n                                        \"cant_invite_self\",\n                                        \"not_in_channel\",\n                                        \"already_in_channel\",\n                                        \"is_archived\",\n                                        \"cant_invite\",\n                                        \"too_many_users\",\n                                        \"ura_max_channels\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"team_added_to_org\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"errors\": {\n                                    \"items\": {\n                                        \"additionalProperties\": false,\n                                        \"properties\": {\n                                            \"error\": {\n                                                \"enum\": [\n                                                    \"method_not_supported_for_channel_type\",\n                                                    \"missing_scope\",\n                                                    \"channel_not_found\",\n                                                    \"user_not_found\",\n                                                    \"no_user\",\n                                                    \"cant_invite_self\",\n                                                    \"not_in_channel\",\n                                                    \"already_in_channel\",\n                                                    \"is_archived\",\n                                                    \"cant_invite\",\n                                                    \"too_many_users\",\n                                                    \"ura_max_channels\",\n                                                    \"not_authed\",\n                                                    \"invalid_auth\",\n                                                    \"account_inactive\",\n                                                    \"user_is_bot\",\n                                                    \"user_is_restricted\",\n                                                    \"user_is_ultra_restricted\",\n                                                    \"invalid_arg_name\",\n                                                    \"invalid_array_arg\",\n                                                    \"invalid_charset\",\n                                                    \"invalid_form_data\",\n                                                    \"invalid_post_type\",\n                                                    \"missing_post_type\",\n                                                    \"invalid_json\",\n                                                    \"json_not_object\",\n                                                    \"request_timeout\",\n                                                    \"upgrade_required\",\n                                                    \"team_added_to_org\",\n                                                    \"missing_charset\",\n                                                    \"superfluous_charset\"\n                                                ],\n                                                \"type\": \"string\"\n                                            },\n                                            \"ok\": {\n                                                \"$ref\": \"#/definitions/defs_ok_false\"\n                                            },\n                                            \"user\": {\n                                                \"$ref\": \"#/definitions/defs_user_id\"\n                                            }\n                                        },\n                                        \"required\": [\n                                            \"ok\",\n                                            \"error\"\n                                        ],\n                                        \"type\": \"object\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"title\": \"errors is returned when an error associates an user\",\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"conversations.invite error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\",\n                            \"groups:write\",\n                            \"im:write\",\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.join\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Joins an existing conversation.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.join\"\n                },\n                \"operationId\": \"conversations_join\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `channels:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"ID of conversation to join\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"created\": 1449252889,\n                                    \"creator\": \"U061F7AUR\",\n                                    \"id\": \"C061EG9SL\",\n                                    \"is_archived\": false,\n                                    \"is_channel\": true,\n                                    \"is_ext_shared\": false,\n                                    \"is_general\": true,\n                                    \"is_group\": false,\n                                    \"is_im\": false,\n                                    \"is_member\": true,\n                                    \"is_mpim\": false,\n                                    \"is_org_shared\": false,\n                                    \"is_pending_ext_shared\": false,\n                                    \"is_private\": false,\n                                    \"is_shared\": false,\n                                    \"name\": \"general\",\n                                    \"name_normalized\": \"general\",\n                                    \"pending_shared\": [],\n                                    \"previous_names\": [],\n                                    \"purpose\": {\n                                        \"creator\": \"\",\n                                        \"last_set\": 0,\n                                        \"value\": \"For widget discussion\"\n                                    },\n                                    \"topic\": {\n                                        \"creator\": \"\",\n                                        \"last_set\": 0,\n                                        \"value\": \"Which widget do you worry about?\"\n                                    },\n                                    \"unlinked\": 0\n                                },\n                                \"ok\": true,\n                                \"response_metadata\": {\n                                    \"warnings\": [\n                                        \"already_in_channel\"\n                                    ]\n                                },\n                                \"warning\": \"already_in_channel\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from conversations.join method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_conversation\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"response_metadata\": {\n                                    \"properties\": {\n                                        \"warnings\": {\n                                            \"items\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"minItems\": 1,\n                                            \"type\": \"array\",\n                                            \"uniqueItems\": true\n                                        }\n                                    },\n                                    \"title\": \"Response metadata\",\n                                    \"type\": \"object\"\n                                },\n                                \"warning\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"conversations.join success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response if the conversation is archived and cannot be joined\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"is_archived\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.join method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"missing_scope\",\n                                        \"channel_not_found\",\n                                        \"is_archived\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"team_added_to_org\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.join error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.kick\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Removes a user from a conversation.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.kick\"\n                },\n                \"operationId\": \"conversations_kick\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"User ID to be removed.\",\n                        \"in\": \"formData\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"ID of conversation to remove user from.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response conversations.kick method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"conversations.kick success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response when you attempt to kick yourself from a channel\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"cant_kick_self\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response conversations.kick method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"missing_scope\",\n                                        \"channel_not_found\",\n                                        \"user_not_found\",\n                                        \"cant_kick_self\",\n                                        \"not_in_channel\",\n                                        \"cant_kick_from_general\",\n                                        \"restricted_action\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.kick error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\",\n                            \"groups:write\",\n                            \"im:write\",\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.leave\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Leaves a conversation.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.leave\"\n                },\n                \"operationId\": \"conversations_leave\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Conversation to leave\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from conversations.leave method\",\n                            \"properties\": {\n                                \"not_in_channel\": {\n                                    \"enum\": [\n                                        true\n                                    ],\n                                    \"type\": \"boolean\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"conversations.leave success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response when attempting to leave a workspace's \\\"general\\\" channel\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"cant_leave_general\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.leave method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"last_member\",\n                                        \"missing_scope\",\n                                        \"channel_not_found\",\n                                        \"is_archived\",\n                                        \"cant_leave_general\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"team_added_to_org\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.leave error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\",\n                            \"groups:write\",\n                            \"im:write\",\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists all channels in a Slack team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.list\"\n                },\n                \"operationId\": \"conversations_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more detail.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached. Must be an integer no larger than 1000.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Set to `true` to exclude archived channels from the list\",\n                        \"in\": \"query\",\n                        \"name\": \"exclude_archived\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Mix and match channel types by providing a comma-separated list of any combination of `public_channel`, `private_channel`, `mpim`, `im`\",\n                        \"in\": \"query\",\n                        \"name\": \"types\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response with only public channels\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channels\": [\n                                    {\n                                        \"created\": 1449252889,\n                                        \"creator\": \"U012A3CDE\",\n                                        \"id\": \"C012AB3CD\",\n                                        \"is_archived\": false,\n                                        \"is_channel\": true,\n                                        \"is_ext_shared\": false,\n                                        \"is_general\": true,\n                                        \"is_group\": false,\n                                        \"is_im\": false,\n                                        \"is_member\": true,\n                                        \"is_mpim\": false,\n                                        \"is_org_shared\": false,\n                                        \"is_pending_ext_shared\": false,\n                                        \"is_private\": false,\n                                        \"is_shared\": false,\n                                        \"name\": \"general\",\n                                        \"name_normalized\": \"general\",\n                                        \"num_members\": 4,\n                                        \"pending_shared\": [],\n                                        \"previous_names\": [],\n                                        \"purpose\": {\n                                            \"creator\": \"\",\n                                            \"last_set\": 0,\n                                            \"value\": \"This channel is for team-wide communication and announcements. All team members are in this channel.\"\n                                        },\n                                        \"topic\": {\n                                            \"creator\": \"\",\n                                            \"last_set\": 0,\n                                            \"value\": \"Company-wide announcements and work-based matters\"\n                                        },\n                                        \"unlinked\": 0\n                                    },\n                                    {\n                                        \"created\": 1449252889,\n                                        \"creator\": \"U061F7AUR\",\n                                        \"id\": \"C061EG9T2\",\n                                        \"is_archived\": false,\n                                        \"is_channel\": true,\n                                        \"is_ext_shared\": false,\n                                        \"is_general\": false,\n                                        \"is_group\": false,\n                                        \"is_im\": false,\n                                        \"is_member\": true,\n                                        \"is_mpim\": false,\n                                        \"is_org_shared\": false,\n                                        \"is_pending_ext_shared\": false,\n                                        \"is_private\": false,\n                                        \"is_shared\": false,\n                                        \"name\": \"random\",\n                                        \"name_normalized\": \"random\",\n                                        \"num_members\": 4,\n                                        \"pending_shared\": [],\n                                        \"previous_names\": [],\n                                        \"purpose\": {\n                                            \"creator\": \"\",\n                                            \"last_set\": 0,\n                                            \"value\": \"A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you'd prefer to keep out of more focused work-related channels.\"\n                                        },\n                                        \"topic\": {\n                                            \"creator\": \"\",\n                                            \"last_set\": 0,\n                                            \"value\": \"Non-work banter and water cooler conversation\"\n                                        },\n                                        \"unlinked\": 0\n                                    }\n                                ],\n                                \"ok\": true,\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"dGVhbTpDMDYxRkE1UEI=\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from conversations.list method\",\n                            \"properties\": {\n                                \"channels\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_conversation\"\n                                    },\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"response_metadata\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"next_cursor\": {\n                                            \"type\": \"string\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"next_cursor\"\n                                    ],\n                                    \"type\": \"object\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channels\"\n                            ],\n                            \"title\": \"conversations.list success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"missing_scope\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:read\",\n                            \"groups:read\",\n                            \"im:read\",\n                            \"mpim:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.members\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieve members of a conversation.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.members\"\n                },\n                \"operationId\": \"conversations_members\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more detail.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"ID of the conversation to retrieve members for\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical paginated success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"members\": [\n                                    \"U023BECGF\",\n                                    \"U061F7AUR\",\n                                    \"W012A3CDE\"\n                                ],\n                                \"ok\": true,\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"e3VzZXJfaWQ6IFcxMjM0NTY3fQ==\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response conversations.members method\",\n                            \"properties\": {\n                                \"members\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"response_metadata\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"next_cursor\": {\n                                            \"type\": \"string\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"next_cursor\"\n                                    ],\n                                    \"type\": \"object\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"members\",\n                                \"response_metadata\"\n                            ],\n                            \"title\": \"conversations.members success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response when an invalid cursor is provided\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_cursor\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response conversations.members method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"invalid_limit\",\n                                        \"invalid_cursor\",\n                                        \"fetch_members_failed\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.members error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:read\",\n                            \"groups:read\",\n                            \"im:read\",\n                            \"mpim:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.open\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Opens or resumes a direct message or multi-person direct message.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.open\"\n                },\n                \"operationId\": \"conversations_open\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Boolean, indicates you want the full IM channel definition in the response.\",\n                        \"in\": \"formData\",\n                        \"name\": \"return_im\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Comma separated lists of users. If only one user is included, this creates a 1:1 DM.  The ordering of the users is preserved whenever a multi-person direct message is returned. Supply a `channel` when not supplying `users`.\",\n                        \"in\": \"formData\",\n                        \"name\": \"users\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Resume a conversation by supplying an `im` or `mpim`'s ID. Or provide the `users` field instead.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"id\": \"D069C7QFK\"\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from conversations.open method when opening channels, ims, mpims\",\n                            \"properties\": {\n                                \"already_open\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_conversation\"\n                                },\n                                \"no_op\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"conversations.open success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.open method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"user_not_found\",\n                                        \"user_not_visible\",\n                                        \"user_disabled\",\n                                        \"users_list_not_supplied\",\n                                        \"not_enough_users\",\n                                        \"too_many_users\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"channel_not_found\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.open error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\",\n                            \"groups:write\",\n                            \"im:write\",\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.rename\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Renames a conversation.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.rename\"\n                },\n                \"operationId\": \"conversations_rename\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"New name for conversation.\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"ID of conversation to rename\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"created\": 1449252889,\n                                    \"creator\": \"W012A3BCD\",\n                                    \"id\": \"C012AB3CD\",\n                                    \"is_archived\": false,\n                                    \"is_channel\": true,\n                                    \"is_ext_shared\": false,\n                                    \"is_general\": true,\n                                    \"is_group\": false,\n                                    \"is_im\": false,\n                                    \"is_member\": true,\n                                    \"is_mpim\": false,\n                                    \"is_org_shared\": false,\n                                    \"is_pending_ext_shared\": false,\n                                    \"is_private\": false,\n                                    \"is_read_only\": false,\n                                    \"is_shared\": false,\n                                    \"last_read\": \"1502126650.228446\",\n                                    \"locale\": \"en-US\",\n                                    \"name\": \"general\",\n                                    \"name_normalized\": \"general\",\n                                    \"num_members\": 23,\n                                    \"pending_shared\": [],\n                                    \"previous_names\": [\n                                        \"specifics\",\n                                        \"abstractions\",\n                                        \"etc\"\n                                    ],\n                                    \"purpose\": {\n                                        \"creator\": \"W012A3BCD\",\n                                        \"last_set\": 1449709364,\n                                        \"value\": \"This part of the workspace is for fun. Make fun here.\"\n                                    },\n                                    \"topic\": {\n                                        \"creator\": \"W012A3BCD\",\n                                        \"last_set\": 1449709364,\n                                        \"value\": \"For public discussion of generalities\"\n                                    },\n                                    \"unlinked\": 0\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from conversations.rename method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_conversation\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"conversations.rename success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response when the calling user is not a member of the conversation\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"not_in_channel\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.rename method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"user_is_restricted\",\n                                        \"method_not_supported_for_channel_type\",\n                                        \"missing_scope\",\n                                        \"channel_not_found\",\n                                        \"not_in_channel\",\n                                        \"not_authorized\",\n                                        \"invalid_name\",\n                                        \"name_taken\",\n                                        \"invalid_name_required\",\n                                        \"invalid_name_punctuation\",\n                                        \"invalid_name_maxlength\",\n                                        \"invalid_name_specials\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.rename error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\",\n                            \"groups:write\",\n                            \"im:write\",\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.replies\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieve a thread of messages posted to a conversation\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.replies\"\n                },\n                \"operationId\": \"conversations_replies\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Include messages with latest or oldest timestamp in results only when either timestamp is specified.\",\n                        \"in\": \"query\",\n                        \"name\": \"inclusive\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Unique identifier of a thread's parent message.\",\n                        \"in\": \"query\",\n                        \"name\": \"ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more detail.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:history`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Start of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"oldest\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Conversation ID to fetch thread from.\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"End of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"latest\",\n                        \"type\": \"number\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"has_more\": true,\n                                \"messages\": [\n                                    {\n                                        \"last_read\": \"1484678597.521003\",\n                                        \"replies\": [\n                                            {\n                                                \"ts\": \"1483037603.017503\",\n                                                \"user\": \"U061F7AUR\"\n                                            },\n                                            {\n                                                \"ts\": \"1483051909.018632\",\n                                                \"user\": \"U061F7AUR\"\n                                            },\n                                            {\n                                                \"ts\": \"1483125339.020269\",\n                                                \"user\": \"U061F7AUR\"\n                                            }\n                                        ],\n                                        \"reply_count\": 3,\n                                        \"subscribed\": true,\n                                        \"text\": \"island\",\n                                        \"thread_ts\": \"1482960137.003543\",\n                                        \"ts\": \"1482960137.003543\",\n                                        \"type\": \"message\",\n                                        \"unread_count\": 0,\n                                        \"user\": \"U061F7AUR\"\n                                    },\n                                    {\n                                        \"parent_user_id\": \"U061F7AUR\",\n                                        \"text\": \"one island\",\n                                        \"thread_ts\": \"1482960137.003543\",\n                                        \"ts\": \"1483037603.017503\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U061F7AUR\"\n                                    },\n                                    {\n                                        \"parent_user_id\": \"U061F7AUR\",\n                                        \"text\": \"two island\",\n                                        \"thread_ts\": \"1482960137.003543\",\n                                        \"ts\": \"1483051909.018632\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U061F7AUR\"\n                                    },\n                                    {\n                                        \"parent_user_id\": \"U061F7AUR\",\n                                        \"text\": \"three for the land\",\n                                        \"thread_ts\": \"1482960137.003543\",\n                                        \"ts\": \"1483125339.020269\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U061F7AUR\"\n                                    }\n                                ],\n                                \"ok\": true,\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"bmV4dF90czoxNDg0Njc4MjkwNTE3MDkx\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from conversations.replies method\",\n                            \"properties\": {\n                                \"has_more\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"messages\": {\n                                    \"items\": {\n                                        \"items\": [\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"last_read\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"latest_reply\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"replies\": {\n                                                        \"items\": {\n                                                            \"additionalProperties\": false,\n                                                            \"properties\": {\n                                                                \"ts\": {\n                                                                    \"$ref\": \"#/definitions/defs_ts\"\n                                                                },\n                                                                \"user\": {\n                                                                    \"$ref\": \"#/definitions/defs_user_id\"\n                                                                }\n                                                            },\n                                                            \"required\": [\n                                                                \"user\",\n                                                                \"ts\"\n                                                            ],\n                                                            \"type\": \"object\"\n                                                        },\n                                                        \"type\": \"array\"\n                                                    },\n                                                    \"reply_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"reply_users\": {\n                                                        \"items\": {\n                                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                                        },\n                                                        \"type\": \"array\",\n                                                        \"uniqueItems\": true\n                                                    },\n                                                    \"reply_users_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"source_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"subscribed\": {\n                                                        \"type\": \"boolean\"\n                                                    },\n                                                    \"team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"text\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"thread_ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"type\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"unread_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"user\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"user_profile\": {\n                                                        \"$ref\": \"#/definitions/objs_user_profile_short\"\n                                                    },\n                                                    \"user_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"user\",\n                                                    \"text\",\n                                                    \"thread_ts\",\n                                                    \"reply_count\",\n                                                    \"replies\",\n                                                    \"subscribed\",\n                                                    \"ts\"\n                                                ],\n                                                \"type\": \"object\"\n                                            },\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"is_starred\": {\n                                                        \"type\": \"boolean\"\n                                                    },\n                                                    \"parent_user_id\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"source_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"text\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"thread_ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"type\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"user\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"user_profile\": {\n                                                        \"$ref\": \"#/definitions/objs_user_profile_short\"\n                                                    },\n                                                    \"user_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"user\",\n                                                    \"text\",\n                                                    \"thread_ts\",\n                                                    \"parent_user_id\",\n                                                    \"ts\"\n                                                ],\n                                                \"type\": \"object\"\n                                            }\n                                        ]\n                                    },\n                                    \"type\": \"array\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"messages\"\n                            ],\n                            \"title\": \"conversations.replies success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"thread_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.replies method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"missing_scope\",\n                                        \"channel_not_found\",\n                                        \"thread_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.replies error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:history\",\n                            \"groups:history\",\n                            \"im:history\",\n                            \"mpim:history\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.setPurpose\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sets the purpose for a conversation.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.setPurpose\"\n                },\n                \"operationId\": \"conversations_setPurpose\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A new, specialer purpose\",\n                        \"in\": \"formData\",\n                        \"name\": \"purpose\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Conversation to set the purpose of\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from conversations.setPurpose method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_conversation\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"conversations.setPurpose success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.setPurpose method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"missing_scope\",\n                                        \"channel_not_found\",\n                                        \"not_in_channel\",\n                                        \"is_archived\",\n                                        \"too_long\",\n                                        \"user_is_restricted\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.setPurpose error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\",\n                            \"groups:write\",\n                            \"im:write\",\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.setTopic\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sets the topic for a conversation.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.setTopic\"\n                },\n                \"operationId\": \"conversations_setTopic\",\n                \"parameters\": [\n                    {\n                        \"description\": \"The new topic string. Does not support formatting or linkification.\",\n                        \"in\": \"formData\",\n                        \"name\": \"topic\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Conversation to set the topic of\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from conversations.setTopic method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_conversation\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"conversations.setTopic success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.setTopic method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"missing_scope\",\n                                        \"channel_not_found\",\n                                        \"not_in_channel\",\n                                        \"is_archived\",\n                                        \"too_long\",\n                                        \"user_is_restricted\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.setTopic error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\",\n                            \"groups:write\",\n                            \"im:write\",\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/conversations.unarchive\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Reverses conversation archival.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/conversations.unarchive\"\n                },\n                \"operationId\": \"conversations_unarchive\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"ID of conversation to unarchive\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from conversations.unarchive method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"conversations.unarchive success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from conversations.unarchive method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"missing_scope\",\n                                        \"channel_not_found\",\n                                        \"not_archived\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"team_added_to_org\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"conversations.unarchive error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:write\",\n                            \"groups:write\",\n                            \"im:write\",\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"conversations\"\n                ]\n            }\n        },\n        \"/dialog.open\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Open a dialog with a user\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/dialog.open\"\n                },\n                \"operationId\": \"dialog_open\",\n                \"parameters\": [],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response is quite minimal.\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from dialog.open method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"dialog.open schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response, before getting to any possible validation errors.\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"missing_trigger\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from dialog.open method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"validation_errors\",\n                                        \"missing_trigger\",\n                                        \"missing_dialog\",\n                                        \"trigger_exchanged\",\n                                        \"trigger_expired\",\n                                        \"invalid_trigger\",\n                                        \"app_missing_action_url\",\n                                        \"cannot_create_dialog\",\n                                        \"failed_sending_dialog\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"dialog.open error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"dialog\"\n                ]\n            }\n        },\n        \"/dnd.endDnd\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Ends the current user's Do Not Disturb session immediately.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/dnd.endDnd\"\n                },\n                \"operationId\": \"dnd_endDnd\",\n                \"parameters\": [],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from dnd.endDnd method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"dnd.endDnd schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from dnd.endDnd method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"unknown_error\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"dnd.endDnd error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"dnd:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"dnd\"\n                ]\n            }\n        },\n        \"/dnd.endSnooze\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Ends the current user's snooze mode immediately.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/dnd.endSnooze\"\n                },\n                \"operationId\": \"dnd_endSnooze\",\n                \"parameters\": [],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from dnd.endSnooze method\",\n                            \"properties\": {\n                                \"dnd_enabled\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"next_dnd_end_ts\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"next_dnd_start_ts\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"snooze_enabled\": {\n                                    \"type\": \"boolean\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"dnd_enabled\",\n                                \"next_dnd_start_ts\",\n                                \"next_dnd_end_ts\",\n                                \"snooze_enabled\"\n                            ],\n                            \"title\": \"dnd.endSnooze schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from dnd.endSnooze method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"snooze_not_active\",\n                                        \"snooze_end_failed\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"dnd.endSnooze error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"dnd:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"dnd\"\n                ]\n            }\n        },\n        \"/dnd.info\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieves a user's current Do Not Disturb status.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/dnd.info\"\n                },\n                \"operationId\": \"dnd_info\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `dnd:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"User to fetch status for (defaults to current user)\",\n                        \"in\": \"query\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from dnd.info method\",\n                            \"properties\": {\n                                \"dnd_enabled\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"next_dnd_end_ts\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"next_dnd_start_ts\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"snooze_enabled\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"snooze_endtime\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"snooze_remaining\": {\n                                    \"type\": \"integer\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"dnd_enabled\",\n                                \"next_dnd_start_ts\",\n                                \"next_dnd_end_ts\",\n                                \"snooze_enabled\",\n                                \"snooze_endtime\",\n                                \"snooze_remaining\"\n                            ],\n                            \"title\": \"dnd.info schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from dnd.info method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"user_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"dnd.info error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"dnd:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"dnd\"\n                ]\n            }\n        },\n        \"/dnd.setSnooze\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Turns on Do Not Disturb mode for the current user, or changes its duration.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/dnd.setSnooze\"\n                },\n                \"operationId\": \"dnd_setSnooze\",\n                \"parameters\": [],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from dnd.setSnooze method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"snooze_enabled\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"snooze_endtime\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"snooze_remaining\": {\n                                    \"type\": \"integer\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"snooze_enabled\",\n                                \"snooze_endtime\",\n                                \"snooze_remaining\"\n                            ],\n                            \"title\": \"dnd.setSnooze schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from dnd.setSnooze method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"missing_duration\",\n                                        \"snooze_failed\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"too_long\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"dnd.setSnooze error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"dnd:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"dnd\"\n                ]\n            }\n        },\n        \"/dnd.teamInfo\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieves the Do Not Disturb status for up to 50 users on a team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/dnd.teamInfo\"\n                },\n                \"operationId\": \"dnd_teamInfo\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `dnd:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Comma-separated list of users to fetch Do Not Disturb status for\",\n                        \"in\": \"query\",\n                        \"name\": \"users\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"users\": {\n                                    \"U023BECGF\": {\n                                        \"dnd_enabled\": true,\n                                        \"next_dnd_end_ts\": 1450423800,\n                                        \"next_dnd_start_ts\": 1450387800\n                                    },\n                                    \"W058CJVAA\": {\n                                        \"dnd_enabled\": false,\n                                        \"next_dnd_end_ts\": 1,\n                                        \"next_dnd_start_ts\": 1\n                                    }\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from dnd.teamInfo method\",\n                            \"properties\": {\n                                \"cached\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"users\": {\n                                    \"additionalProperties\": false,\n                                    \"type\": \"object\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"users\"\n                            ],\n                            \"title\": \"dnd.teamInfo success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from dnd.teamInfo method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"dnd.teamInfo error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"dnd:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"dnd\"\n                ]\n            }\n        },\n        \"/emoji.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists custom emoji for a team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/emoji.list\"\n                },\n                \"operationId\": \"emoji_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `emoji:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default success template\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default error template\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"emoji:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"emoji\"\n                ]\n            }\n        },\n        \"/files.comments.delete\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Deletes an existing comment on a file.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/files.comments.delete\"\n                },\n                \"operationId\": \"files_comments_delete\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `files:write:user`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The comment to delete.\",\n                        \"in\": \"formData\",\n                        \"name\": \"id\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File to delete a comment from.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Standard success response is very simple\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response files.comments.delete method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"files.comments.delete schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Standard failure response when used with an invalid token\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"file_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response files.comments.delete method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"cant_delete\",\n                                        \"comment_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"files.comments.delete error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"files:write:user\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"files.comments\",\n                    \"files\"\n                ]\n            }\n        },\n        \"/files.delete\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Deletes a file.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/files.delete\"\n                },\n                \"operationId\": \"files_delete\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `files:write:user`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"ID of file to delete.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response files.delete method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"files.delete schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response files.delete method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"file_not_found\",\n                                        \"file_deleted\",\n                                        \"cant_delete_file\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"files.delete error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"files:write:user\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"files\"\n                ]\n            }\n        },\n        \"/files.info\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets information about a team file.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/files.info\"\n                },\n                \"operationId\": \"files_info\",\n                \"parameters\": [\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"count\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Parameter for pagination. File comments are paginated for a single file. Set `cursor` equal to the `next_cursor` attribute returned by the previous request's `response_metadata`. This parameter is optional, but pagination is mandatory: the default value simply fetches the first \\\"page\\\" of the collection of comments. See [pagination](/docs/pagination) for more details.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `files:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Specify a file by providing its ID.\",\n                        \"in\": \"query\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"page\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"comments\": [],\n                                \"file\": {\n                                    \"channels\": [\n                                        \"C0T8SE4AU\"\n                                    ],\n                                    \"comments_count\": 0,\n                                    \"created\": 1531763342,\n                                    \"deanimate_gif\": \"https://.../tedair_deanimate_gif.png\",\n                                    \"display_as_bot\": false,\n                                    \"editable\": false,\n                                    \"external_type\": \"\",\n                                    \"filetype\": \"gif\",\n                                    \"groups\": [],\n                                    \"has_rich_preview\": false,\n                                    \"id\": \"F0S43PZDF\",\n                                    \"image_exif_rotation\": 1,\n                                    \"ims\": [],\n                                    \"is_external\": false,\n                                    \"is_public\": true,\n                                    \"is_starred\": false,\n                                    \"mimetype\": \"image/gif\",\n                                    \"mode\": \"hosted\",\n                                    \"name\": \"tedair.gif\",\n                                    \"original_h\": 226,\n                                    \"original_w\": 176,\n                                    \"permalink\": \"https://https://.../tedair.gif\",\n                                    \"permalink_public\": \"https://.../...\",\n                                    \"pjpeg\": \"https://.../tedair_pjpeg.jpg\",\n                                    \"pretty_type\": \"GIF\",\n                                    \"public_url_shared\": false,\n                                    \"shares\": {\n                                        \"public\": {\n                                            \"C0T8SE4AU\": [\n                                                {\n                                                    \"channel_name\": \"file-under\",\n                                                    \"latest_reply\": \"1531763348.000001\",\n                                                    \"reply_count\": 1,\n                                                    \"reply_users\": [\n                                                        \"U061F7AUR\"\n                                                    ],\n                                                    \"reply_users_count\": 1,\n                                                    \"team_id\": \"T061EG9R6\",\n                                                    \"thread_ts\": \"1531763273.000015\",\n                                                    \"ts\": \"1531763348.000001\"\n                                                }\n                                            ]\n                                        }\n                                    },\n                                    \"size\": 137531,\n                                    \"thumb_160\": \"https://.../tedair_=_160.png\",\n                                    \"thumb_360\": \"https://.../tedair_360.png\",\n                                    \"thumb_360_gif\": \"https://.../tedair_360.gif\",\n                                    \"thumb_360_h\": 226,\n                                    \"thumb_360_w\": 176,\n                                    \"thumb_64\": \"https://.../tedair_64.png\",\n                                    \"thumb_80\": \"https://.../tedair_80.png\",\n                                    \"timestamp\": 1531763342,\n                                    \"title\": \"tedair.gif\",\n                                    \"url_private\": \"https://.../tedair.gif\",\n                                    \"url_private_download\": \"https://.../tedair.gif\",\n                                    \"user\": \"U061F7AUR\",\n                                    \"username\": \"\"\n                                },\n                                \"ok\": true,\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"dGVhbTpDMUg5UkVTR0w=\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from files.info method\",\n                            \"properties\": {\n                                \"comments\": {\n                                    \"$ref\": \"#/definitions/objs_comments\"\n                                },\n                                \"content_html\": {\n                                    \"type\": \"null\"\n                                },\n                                \"editor\": {\n                                    \"$ref\": \"#/definitions/defs_user_id\"\n                                },\n                                \"file\": {\n                                    \"$ref\": \"#/definitions/objs_file\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"paging\": {\n                                    \"$ref\": \"#/definitions/objs_paging\"\n                                },\n                                \"response_metadata\": {\n                                    \"$ref\": \"#/definitions/objs_response_metadata\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"file\",\n                                \"comments\"\n                            ],\n                            \"title\": \"files.info schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from files.info method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"file_not_found\",\n                                        \"file_deleted\",\n                                        \"timezone_count_failed\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"files.info error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"files:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"files\"\n                ]\n            }\n        },\n        \"/files.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists & filters team files.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/files.list\"\n                },\n                \"operationId\": \"files_list\",\n                \"parameters\": [\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"count\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Filter files appearing in a specific channel, indicated by its ID.\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Filter files created before this timestamp (inclusive).\",\n                        \"in\": \"query\",\n                        \"name\": \"ts_to\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Filter files created after this timestamp (inclusive).\",\n                        \"in\": \"query\",\n                        \"name\": \"ts_from\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `files:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Filter files created by a single user.\",\n                        \"in\": \"query\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"page\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Filter files by type ([see below](#file_types)). You can pass multiple values in the types argument, like `types=spaces,snippets`.The default value is `all`, which does not filter the list.\",\n                        \"in\": \"query\",\n                        \"name\": \"types\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"files\": [\n                                    {\n                                        \"channels\": [\n                                            \"C0T8SE4AU\"\n                                        ],\n                                        \"comments_count\": 0,\n                                        \"created\": 1531763254,\n                                        \"deanimate_gif\": \"https://.../billair_deanimate_gif.png\",\n                                        \"display_as_bot\": false,\n                                        \"editable\": false,\n                                        \"external_type\": \"\",\n                                        \"filetype\": \"gif\",\n                                        \"groups\": [],\n                                        \"id\": \"F0S43P1CZ\",\n                                        \"image_exif_rotation\": 1,\n                                        \"ims\": [],\n                                        \"is_external\": false,\n                                        \"is_public\": true,\n                                        \"mimetype\": \"image/gif\",\n                                        \"mode\": \"hosted\",\n                                        \"name\": \"billair.gif\",\n                                        \"original_h\": 226,\n                                        \"original_w\": 176,\n                                        \"permalink\": \"https://https://.../billair.gif\",\n                                        \"permalink_public\": \"https://.../...\",\n                                        \"pjpeg\": \"https://.../billair_pjpeg.jpg\",\n                                        \"pretty_type\": \"GIF\",\n                                        \"public_url_shared\": false,\n                                        \"size\": 144538,\n                                        \"thumb_160\": \"https://.../billair_=_160.png\",\n                                        \"thumb_360\": \"https://.../billair_360.png\",\n                                        \"thumb_360_gif\": \"https://.../billair_360.gif\",\n                                        \"thumb_360_h\": 226,\n                                        \"thumb_360_w\": 176,\n                                        \"thumb_64\": \"https://.../billair_64.png\",\n                                        \"thumb_80\": \"https://.../billair_80.png\",\n                                        \"timestamp\": 1531763254,\n                                        \"title\": \"billair.gif\",\n                                        \"url_private\": \"https://.../billair.gif\",\n                                        \"url_private_download\": \"https://.../billair.gif\",\n                                        \"user\": \"U061F7AUR\",\n                                        \"username\": \"\"\n                                    },\n                                    {\n                                        \"channels\": [\n                                            \"C0T8SE4AU\"\n                                        ],\n                                        \"comments_count\": 0,\n                                        \"created\": 1531763342,\n                                        \"deanimate_gif\": \"https://.../tedair_deanimate_gif.png\",\n                                        \"display_as_bot\": false,\n                                        \"editable\": false,\n                                        \"external_type\": \"\",\n                                        \"filetype\": \"gif\",\n                                        \"groups\": [],\n                                        \"id\": \"F0S43PZDF\",\n                                        \"image_exif_rotation\": 1,\n                                        \"ims\": [],\n                                        \"is_external\": false,\n                                        \"is_public\": true,\n                                        \"mimetype\": \"image/gif\",\n                                        \"mode\": \"hosted\",\n                                        \"name\": \"tedair.gif\",\n                                        \"original_h\": 226,\n                                        \"original_w\": 176,\n                                        \"permalink\": \"https://https://.../tedair.gif\",\n                                        \"permalink_public\": \"https://.../...\",\n                                        \"pjpeg\": \"https://.../tedair_pjpeg.jpg\",\n                                        \"pretty_type\": \"GIF\",\n                                        \"public_url_shared\": false,\n                                        \"size\": 137531,\n                                        \"thumb_160\": \"https://.../tedair_=_160.png\",\n                                        \"thumb_360\": \"https://.../tedair_360.png\",\n                                        \"thumb_360_gif\": \"https://.../tedair_360.gif\",\n                                        \"thumb_360_h\": 226,\n                                        \"thumb_360_w\": 176,\n                                        \"thumb_64\": \"https://.../tedair_64.png\",\n                                        \"thumb_80\": \"https://.../tedair_80.png\",\n                                        \"timestamp\": 1531763342,\n                                        \"title\": \"tedair.gif\",\n                                        \"url_private\": \"https://.../tedair.gif\",\n                                        \"url_private_download\": \"https://.../tedair.gif\",\n                                        \"user\": \"U061F7AUR\",\n                                        \"username\": \"\"\n                                    }\n                                ],\n                                \"ok\": true,\n                                \"paging\": {\n                                    \"count\": 100,\n                                    \"page\": 1,\n                                    \"pages\": 1,\n                                    \"total\": 2\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from files.list method\",\n                            \"properties\": {\n                                \"files\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_file\"\n                                    },\n                                    \"minItems\": 0,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"paging\": {\n                                    \"$ref\": \"#/definitions/objs_paging\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"files\",\n                                \"paging\"\n                            ],\n                            \"title\": \"files.list schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from files.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"user_not_found\",\n                                        \"unknown_type\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"files.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"files:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"files\"\n                ]\n            }\n        },\n        \"/files.revokePublicURL\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Revokes public/external sharing access for a file\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/files.revokePublicURL\"\n                },\n                \"operationId\": \"files_revokePublicURL\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `files:write:user`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File to revoke\",\n                        \"in\": \"formData\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from files.revokePublicURL method\",\n                            \"properties\": {\n                                \"file\": {\n                                    \"$ref\": \"#/definitions/objs_file\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"file\"\n                            ],\n                            \"title\": \"files.revokePublicURL schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from files.revokePublicURL method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"file_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"files.revokePublicURL error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"files:write:user\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"files\"\n                ]\n            }\n        },\n        \"/files.sharedPublicURL\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Enables a file for public/external sharing.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/files.sharedPublicURL\"\n                },\n                \"operationId\": \"files_sharedPublicURL\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `files:write:user`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File to share\",\n                        \"in\": \"formData\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from files.sharedPublicURL method\",\n                            \"properties\": {\n                                \"file\": {\n                                    \"$ref\": \"#/definitions/objs_file\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"file\"\n                            ],\n                            \"title\": \"files.sharedPublicURL schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from files.sharedPublicURL method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"file_not_found\",\n                                        \"not_allowed\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"files.sharedPublicURL error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"files:write:user\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"files\"\n                ]\n            }\n        },\n        \"/files.upload\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Uploads or creates a file.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/files.upload\"\n                },\n                \"operationId\": \"files_upload\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Comma-separated list of channel names or IDs where the file will be shared.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channels\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Title of file.\",\n                        \"in\": \"formData\",\n                        \"name\": \"title\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The message text introducing the file in specified `channels`.\",\n                        \"in\": \"formData\",\n                        \"name\": \"initial_comment\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A [file type](/types/file#file_types) identifier.\",\n                        \"in\": \"formData\",\n                        \"name\": \"filetype\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Filename of file.\",\n                        \"in\": \"formData\",\n                        \"name\": \"filename\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File contents via a POST variable. If omitting this parameter, you must provide a `file`.\",\n                        \"in\": \"formData\",\n                        \"name\": \"content\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `files:write:user`\",\n                        \"in\": \"formData\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File contents via `multipart/form-data`. If omitting this parameter, you must submit `content`.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Provide another message's `ts` value to upload this file as a reply. Never use a reply's `ts` value; use its parent instead.\",\n                        \"in\": \"formData\",\n                        \"name\": \"thread_ts\",\n                        \"type\": \"number\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Success response after uploading a file to a channel with an initial message\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"file\": {\n                                    \"channels\": [],\n                                    \"comments_count\": 0,\n                                    \"created\": 1532293501,\n                                    \"display_as_bot\": false,\n                                    \"editable\": false,\n                                    \"external_type\": \"\",\n                                    \"filetype\": \"gif\",\n                                    \"groups\": [],\n                                    \"has_rich_preview\": false,\n                                    \"id\": \"F0TD00400\",\n                                    \"image_exif_rotation\": 1,\n                                    \"ims\": [\n                                        \"D0L4B9P0Q\"\n                                    ],\n                                    \"is_external\": false,\n                                    \"is_public\": false,\n                                    \"is_starred\": false,\n                                    \"mimetype\": \"image/jpeg\",\n                                    \"mode\": \"hosted\",\n                                    \"name\": \"dramacat.gif\",\n                                    \"original_h\": 366,\n                                    \"original_w\": 526,\n                                    \"permalink\": \"https://.../dramacat.gif\",\n                                    \"permalink_public\": \"https://.../More-Path-Components\",\n                                    \"pretty_type\": \"JPEG\",\n                                    \"public_url_shared\": false,\n                                    \"shares\": {\n                                        \"private\": {\n                                            \"D0L4B9P0Q\": [\n                                                {\n                                                    \"reply_count\": 0,\n                                                    \"reply_users\": [],\n                                                    \"reply_users_count\": 0,\n                                                    \"ts\": \"1532293503.000001\"\n                                                }\n                                            ]\n                                        }\n                                    },\n                                    \"size\": 43518,\n                                    \"thumb_160\": \"https://.../dramacat_160.gif\",\n                                    \"thumb_360\": \"https://.../dramacat_360.gif\",\n                                    \"thumb_360_h\": 250,\n                                    \"thumb_360_w\": 360,\n                                    \"thumb_480\": \"https://.../dramacat_480.gif\",\n                                    \"thumb_480_h\": 334,\n                                    \"thumb_480_w\": 480,\n                                    \"thumb_64\": \"https://.../dramacat_64.gif\",\n                                    \"thumb_80\": \"https://.../dramacat_80.gif\",\n                                    \"timestamp\": 1532293501,\n                                    \"title\": \"dramacat\",\n                                    \"url_private\": \"https://.../dramacat.gif\",\n                                    \"url_private_download\": \"https://.../dramacat.gif\",\n                                    \"user\": \"U0L4B9NSU\",\n                                    \"username\": \"\"\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response files.upload method\",\n                            \"properties\": {\n                                \"file\": {\n                                    \"$ref\": \"#/definitions/objs_file\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"file\"\n                            ],\n                            \"title\": \"files.upload schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response files.upload method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"posting_to_general_channel_denied\",\n                                        \"invalid_channel\",\n                                        \"file_uploads_disabled\",\n                                        \"file_uploads_except_images_disabled\",\n                                        \"storage_limit_reached\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"files.upload error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"files:write:user\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"files\"\n                ]\n            }\n        },\n        \"/groups.archive\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Archives a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.archive\"\n                },\n                \"operationId\": \"groups_archive\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Private channel to archive\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from groups.archive method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"groups.archive schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from groups.archive method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"already_archived\",\n                                        \"group_contains_others\",\n                                        \"restricted_action\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.archive error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.create\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Creates a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.create\"\n                },\n                \"operationId\": \"groups_create\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.\",\n                        \"in\": \"formData\",\n                        \"name\": \"validate\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Name of private channel to create\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response groups.create method\",\n                            \"properties\": {\n                                \"group\": {\n                                    \"$ref\": \"#/definitions/objs_group\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"group\"\n                            ],\n                            \"title\": \"groups.create success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response groups.create method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"no_channel\",\n                                        \"restricted_action\",\n                                        \"name_taken\",\n                                        \"invalid_name_required\",\n                                        \"invalid_name_punctuation\",\n                                        \"invalid_name_maxlength\",\n                                        \"invalid_name_specials\",\n                                        \"invalid_name\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.create error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.createChild\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Clones and archives a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.createChild\"\n                },\n                \"operationId\": \"groups_createChild\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"formData\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Private channel to clone and archive.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from groups.createChild method\",\n                            \"properties\": {\n                                \"group\": {\n                                    \"$ref\": \"#/definitions/objs_group\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"group\"\n                            ],\n                            \"title\": \"groups.createChild schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from groups.createChild method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"already_archived\",\n                                        \"restricted_action\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.createChild error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.history\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Fetches history of messages and events from a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.history\"\n                },\n                \"operationId\": \"groups_history\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Number of messages to return, between 1 and 1000.\",\n                        \"in\": \"query\",\n                        \"name\": \"count\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Include `unread_count_display` in the output?\",\n                        \"in\": \"query\",\n                        \"name\": \"unreads\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Include messages with latest or oldest timestamp in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"inclusive\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:history`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Start of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"oldest\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Private channel to fetch history for.\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"End of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"latest\",\n                        \"type\": \"number\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"has_more\": false,\n                                \"latest\": \"1358547726.000003\",\n                                \"messages\": [\n                                    {\n                                        \"text\": \"Hello\",\n                                        \"ts\": \"1358546515.000008\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"is_starred\": true,\n                                        \"text\": \"World\",\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"something_else\"\n                                    }\n                                ],\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response groups.history method\",\n                            \"properties\": {\n                                \"has_more\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"messages\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_message\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"messages\",\n                                \"has_more\"\n                            ],\n                            \"title\": \"groups.history success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response groups.history method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"invalid_ts_latest\",\n                                        \"invalid_ts_oldest\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"invalid_for_external_shared_channel\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.history error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:history\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.info\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets information about a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.info\"\n                },\n                \"operationId\": \"groups_info\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Set this to `true` to receive the locale for this group. Defaults to `false`\",\n                        \"in\": \"query\",\n                        \"name\": \"include_locale\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Private channel to get info on\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response groups.info method\",\n                            \"properties\": {\n                                \"group\": {\n                                    \"$ref\": \"#/definitions/objs_group\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"group\"\n                            ],\n                            \"title\": \"groups.info success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response groups.info method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"invalid_for_external_shared_channel\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.info error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.invite\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Invites a user to a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.invite\"\n                },\n                \"operationId\": \"groups_invite\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"User to invite.\",\n                        \"in\": \"formData\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Private channel to invite user to.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response groups.invite method\",\n                            \"properties\": {\n                                \"group\": {\n                                    \"$ref\": \"#/definitions/objs_group\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"group\"\n                            ],\n                            \"title\": \"groups.invite success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response groups.invite method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"user_not_found\",\n                                        \"cant_invite_self\",\n                                        \"is_archived\",\n                                        \"cant_invite\",\n                                        \"ura_max_channels\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"user_is_bot\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.invite error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.kick\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Removes a user from a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.kick\"\n                },\n                \"operationId\": \"groups_kick\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"User to remove from private channel.\",\n                        \"in\": \"formData\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Private channel to remove user from.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from groups.kick method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"groups.kick schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from groups.kick method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"user_not_found\",\n                                        \"cant_kick_self\",\n                                        \"not_in_group\",\n                                        \"restricted_action\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.kick error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.leave\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Leaves a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.leave\"\n                },\n                \"operationId\": \"groups_leave\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Private channel to leave\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from groups.leave method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"groups.leave schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from groups.leave method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"is_archived\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_ultra_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.leave error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists private channels that the calling user has access to.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.list\"\n                },\n                \"operationId\": \"groups_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Parameter for pagination. Set `cursor` equal to the `next_cursor` attribute returned by the previous request's `response_metadata`. This parameter is optional, but pagination is mandatory: the default value simply fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more details.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Exclude the `members` from each `group`\",\n                        \"in\": \"query\",\n                        \"name\": \"exclude_members\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Don't return archived private channels.\",\n                        \"in\": \"query\",\n                        \"name\": \"exclude_archived\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response groups.list method\",\n                            \"properties\": {\n                                \"groups\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_group\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"groups\"\n                            ],\n                            \"title\": \"groups.list success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response groups.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.mark\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sets the read cursor in a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.mark\"\n                },\n                \"operationId\": \"groups_mark\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the most recently seen message.\",\n                        \"in\": \"formData\",\n                        \"name\": \"ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Private channel to set reading cursor in.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from groups.mark method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"groups.mark success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from groups.mark method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"invalid_timestamp\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.mark error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.open\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Opens a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.open\"\n                },\n                \"operationId\": \"groups_open\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Private channel to open.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from groups.open method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"groups.open schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from groups.open method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.open error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.rename\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Renames a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.rename\"\n                },\n                \"operationId\": \"groups_rename\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.\",\n                        \"in\": \"formData\",\n                        \"name\": \"validate\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"New name for private channel.\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Private channel to rename\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from groups.rename method\",\n                            \"properties\": {\n                                \"channel\": {\n                                    \"$ref\": \"#/definitions/objs_group\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"groups.rename schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from groups.rename method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"invalid_name\",\n                                        \"name_taken\",\n                                        \"invalid_name_required\",\n                                        \"invalid_name_punctuation\",\n                                        \"invalid_name_maxlength\",\n                                        \"invalid_name_specials\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.rename error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.replies\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieve a thread of messages posted to a private channel\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.replies\"\n                },\n                \"operationId\": \"groups_replies\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Unique identifier of a thread's parent message\",\n                        \"in\": \"query\",\n                        \"name\": \"thread_ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:history`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Private channel to fetch thread from\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"messages\": [\n                                    {\n                                        \"text\": \"Hello\",\n                                        \"ts\": \"1358546515.000008\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"is_starred\": true,\n                                        \"text\": \"World\",\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"something_else\"\n                                    }\n                                ],\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from groups.replies method\",\n                            \"properties\": {\n                                \"has_more\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"messages\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_message\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"messages\"\n                            ],\n                            \"title\": \"groups.replies schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from groups.replies method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"thread_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.replies error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:history\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.setPurpose\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sets the purpose for a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.setPurpose\"\n                },\n                \"operationId\": \"groups_setPurpose\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The new purpose\",\n                        \"in\": \"formData\",\n                        \"name\": \"purpose\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Private channel to set the purpose of\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from groups.setPurpose method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"purpose\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"purpose\"\n                            ],\n                            \"title\": \"groups.setPurpose schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from groups.setPurpose method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"is_archived\",\n                                        \"too_long\",\n                                        \"user_is_restricted\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.setPurpose error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.setTopic\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sets the topic for a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.setTopic\"\n                },\n                \"operationId\": \"groups_setTopic\",\n                \"parameters\": [\n                    {\n                        \"description\": \"The new topic\",\n                        \"in\": \"formData\",\n                        \"name\": \"topic\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Private channel to set the topic of\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from groups.setTopic method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"topic\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"topic\"\n                            ],\n                            \"title\": \"groups.setTopic schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from groups.setTopic method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"is_archived\",\n                                        \"too_long\",\n                                        \"user_is_restricted\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.setTopic error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/groups.unarchive\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Unarchives a private channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/groups.unarchive\"\n                },\n                \"operationId\": \"groups_unarchive\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `groups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Private channel to unarchive\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from groups.unarchive method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"groups.unarchive schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from groups.unarchive method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_archived\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"groups.unarchive error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"groups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"groups\"\n                ]\n            }\n        },\n        \"/im.close\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Close a direct message channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/im.close\"\n                },\n                \"operationId\": \"im_close\",\n                \"parameters\": [],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from im.close method\",\n                            \"properties\": {\n                                \"already_closed\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"no_op\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"im.close schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from im.close method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"user_does_not_own_channel\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"im.close error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"im:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"im\"\n                ]\n            }\n        },\n        \"/im.history\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Fetches history of messages and events from direct message channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/im.history\"\n                },\n                \"operationId\": \"im_history\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Number of messages to return, between 1 and 1000.\",\n                        \"in\": \"query\",\n                        \"name\": \"count\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Include `unread_count_display` in the output?\",\n                        \"in\": \"query\",\n                        \"name\": \"unreads\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Include messages with latest or oldest timestamp in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"inclusive\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `im:history`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Start of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"oldest\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Direct message channel to fetch history for.\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"End of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"latest\",\n                        \"type\": \"number\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"has_more\": false,\n                                \"latest\": \"1358547726.000003\",\n                                \"messages\": [\n                                    {\n                                        \"text\": \"Hello\",\n                                        \"ts\": \"1358546515.000008\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"is_starred\": true,\n                                        \"text\": \"World\",\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"something_else\"\n                                    }\n                                ],\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from im.history method\",\n                            \"properties\": {\n                                \"has_more\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"messages\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_message\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"messages\",\n                                \"has_more\"\n                            ],\n                            \"title\": \"im.history success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from im.history method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"invalid_ts_latest\",\n                                        \"invalid_ts_oldest\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"needed\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"provided\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"im.history error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"im:history\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"im\"\n                ]\n            }\n        },\n        \"/im.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists direct message channels for the calling user.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/im.list\"\n                },\n                \"operationId\": \"im_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more detail.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `im:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ims\": [\n                                    {\n                                        \"created\": 1449709280,\n                                        \"id\": \"D0G9QPY56\",\n                                        \"is_im\": true,\n                                        \"is_org_shared\": false,\n                                        \"is_user_deleted\": false,\n                                        \"user\": \"USLACKBOT\"\n                                    },\n                                    {\n                                        \"created\": 1466692204,\n                                        \"id\": \"D1KL59A72\",\n                                        \"is_im\": true,\n                                        \"is_org_shared\": false,\n                                        \"is_user_deleted\": false,\n                                        \"user\": \"U0G9QF9C6\"\n                                    },\n                                    {\n                                        \"created\": 1449722883,\n                                        \"id\": \"D0G9XPFH9\",\n                                        \"is_im\": true,\n                                        \"is_org_shared\": false,\n                                        \"is_user_deleted\": false,\n                                        \"user\": \"U0G9WFXNZ\"\n                                    },\n                                    {\n                                        \"created\": 1452098023,\n                                        \"id\": \"D0HRHJSF7\",\n                                        \"is_im\": true,\n                                        \"is_org_shared\": false,\n                                        \"is_user_deleted\": false,\n                                        \"user\": \"W0HRJL7CK\"\n                                    },\n                                    {\n                                        \"created\": 1465834222,\n                                        \"id\": \"D1GD7CHC0\",\n                                        \"is_im\": true,\n                                        \"is_org_shared\": false,\n                                        \"is_user_deleted\": true,\n                                        \"user\": \"U1GDBDGR3\"\n                                    },\n                                    {\n                                        \"created\": 1468274703,\n                                        \"id\": \"D1QMF76M9\",\n                                        \"is_im\": true,\n                                        \"is_org_shared\": false,\n                                        \"is_user_deleted\": false,\n                                        \"user\": \"U1QNSQB9U\"\n                                    },\n                                    {\n                                        \"created\": 1502210225,\n                                        \"id\": \"D6K48KKRN\",\n                                        \"is_im\": true,\n                                        \"is_org_shared\": false,\n                                        \"is_user_deleted\": false,\n                                        \"user\": \"U6KR7BVFW\"\n                                    }\n                                ],\n                                \"ok\": true,\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"aW1faWQ6RDBCSDk1RExI=\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response im.list method\",\n                            \"properties\": {\n                                \"ims\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_im\"\n                                    },\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"ims\"\n                            ],\n                            \"title\": \"im.list success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from im.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"invalid_cursor\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"im.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"im:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"im\"\n                ]\n            }\n        },\n        \"/im.mark\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sets the read cursor in a direct message channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/im.mark\"\n                },\n                \"operationId\": \"im_mark\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `im:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Direct message channel to set reading cursor in.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the most recently seen message.\",\n                        \"in\": \"formData\",\n                        \"name\": \"ts\",\n                        \"type\": \"number\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response im.mark method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"im.mark success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response im.mark method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"invalid_timestamp\",\n                                        \"not_in_channel\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"im.mark error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"im:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"im\"\n                ]\n            }\n        },\n        \"/im.open\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Opens a direct message channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/im.open\"\n                },\n                \"operationId\": \"im_open\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `im:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Boolean, indicates you want the full IM channel definition in the response.\",\n                        \"in\": \"formData\",\n                        \"name\": \"return_im\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"User to open a direct message channel with.\",\n                        \"in\": \"formData\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Set this to `true` to receive the locale for this im. Defaults to `false`\",\n                        \"in\": \"formData\",\n                        \"name\": \"include_locale\",\n                        \"type\": \"boolean\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"id\": \"D947RLWRX\"\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from im.open method\",\n                            \"properties\": {\n                                \"already_open\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"channel\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"created\": {\n                                            \"type\": \"string\"\n                                        },\n                                        \"id\": {\n                                            \"$ref\": \"#/definitions/defs_dm_id\"\n                                        },\n                                        \"is_im\": {\n                                            \"type\": \"boolean\"\n                                        },\n                                        \"is_open\": {\n                                            \"type\": \"boolean\"\n                                        },\n                                        \"last_read\": {\n                                            \"$ref\": \"#/definitions/defs_ts\"\n                                        },\n                                        \"latest\": {\n                                            \"$ref\": \"#/definitions/objs_message\"\n                                        },\n                                        \"unread_count\": {\n                                            \"type\": \"number\"\n                                        },\n                                        \"unread_count_display\": {\n                                            \"type\": \"number\"\n                                        },\n                                        \"user\": {\n                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"id\"\n                                    ],\n                                    \"type\": \"object\"\n                                },\n                                \"no_op\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channel\"\n                            ],\n                            \"title\": \"im.open success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from im.open method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"user_not_found\",\n                                        \"user_not_visible\",\n                                        \"user_disabled\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"im.open error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"im:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"im\"\n                ]\n            }\n        },\n        \"/im.replies\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieve a thread of messages posted to a direct message conversation\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/im.replies\"\n                },\n                \"operationId\": \"im_replies\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Unique identifier of a thread's parent message\",\n                        \"in\": \"query\",\n                        \"name\": \"thread_ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `im:history`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Direct message channel to fetch thread from\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"messages\": [\n                                    {\n                                        \"text\": \"Hello\",\n                                        \"ts\": \"1358546515.000008\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"is_starred\": true,\n                                        \"text\": \"World\",\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"something_else\"\n                                    }\n                                ],\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from im.replies method\",\n                            \"properties\": {\n                                \"has_more\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"messages\": {\n                                    \"items\": {\n                                        \"items\": [\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"last_read\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"latest_reply\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"replies\": {\n                                                        \"items\": {\n                                                            \"additionalProperties\": false,\n                                                            \"properties\": {\n                                                                \"ts\": {\n                                                                    \"$ref\": \"#/definitions/defs_ts\"\n                                                                },\n                                                                \"user\": {\n                                                                    \"$ref\": \"#/definitions/defs_user_id\"\n                                                                }\n                                                            },\n                                                            \"required\": [\n                                                                \"user\",\n                                                                \"ts\"\n                                                            ],\n                                                            \"type\": \"object\"\n                                                        },\n                                                        \"type\": \"array\"\n                                                    },\n                                                    \"reply_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"reply_users\": {\n                                                        \"items\": {\n                                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                                        },\n                                                        \"type\": \"array\",\n                                                        \"uniqueItems\": true\n                                                    },\n                                                    \"reply_users_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"source_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"subscribed\": {\n                                                        \"type\": \"boolean\"\n                                                    },\n                                                    \"team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"text\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"thread_ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"type\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"unread_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"user\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"user_profile\": {\n                                                        \"$ref\": \"#/definitions/objs_user_profile_short\"\n                                                    },\n                                                    \"user_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"user\",\n                                                    \"text\",\n                                                    \"thread_ts\",\n                                                    \"reply_count\",\n                                                    \"replies\",\n                                                    \"subscribed\",\n                                                    \"ts\"\n                                                ],\n                                                \"type\": \"object\"\n                                            },\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"is_starred\": {\n                                                        \"type\": \"boolean\"\n                                                    },\n                                                    \"parent_user_id\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"source_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"text\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"thread_ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"type\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"user\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"user_profile\": {\n                                                        \"$ref\": \"#/definitions/objs_user_profile_short\"\n                                                    },\n                                                    \"user_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"user\",\n                                                    \"text\",\n                                                    \"thread_ts\",\n                                                    \"parent_user_id\",\n                                                    \"ts\"\n                                                ],\n                                                \"type\": \"object\"\n                                            }\n                                        ]\n                                    },\n                                    \"type\": \"array\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"messages\",\n                                \"has_more\"\n                            ],\n                            \"title\": \"im.replies schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from im.replies method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"thread_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"im.replies error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"im:history\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"im\"\n                ]\n            }\n        },\n        \"/migration.exchange\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"For Enterprise Grid workspaces, map local user IDs to global user IDs\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/migration.exchange\"\n                },\n                \"operationId\": \"migration_exchange\",\n                \"parameters\": [],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response when mappings exist for the specified user IDs\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"enterprise_id\": \"E1KQTNXE1\",\n                                \"invalid_user_ids\": [\n                                    \"U21ABZZXX\"\n                                ],\n                                \"ok\": true,\n                                \"team_id\": \"T1KR7PE1W\",\n                                \"user_id_map\": {\n                                    \"U06UBSUN5\": \"W06M56XJM\",\n                                    \"U06UBSVB3\": \"W06PUUDLY\",\n                                    \"U06UBSVDX\": \"W06PUUDMW\",\n                                    \"U06UEB62U\": \"W06PTT6GH\",\n                                    \"W06UAZ65Q\": \"W06UAZ65Q\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": true,\n                            \"description\": \"Schema for successful response from migration.exchange method\",\n                            \"properties\": {\n                                \"enterprise_id\": {\n                                    \"title\": \"The enterprise grid organization ID containing the workspace/team.\",\n                                    \"type\": \"string\"\n                                },\n                                \"invalid_user_ids\": {\n                                    \"items\": {\n                                        \"type\": \"string\"\n                                    },\n                                    \"title\": \"A list of User IDs that cannot be mapped or found\",\n                                    \"type\": \"array\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"team_id\": {\n                                    \"$ref\": \"#/definitions/defs_team\"\n                                },\n                                \"user_id_map\": {\n                                    \"additionalProperties\": true,\n                                    \"title\": \"A mapping of provided user IDs with mapped user IDs\",\n                                    \"type\": \"object\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"team_id\",\n                                \"enterprise_id\"\n                            ],\n                            \"title\": \"migration.exchange success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response when there are no mappings to provide\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"not_enterprise_team\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from migration.exchange method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_enterprise_team\",\n                                        \"too_many_users\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"migration.exchange error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"tokens.basic\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"migration\"\n                ]\n            }\n        },\n        \"/mpim.close\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Closes a multiparty direct message channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/mpim.close\"\n                },\n                \"operationId\": \"mpim_close\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `mpim:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"MPIM to close.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from mpim.close method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"mpim.close schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from mpim.close method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"mpim.close error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"mpim\"\n                ]\n            }\n        },\n        \"/mpim.history\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Fetches history of messages and events from a multiparty direct message.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/mpim.history\"\n                },\n                \"operationId\": \"mpim_history\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Number of messages to return, between 1 and 1000.\",\n                        \"in\": \"query\",\n                        \"name\": \"count\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Include `unread_count_display` in the output?\",\n                        \"in\": \"query\",\n                        \"name\": \"unreads\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Include messages with latest or oldest timestamp in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"inclusive\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `mpim:history`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Start of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"oldest\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Multiparty direct message to fetch history for.\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"End of time range of messages to include in results.\",\n                        \"in\": \"query\",\n                        \"name\": \"latest\",\n                        \"type\": \"number\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"has_more\": false,\n                                \"latest\": \"1358547726.000003\",\n                                \"messages\": [\n                                    {\n                                        \"text\": \"Hello\",\n                                        \"ts\": \"1358546515.000008\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"is_starred\": true,\n                                        \"text\": \"World\",\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"something_else\"\n                                    }\n                                ],\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from mpim.history method\",\n                            \"properties\": {\n                                \"has_more\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"messages\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_message\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"messages\",\n                                \"has_more\"\n                            ],\n                            \"title\": \"mpim.history schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from mpim.history method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"invalid_ts_latest\",\n                                        \"invalid_ts_oldest\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"mpim.history error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"mpim:history\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"mpim\"\n                ]\n            }\n        },\n        \"/mpim.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists multiparty direct message channels for the calling user.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/mpim.list\"\n                },\n                \"operationId\": \"mpim_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Parameter for pagination. Set `cursor` equal to the `next_cursor` attribute returned by the previous request's `response_metadata`. This parameter is optional, but pagination is mandatory: the default value simply fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more details.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `mpim:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from mpim.list method\",\n                            \"properties\": {\n                                \"groups\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_group\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"groups\"\n                            ],\n                            \"title\": \"mpim.list schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from mpim.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"mpim.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"mpim:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"mpim\"\n                ]\n            }\n        },\n        \"/mpim.mark\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Sets the read cursor in a multiparty direct message channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/mpim.mark\"\n                },\n                \"operationId\": \"mpim_mark\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `mpim:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the most recently seen message.\",\n                        \"in\": \"formData\",\n                        \"name\": \"ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"multiparty direct message channel to set reading cursor in.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from mpim.mark method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"mpim.mark schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from mpim.mark method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"invalid_timestamp\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"mpim.mark error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"mpim\"\n                ]\n            }\n        },\n        \"/mpim.open\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"This method opens a multiparty direct message.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/mpim.open\"\n                },\n                \"operationId\": \"mpim_open\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `mpim:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Comma separated lists of users.  The ordering of the users is preserved whenever a MPIM group is returned.\",\n                        \"in\": \"formData\",\n                        \"name\": \"users\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channel\": {\n                                    \"id\": \"D024BFF1M\"\n                                },\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from mpim.open method\",\n                            \"properties\": {\n                                \"group\": {\n                                    \"$ref\": \"#/definitions/objs_group\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"group\"\n                            ],\n                            \"title\": \"mpim.open success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from mpim.open method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"users_list_not_supplied\",\n                                        \"not_enough_users\",\n                                        \"too_many_users\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"mpim.open error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"mpim:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"mpim\"\n                ]\n            }\n        },\n        \"/mpim.replies\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieve a thread of messages posted to a direct message conversation from a multiparty direct message.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/mpim.replies\"\n                },\n                \"operationId\": \"mpim_replies\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Unique identifier of a thread's parent message.\",\n                        \"in\": \"query\",\n                        \"name\": \"thread_ts\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `mpim:history`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Multiparty direct message channel to fetch thread from.\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"messages\": [\n                                    {\n                                        \"text\": \"Hello\",\n                                        \"ts\": \"1358546515.000008\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"is_starred\": true,\n                                        \"text\": \"World\",\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"message\",\n                                        \"user\": \"U2147483896\"\n                                    },\n                                    {\n                                        \"ts\": \"1358546515.000007\",\n                                        \"type\": \"something_else\"\n                                    }\n                                ],\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from mpim.replies method\",\n                            \"properties\": {\n                                \"has_more\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"messages\": {\n                                    \"items\": {\n                                        \"items\": [\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"last_read\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"latest_reply\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"replies\": {\n                                                        \"items\": {\n                                                            \"additionalProperties\": false,\n                                                            \"properties\": {\n                                                                \"ts\": {\n                                                                    \"$ref\": \"#/definitions/defs_ts\"\n                                                                },\n                                                                \"user\": {\n                                                                    \"$ref\": \"#/definitions/defs_user_id\"\n                                                                }\n                                                            },\n                                                            \"required\": [\n                                                                \"user\",\n                                                                \"ts\"\n                                                            ],\n                                                            \"type\": \"object\"\n                                                        },\n                                                        \"type\": \"array\"\n                                                    },\n                                                    \"reply_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"reply_users\": {\n                                                        \"items\": {\n                                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                                        },\n                                                        \"type\": \"array\",\n                                                        \"uniqueItems\": true\n                                                    },\n                                                    \"reply_users_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"source_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"subscribed\": {\n                                                        \"type\": \"boolean\"\n                                                    },\n                                                    \"team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"text\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"thread_ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"type\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"unread_count\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"user\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"user_profile\": {\n                                                        \"$ref\": \"#/definitions/objs_user_profile_short\"\n                                                    },\n                                                    \"user_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"user\",\n                                                    \"text\",\n                                                    \"thread_ts\",\n                                                    \"reply_count\",\n                                                    \"replies\",\n                                                    \"subscribed\",\n                                                    \"ts\"\n                                                ],\n                                                \"type\": \"object\"\n                                            },\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"is_starred\": {\n                                                        \"type\": \"boolean\"\n                                                    },\n                                                    \"parent_user_id\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"source_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    },\n                                                    \"text\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"thread_ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"ts\": {\n                                                        \"$ref\": \"#/definitions/defs_ts\"\n                                                    },\n                                                    \"type\": {\n                                                        \"type\": \"string\"\n                                                    },\n                                                    \"user\": {\n                                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                                    },\n                                                    \"user_profile\": {\n                                                        \"$ref\": \"#/definitions/objs_user_profile_short\"\n                                                    },\n                                                    \"user_team\": {\n                                                        \"$ref\": \"#/definitions/defs_team\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"user\",\n                                                    \"text\",\n                                                    \"thread_ts\",\n                                                    \"parent_user_id\",\n                                                    \"ts\"\n                                                ],\n                                                \"type\": \"object\"\n                                            }\n                                        ]\n                                    },\n                                    \"type\": \"array\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"messages\",\n                                \"has_more\"\n                            ],\n                            \"title\": \"mpim.replies schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from mpim.replies method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"thread_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"mpim.replies error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"mpim:history\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"mpim\"\n                ]\n            }\n        },\n        \"/oauth.access\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Exchanges a temporary OAuth verifier code for an access token.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/oauth.access\"\n                },\n                \"operationId\": \"oauth_access\",\n                \"parameters\": [\n                    {\n                        \"description\": \"The `code` param returned via the OAuth callback.\",\n                        \"in\": \"query\",\n                        \"name\": \"code\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"This must match the originally submitted URI (if one was sent).\",\n                        \"in\": \"query\",\n                        \"name\": \"redirect_uri\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Issued when you created your application.\",\n                        \"in\": \"query\",\n                        \"name\": \"client_id\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Issued when you created your application.\",\n                        \"in\": \"query\",\n                        \"name\": \"client_secret\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Request the user to add your app only to a single channel.\",\n                        \"in\": \"query\",\n                        \"name\": \"single_channel\",\n                        \"type\": \"boolean\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Successful user token negotiation for a single scope\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"access_token\": \"xoxp-XXXXXXXX-XXXXXXXX-XXXXX\",\n                                \"scope\": \"groups:write\",\n                                \"team_id\": \"TXXXXXXXXX\",\n                                \"team_name\": \"Wyld Stallyns LLC\"\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default success template\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_client_id\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default error template\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"oauth\"\n                ]\n            }\n        },\n        \"/oauth.token\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Exchanges a temporary OAuth verifier code for a workspace token.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/oauth.token\"\n                },\n                \"operationId\": \"oauth_token\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Issued when you created your application.\",\n                        \"in\": \"query\",\n                        \"name\": \"client_secret\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The `code` param returned via the OAuth callback.\",\n                        \"in\": \"query\",\n                        \"name\": \"code\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Request the user to add your app only to a single channel.\",\n                        \"in\": \"query\",\n                        \"name\": \"single_channel\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Issued when you created your application.\",\n                        \"in\": \"query\",\n                        \"name\": \"client_id\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"This must match the originally submitted URI (if one was sent).\",\n                        \"in\": \"query\",\n                        \"name\": \"redirect_uri\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Success example using a workspace app produces a very different kind of response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"access_token\": \"xoxa-access-token-string\",\n                                \"app_id\": \"A012345678\",\n                                \"app_user_id\": \"U0AB12ABC\",\n                                \"authorizing_user_id\": \"U0HTT3Q0G\",\n                                \"installer_user_id\": \"U061F7AUR\",\n                                \"ok\": true,\n                                \"permissions\": [\n                                    {\n                                        \"resource_id\": 0,\n                                        \"resource_type\": \"channel\",\n                                        \"scopes\": [\n                                            \"channels:read\",\n                                            \"chat:write:user\"\n                                        ]\n                                    }\n                                ],\n                                \"single_channel_id\": \"C061EG9T2\",\n                                \"team_id\": \"T061EG9Z9\",\n                                \"team_name\": \"Subarachnoid Workspace\",\n                                \"token_type\": \"app\"\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default success template\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_client_id\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default error template\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"none\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"oauth\"\n                ]\n            }\n        },\n        \"/pins.add\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Pins an item to a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/pins.add\"\n                },\n                \"operationId\": \"pins_add\",\n                \"parameters\": [\n                    {\n                        \"description\": \"File comment to pin.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file_comment\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the message to pin.\",\n                        \"in\": \"formData\",\n                        \"name\": \"timestamp\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `pins:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File to pin.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to pin the item in.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from pins.add method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"pins.add schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"channel_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from pins.add method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"bad_timestamp\",\n                                        \"file_not_found\",\n                                        \"file_comment_not_found\",\n                                        \"message_not_found\",\n                                        \"channel_not_found\",\n                                        \"no_item_specified\",\n                                        \"already_pinned\",\n                                        \"permission_denied\",\n                                        \"file_not_shared\",\n                                        \"not_pinnable\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"pins.add error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"pins:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"pins\"\n                ]\n            }\n        },\n        \"/pins.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists items pinned to a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/pins.list\"\n                },\n                \"operationId\": \"pins_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `pins:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to get pinned items for.\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"items\": [\n                                    {\n                                        \"channel\": \"C2U86NC6H\",\n                                        \"created\": 1508881078,\n                                        \"created_by\": \"U2U85N1RZ\",\n                                        \"message\": {\n                                            \"permalink\": \"https://hitchhikers.slack.com/archives/C2U86NC6H/p1508197641000151\",\n                                            \"pinned_to\": [\n                                                \"C2U86NC6H\"\n                                            ],\n                                            \"text\": \"What is the meaning of life?\",\n                                            \"ts\": \"1508197641.000151\",\n                                            \"type\": \"message\",\n                                            \"user\": \"U2U85N1RZ\"\n                                        },\n                                        \"type\": \"message\"\n                                    },\n                                    {\n                                        \"channel\": \"C2U86NC6H\",\n                                        \"created\": 1508880991,\n                                        \"created_by\": \"U2U85N1RZ\",\n                                        \"message\": {\n                                            \"permalink\": \"https://hitchhikers.slack.com/archives/C2U86NC6H/p1508284197000015\",\n                                            \"pinned_to\": [\n                                                \"C2U86NC6H\"\n                                            ],\n                                            \"text\": \"The meaning of life, the universe, and everything is 42.\",\n                                            \"ts\": \"1503289197.000015\",\n                                            \"type\": \"message\",\n                                            \"user\": \"U2U85N1RZ\"\n                                        },\n                                        \"type\": \"message\"\n                                    }\n                                ],\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Schema for successful response from pins.list method\",\n                            \"items\": [\n                                {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"items\": {\n                                            \"items\": [\n                                                {\n                                                    \"additionalProperties\": false,\n                                                    \"properties\": {\n                                                        \"comment\": {\n                                                            \"$ref\": \"#/definitions/objs_comment\"\n                                                        },\n                                                        \"created\": {\n                                                            \"type\": \"integer\"\n                                                        },\n                                                        \"created_by\": {\n                                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                                        },\n                                                        \"file\": {\n                                                            \"$ref\": \"#/definitions/objs_file\"\n                                                        },\n                                                        \"type\": {\n                                                            \"enum\": [\n                                                                \"file_comment\"\n                                                            ],\n                                                            \"type\": \"string\"\n                                                        }\n                                                    },\n                                                    \"title\": \"File Comment Pin\",\n                                                    \"type\": \"object\"\n                                                },\n                                                {\n                                                    \"additionalProperties\": false,\n                                                    \"properties\": {\n                                                        \"created\": {\n                                                            \"type\": \"integer\"\n                                                        },\n                                                        \"created_by\": {\n                                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                                        },\n                                                        \"file\": {\n                                                            \"$ref\": \"#/definitions/objs_file\"\n                                                        },\n                                                        \"type\": {\n                                                            \"enum\": [\n                                                                \"file\"\n                                                            ],\n                                                            \"type\": \"string\"\n                                                        }\n                                                    },\n                                                    \"title\": \"File Pin\",\n                                                    \"type\": \"object\"\n                                                },\n                                                {\n                                                    \"additionalProperties\": false,\n                                                    \"properties\": {\n                                                        \"channel\": {\n                                                            \"$ref\": \"#/definitions/defs_channel\"\n                                                        },\n                                                        \"created\": {\n                                                            \"type\": \"integer\"\n                                                        },\n                                                        \"created_by\": {\n                                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                                        },\n                                                        \"message\": {\n                                                            \"$ref\": \"#/definitions/objs_message\"\n                                                        },\n                                                        \"type\": {\n                                                            \"enum\": [\n                                                                \"message\"\n                                                            ],\n                                                            \"type\": \"string\"\n                                                        }\n                                                    },\n                                                    \"title\": \"Message Pin\",\n                                                    \"type\": \"object\"\n                                                }\n                                            ],\n                                            \"type\": \"array\",\n                                            \"uniqueItems\": true\n                                        },\n                                        \"ok\": {\n                                            \"$ref\": \"#/definitions/defs_ok_true\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"ok\",\n                                        \"items\"\n                                    ],\n                                    \"type\": \"object\"\n                                },\n                                {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"count\": {\n                                            \"type\": \"integer\"\n                                        },\n                                        \"ok\": {\n                                            \"$ref\": \"#/definitions/defs_ok_true\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"ok\",\n                                        \"count\"\n                                    ],\n                                    \"type\": \"object\"\n                                }\n                            ],\n                            \"title\": \"pins.list success schema\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from pins.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"channel_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"pins.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"pins:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"pins\"\n                ]\n            }\n        },\n        \"/pins.remove\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Un-pins an item from a channel.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/pins.remove\"\n                },\n                \"operationId\": \"pins_remove\",\n                \"parameters\": [\n                    {\n                        \"description\": \"File comment to un-pin.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file_comment\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the message to un-pin.\",\n                        \"in\": \"formData\",\n                        \"name\": \"timestamp\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `pins:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File to un-pin.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel where the item is pinned to.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from pins.remove method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"pins.remove schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"no_pin\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from pins.remove method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"bad_timestamp\",\n                                        \"file_not_found\",\n                                        \"file_comment_not_found\",\n                                        \"message_not_found\",\n                                        \"no_item_specified\",\n                                        \"not_pinned\",\n                                        \"permission_denied\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_typ\",\n                                        \"missing_post_typ\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeou\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"pins.remove error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"pins:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"pins\"\n                ]\n            }\n        },\n        \"/reactions.add\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Adds a reaction to an item.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/reactions.add\"\n                },\n                \"operationId\": \"reactions_add\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Reaction (emoji) name.\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File comment to add reaction to. Now that [file threads](/changelog/2018-05-file-threads-soon-tread#whats_changed) work the way you'd expect, this argument is deprecated. Specify the timestamp and channel of the message associated with a file instead.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file_comment\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the message to add reaction to.\",\n                        \"in\": \"formData\",\n                        \"name\": \"timestamp\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `reactions:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File to add reaction to. Now that [file threads](/changelog/2018-05-file-threads-soon-tread#whats_changed) work the way you'd expect, this argument is deprecated. Specify the timestamp and channel of the message associated with a file instead.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel where the message to add reaction to was posted.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from reactions.add method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"reactions.add schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"already_reacted\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from reactions.add method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"bad_timestamp\",\n                                        \"file_not_found\",\n                                        \"file_comment_not_found\",\n                                        \"message_not_found\",\n                                        \"no_item_specified\",\n                                        \"invalid_name\",\n                                        \"already_reacted\",\n                                        \"too_many_emoji\",\n                                        \"too_many_reactions\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"reactions.add error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"reactions:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"reactions\"\n                ]\n            }\n        },\n        \"/reactions.get\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets reactions for an item.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/reactions.get\"\n                },\n                \"operationId\": \"reactions_get\",\n                \"parameters\": [\n                    {\n                        \"description\": \"If true always return the complete reaction list.\",\n                        \"in\": \"query\",\n                        \"name\": \"full\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"File comment to get reactions for.\",\n                        \"in\": \"query\",\n                        \"name\": \"file_comment\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the message to get reactions for.\",\n                        \"in\": \"query\",\n                        \"name\": \"timestamp\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `reactions:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File to get reactions for.\",\n                        \"in\": \"query\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel where the message to get reactions for was posted.\",\n                        \"in\": \"query\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"file\": {\n                                    \"channels\": [\n                                        \"C2U7V2YA2\"\n                                    ],\n                                    \"comments_count\": 1,\n                                    \"created\": 1507850315,\n                                    \"groups\": [],\n                                    \"id\": \"F7H0D7ZA4\",\n                                    \"ims\": [],\n                                    \"name\": \"computer.gif\",\n                                    \"reactions\": [\n                                        {\n                                            \"count\": 1,\n                                            \"name\": \"stuck_out_tongue_winking_eye\",\n                                            \"users\": [\n                                                \"U2U85N1RV\"\n                                            ]\n                                        }\n                                    ],\n                                    \"timestamp\": 1507850315,\n                                    \"title\": \"computer.gif\",\n                                    \"user\": \"U2U85N1RV\"\n                                },\n                                \"ok\": true,\n                                \"type\": \"file\"\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Schema for successful response from reactions.get method\",\n                            \"items\": [\n                                {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"channel\": {\n                                            \"$ref\": \"#/definitions/defs_channel\"\n                                        },\n                                        \"message\": {\n                                            \"$ref\": \"#/definitions/objs_message\"\n                                        },\n                                        \"ok\": {\n                                            \"$ref\": \"#/definitions/defs_ok_true\"\n                                        },\n                                        \"type\": {\n                                            \"enum\": [\n                                                \"message\"\n                                            ],\n                                            \"type\": \"string\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"ok\",\n                                        \"type\",\n                                        \"channel\",\n                                        \"message\"\n                                    ]\n                                },\n                                {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"file\": {\n                                            \"$ref\": \"#/definitions/objs_file\"\n                                        },\n                                        \"ok\": {\n                                            \"$ref\": \"#/definitions/defs_ok_true\"\n                                        },\n                                        \"type\": {\n                                            \"enum\": [\n                                                \"file\"\n                                            ],\n                                            \"type\": \"string\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"ok\",\n                                        \"type\",\n                                        \"file\"\n                                    ]\n                                },\n                                {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"comment\": {\n                                            \"$ref\": \"#/definitions/objs_comment\"\n                                        },\n                                        \"file\": {\n                                            \"$ref\": \"#/definitions/objs_file\"\n                                        },\n                                        \"ok\": {\n                                            \"$ref\": \"#/definitions/defs_ok_true\"\n                                        },\n                                        \"type\": {\n                                            \"enum\": [\n                                                \"file_comment\"\n                                            ],\n                                            \"type\": \"string\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"ok\",\n                                        \"type\",\n                                        \"file\",\n                                        \"comment\"\n                                    ]\n                                }\n                            ],\n                            \"title\": \"reactions.get success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from reactions.get method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"bad_timestamp\",\n                                        \"file_not_found\",\n                                        \"file_comment_not_found\",\n                                        \"message_not_found\",\n                                        \"no_item_specified\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"reactions.get error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"reactions:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"reactions\"\n                ]\n            }\n        },\n        \"/reactions.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists reactions made by a user.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/reactions.list\"\n                },\n                \"operationId\": \"reactions_list\",\n                \"parameters\": [\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"count\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"If true always return the complete reaction list.\",\n                        \"in\": \"query\",\n                        \"name\": \"full\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Parameter for pagination. Set `cursor` equal to the `next_cursor` attribute returned by the previous request's `response_metadata`. This parameter is optional, but pagination is mandatory: the default value simply fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more details.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `reactions:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Show reactions made by this user. Defaults to the authed user.\",\n                        \"in\": \"query\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"page\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"items\": [\n                                    {\n                                        \"channel\": \"C3UKJTQAC\",\n                                        \"message\": {\n                                            \"bot_id\": \"B4VLRLMKJ\",\n                                            \"reactions\": [\n                                                {\n                                                    \"count\": 1,\n                                                    \"name\": \"robot_face\",\n                                                    \"users\": [\n                                                        \"U2U85N1RV\"\n                                                    ]\n                                                }\n                                            ],\n                                            \"subtype\": \"bot_message\",\n                                            \"text\": \"Hello from Python! :tada:\",\n                                            \"ts\": \"1507849573.000090\",\n                                            \"username\": \"Shipit Notifications\"\n                                        },\n                                        \"type\": \"message\"\n                                    },\n                                    {\n                                        \"comment\": {\n                                            \"comment\": \"This is a file comment\",\n                                            \"created\": 1508286096,\n                                            \"id\": \"Fc7LP08P1U\",\n                                            \"reactions\": [\n                                                {\n                                                    \"count\": 1,\n                                                    \"name\": \"white_check_mark\",\n                                                    \"users\": [\n                                                        \"U2U85N1RV\"\n                                                    ]\n                                                }\n                                            ],\n                                            \"timestamp\": 1508286096,\n                                            \"type\": \"file_comment\",\n                                            \"user\": \"U2U85N1RV\"\n                                        },\n                                        \"file\": {\n                                            \"channels\": [\n                                                \"C2U7V2YA2\"\n                                            ],\n                                            \"comments_count\": 1,\n                                            \"created\": 1507850315,\n                                            \"reactions\": [\n                                                {\n                                                    \"count\": 1,\n                                                    \"name\": \"stuck_out_tongue_winking_eye\",\n                                                    \"users\": [\n                                                        \"U2U85N1RV\"\n                                                    ]\n                                                }\n                                            ],\n                                            \"title\": \"computer.gif\",\n                                            \"user\": \"U2U85N1RV\",\n                                            \"username\": \"\"\n                                        }\n                                    },\n                                    {\n                                        \"file\": {\n                                            \"channels\": [\n                                                \"C2U7V2YA2\"\n                                            ],\n                                            \"comments_count\": 1,\n                                            \"created\": 1507850315,\n                                            \"id\": \"F7H0D7ZA4\",\n                                            \"name\": \"computer.gif\",\n                                            \"reactions\": [\n                                                {\n                                                    \"count\": 1,\n                                                    \"name\": \"stuck_out_tongue_winking_eye\",\n                                                    \"users\": [\n                                                        \"U2U85N1RV\"\n                                                    ]\n                                                }\n                                            ],\n                                            \"size\": 1639034,\n                                            \"title\": \"computer.gif\",\n                                            \"user\": \"U2U85N1RV\",\n                                            \"username\": \"\"\n                                        },\n                                        \"type\": \"file\"\n                                    }\n                                ],\n                                \"ok\": true,\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"dGVhbTpDMUg5UkVTR0w=\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from reactions.list method\",\n                            \"properties\": {\n                                \"items\": {\n                                    \"items\": {\n                                        \"items\": [\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"channel\": {\n                                                        \"$ref\": \"#/definitions/defs_channel\"\n                                                    },\n                                                    \"message\": {\n                                                        \"$ref\": \"#/definitions/objs_message\"\n                                                    },\n                                                    \"type\": {\n                                                        \"enum\": [\n                                                            \"message\"\n                                                        ],\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"channel\",\n                                                    \"message\"\n                                                ],\n                                                \"type\": \"object\"\n                                            },\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"file\": {\n                                                        \"$ref\": \"#/definitions/objs_file\"\n                                                    },\n                                                    \"type\": {\n                                                        \"enum\": [\n                                                            \"file\"\n                                                        ],\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"file\"\n                                                ],\n                                                \"type\": \"object\"\n                                            },\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"comment\": {\n                                                        \"$ref\": \"#/definitions/objs_comment\"\n                                                    },\n                                                    \"file\": {\n                                                        \"$ref\": \"#/definitions/objs_file\"\n                                                    },\n                                                    \"type\": {\n                                                        \"enum\": [\n                                                            \"file_comment\"\n                                                        ],\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"file\",\n                                                    \"comment\"\n                                                ],\n                                                \"type\": \"object\"\n                                            }\n                                        ]\n                                    },\n                                    \"type\": \"array\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"paging\": {\n                                    \"$ref\": \"#/definitions/objs_paging\"\n                                },\n                                \"response_metadata\": {\n                                    \"$ref\": \"#/definitions/objs_response_metadata\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"items\"\n                            ],\n                            \"title\": \"reactions.list schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from reactions.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"user_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactiv\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"reactions.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"reactions:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"reactions\"\n                ]\n            }\n        },\n        \"/reactions.remove\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Removes a reaction from an item.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/reactions.remove\"\n                },\n                \"operationId\": \"reactions_remove\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Reaction (emoji) name.\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File comment to remove reaction from.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file_comment\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the message to remove reaction from.\",\n                        \"in\": \"formData\",\n                        \"name\": \"timestamp\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `reactions:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File to remove reaction from.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel where the message to remove reaction from was posted.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from reactions.remove method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"reactions.remove schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"no_reaction\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from reactions.remove method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"bad_timestamp\",\n                                        \"file_not_found\",\n                                        \"file_comment_not_found\",\n                                        \"message_not_found\",\n                                        \"no_item_specified\",\n                                        \"invalid_name\",\n                                        \"no_reaction\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"reactions.remove error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"reactions:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"reactions\"\n                ]\n            }\n        },\n        \"/reminders.add\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Creates a reminder.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/reminders.add\"\n                },\n                \"operationId\": \"reminders_add\",\n                \"parameters\": [\n                    {\n                        \"description\": \"The content of the reminder\",\n                        \"in\": \"formData\",\n                        \"name\": \"text\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `reminders:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The user who will receive the reminder. If no user is specified, the reminder will go to user who created it.\",\n                        \"in\": \"formData\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"When this reminder should happen: the Unix timestamp (up to five years from now), the number of seconds until the reminder (if within 24 hours), or a natural language description (Ex. \\\"in 15 minutes,\\\" or \\\"every Thursday\\\")\",\n                        \"in\": \"formData\",\n                        \"name\": \"time\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from reminders.add method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"reminder\": {\n                                    \"$ref\": \"#/definitions/objs_reminder\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"reminder\"\n                            ],\n                            \"title\": \"reminders.add schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from reminders.add method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"cannot_parse\",\n                                        \"user_not_found\",\n                                        \"cannot_add_bot\",\n                                        \"cannot_add_slackbot\",\n                                        \"cannot_add_others\",\n                                        \"cannot_add_others_recurring\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"reminders.add error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"reminders:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"reminders\"\n                ]\n            }\n        },\n        \"/reminders.complete\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Marks a reminder as complete.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/reminders.complete\"\n                },\n                \"operationId\": \"reminders_complete\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `reminders:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The ID of the reminder to be marked as complete\",\n                        \"in\": \"formData\",\n                        \"name\": \"reminder\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from reminders.complete method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"reminders.complete schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from reminders.complete method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_found\",\n                                        \"cannot_complete_recurring\",\n                                        \"cannot_complete_others\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"reminders.complete error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"reminders:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"reminders\"\n                ]\n            }\n        },\n        \"/reminders.delete\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Deletes a reminder.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/reminders.delete\"\n                },\n                \"operationId\": \"reminders_delete\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `reminders:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The ID of the reminder\",\n                        \"in\": \"formData\",\n                        \"name\": \"reminder\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from reminders.delete method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"reminders.delete schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from reminders.delete method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"reminders.delete error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"reminders:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"reminders\"\n                ]\n            }\n        },\n        \"/reminders.info\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets information about a reminder.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/reminders.info\"\n                },\n                \"operationId\": \"reminders_info\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `reminders:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The ID of the reminder\",\n                        \"in\": \"query\",\n                        \"name\": \"reminder\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from reminders.info method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"reminder\": {\n                                    \"$ref\": \"#/definitions/objs_reminder\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"reminder\"\n                            ],\n                            \"title\": \"reminders.info schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from reminders.info method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"reminders.info error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"reminders:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"reminders\"\n                ]\n            }\n        },\n        \"/reminders.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists all reminders created by or for a given user.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/reminders.list\"\n                },\n                \"operationId\": \"reminders_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `reminders:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from reminders.list method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"reminders\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_reminder\"\n                                    },\n                                    \"type\": \"array\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"reminders\"\n                            ],\n                            \"title\": \"reminders.list schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from reminders.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"reminders.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"reminders:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"reminders\"\n                ]\n            }\n        },\n        \"/rtm.connect\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Starts a Real Time Messaging session.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/rtm.connect\"\n                },\n                \"operationId\": \"rtm_connect\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Only deliver presence events when requested by subscription. See [presence subscriptions](/docs/presence-and-status#subscriptions).\",\n                        \"in\": \"query\",\n                        \"name\": \"presence_sub\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `rtm:stream`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Batch presence deliveries via subscription. Enabling changes the shape of `presence_change` events. See [batch presence](/docs/presence-and-status#batching).\",\n                        \"in\": \"query\",\n                        \"name\": \"batch_presence_aware\",\n                        \"type\": \"boolean\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"self\": {\n                                    \"id\": \"U4X318ZMZ\",\n                                    \"name\": \"robotoverlord\"\n                                },\n                                \"team\": {\n                                    \"domain\": \"slackdemo\",\n                                    \"id\": \"T2U81E2FP\",\n                                    \"name\": \"SlackDemo\"\n                                },\n                                \"url\": \"wss://...\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from rtm.connect method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"self\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"id\": {\n                                            \"$ref\": \"#/definitions/defs_user_id\"\n                                        },\n                                        \"name\": {\n                                            \"type\": \"string\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"id\",\n                                        \"name\"\n                                    ],\n                                    \"type\": \"object\"\n                                },\n                                \"team\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"domain\": {\n                                            \"type\": \"string\"\n                                        },\n                                        \"id\": {\n                                            \"$ref\": \"#/definitions/defs_team\"\n                                        },\n                                        \"name\": {\n                                            \"type\": \"string\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"id\",\n                                        \"name\",\n                                        \"domain\"\n                                    ],\n                                    \"type\": \"object\"\n                                },\n                                \"url\": {\n                                    \"format\": \"uri\",\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"url\",\n                                \"team\",\n                                \"self\"\n                            ],\n                            \"title\": \"rtm.connect schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from rtm.connect method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"rtm.connect error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"rtm:stream\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"rtm\"\n                ]\n            }\n        },\n        \"/search.messages\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Searches for messages matching a query.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/search.messages\"\n                },\n                \"operationId\": \"search_messages\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Change sort direction to ascending (`asc`) or descending (`desc`).\",\n                        \"in\": \"query\",\n                        \"name\": \"sort_dir\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Search query.\",\n                        \"in\": \"query\",\n                        \"name\": \"query\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Return matches sorted by either `score` or `timestamp`.\",\n                        \"in\": \"query\",\n                        \"name\": \"sort\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Pass the number of results you want per \\\"page\\\". Maximum of `100`.\",\n                        \"in\": \"query\",\n                        \"name\": \"count\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `search:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Pass a value of `true` to enable query highlight markers (see below).\",\n                        \"in\": \"query\",\n                        \"name\": \"highlight\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"page\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"messages\": {\n                                    \"matches\": [\n                                        {\n                                            \"channel\": {\n                                                \"id\": \"C12345678\",\n                                                \"is_ext_shared\": false,\n                                                \"is_mpim\": false,\n                                                \"is_org_shared\": false,\n                                                \"is_pending_ext_shared\": false,\n                                                \"is_private\": false,\n                                                \"is_shared\": false,\n                                                \"name\": \"general\",\n                                                \"pending_shared\": []\n                                            },\n                                            \"iid\": \"cb64bdaa-c1e8-4631-8a91-0f78080113e9\",\n                                            \"permalink\": \"https://hitchhikers.slack.com/archives/C12345678/p1508284197000015\",\n                                            \"team\": \"T12345678\",\n                                            \"text\": \"The meaning of life the universe and everything is 42.\",\n                                            \"ts\": \"1508284197.000015\",\n                                            \"type\": \"message\",\n                                            \"user\": \"U2U85N1RV\",\n                                            \"username\": \"roach\"\n                                        },\n                                        {\n                                            \"channel\": {\n                                                \"id\": \"C12345678\",\n                                                \"is_ext_shared\": false,\n                                                \"is_mpim\": false,\n                                                \"is_org_shared\": false,\n                                                \"is_pending_ext_shared\": false,\n                                                \"is_private\": false,\n                                                \"is_shared\": false,\n                                                \"name\": \"random\",\n                                                \"pending_shared\": []\n                                            },\n                                            \"iid\": \"9a00d3c9-bd2d-45b0-988b-6cff99ae2a90\",\n                                            \"permalink\": \"https://hitchhikers.slack.com/archives/C12345678/p1508795665000236\",\n                                            \"team\": \"T12345678\",\n                                            \"text\": \"The meaning of life the universe and everything is 101010\",\n                                            \"ts\": \"1508795665.000236\",\n                                            \"type\": \"message\",\n                                            \"user\": \"\",\n                                            \"username\": \"robot overlord\"\n                                        }\n                                    ],\n                                    \"pagination\": {\n                                        \"first\": 1,\n                                        \"last\": 2,\n                                        \"page\": 1,\n                                        \"page_count\": 1,\n                                        \"per_page\": 20,\n                                        \"total_count\": 2\n                                    },\n                                    \"paging\": {\n                                        \"count\": 20,\n                                        \"page\": 1,\n                                        \"pages\": 1,\n                                        \"total\": 2\n                                    },\n                                    \"total\": 2\n                                },\n                                \"ok\": true,\n                                \"query\": \"The meaning of life the universe and everything\"\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default success template\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"No query passed\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default error template\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"search:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"search\"\n                ]\n            }\n        },\n        \"/stars.add\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Adds a star to an item.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/stars.add\"\n                },\n                \"operationId\": \"stars_add\",\n                \"parameters\": [\n                    {\n                        \"description\": \"File comment to add star to.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file_comment\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the message to add star to.\",\n                        \"in\": \"formData\",\n                        \"name\": \"timestamp\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `stars:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to add star to, or channel where the message to add star to was posted (used with `timestamp`).\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File to add star to.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from stars.add method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"stars.add schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from stars.add method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"bad_timestamp\",\n                                        \"message_not_found\",\n                                        \"file_not_found\",\n                                        \"file_comment_not_found\",\n                                        \"channel_not_found\",\n                                        \"no_item_specified\",\n                                        \"already_starred\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"stars.add error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"stars:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"stars\"\n                ]\n            }\n        },\n        \"/stars.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists stars for a user.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/stars.list\"\n                },\n                \"operationId\": \"stars_list\",\n                \"parameters\": [\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"count\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Parameter for pagination. Set `cursor` equal to the `next_cursor` attribute returned by the previous request's `response_metadata`. This parameter is optional, but pagination is mandatory: the default value simply fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more details.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `stars:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"page\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from stars.list method\",\n                            \"properties\": {\n                                \"items\": {\n                                    \"items\": {\n                                        \"items\": [\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"channel\": {\n                                                        \"$ref\": \"#/definitions/defs_channel\"\n                                                    },\n                                                    \"date_create\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"message\": {\n                                                        \"$ref\": \"#/definitions/objs_message\"\n                                                    },\n                                                    \"type\": {\n                                                        \"enum\": [\n                                                            \"message\"\n                                                        ],\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"channel\",\n                                                    \"message\",\n                                                    \"date_create\"\n                                                ],\n                                                \"type\": \"object\"\n                                            },\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"date_create\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"file\": {\n                                                        \"$ref\": \"#/definitions/objs_file\"\n                                                    },\n                                                    \"type\": {\n                                                        \"enum\": [\n                                                            \"file\"\n                                                        ],\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"file\",\n                                                    \"date_create\"\n                                                ],\n                                                \"type\": \"object\"\n                                            },\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"comment\": {\n                                                        \"$ref\": \"#/definitions/objs_comment\"\n                                                    },\n                                                    \"date_create\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"file\": {\n                                                        \"$ref\": \"#/definitions/objs_file\"\n                                                    },\n                                                    \"type\": {\n                                                        \"enum\": [\n                                                            \"file_comment\"\n                                                        ],\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"file\",\n                                                    \"comment\",\n                                                    \"date_create\"\n                                                ],\n                                                \"type\": \"object\"\n                                            },\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"channel\": {\n                                                        \"$ref\": \"#/definitions/defs_channel\"\n                                                    },\n                                                    \"date_create\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"type\": {\n                                                        \"enum\": [\n                                                            \"channel\"\n                                                        ],\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"channel\",\n                                                    \"date_create\"\n                                                ],\n                                                \"type\": \"object\"\n                                            },\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"channel\": {\n                                                        \"$ref\": \"#/definitions/defs_dm_id\"\n                                                    },\n                                                    \"date_create\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"type\": {\n                                                        \"enum\": [\n                                                            \"im\"\n                                                        ],\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"channel\",\n                                                    \"date_create\"\n                                                ],\n                                                \"type\": \"object\"\n                                            },\n                                            {\n                                                \"additionalProperties\": false,\n                                                \"properties\": {\n                                                    \"channel\": {\n                                                        \"$ref\": \"#/definitions/defs_group_id\"\n                                                    },\n                                                    \"date_create\": {\n                                                        \"type\": \"integer\"\n                                                    },\n                                                    \"type\": {\n                                                        \"enum\": [\n                                                            \"group\"\n                                                        ],\n                                                        \"type\": \"string\"\n                                                    }\n                                                },\n                                                \"required\": [\n                                                    \"type\",\n                                                    \"channel\",\n                                                    \"date_create\"\n                                                ],\n                                                \"type\": \"object\"\n                                            }\n                                        ]\n                                    },\n                                    \"type\": \"array\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"paging\": {\n                                    \"$ref\": \"#/definitions/objs_paging\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"items\"\n                            ],\n                            \"title\": \"stars.list schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from stars.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"stars.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"stars:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"stars\"\n                ]\n            }\n        },\n        \"/stars.remove\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Removes a star from an item.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/stars.remove\"\n                },\n                \"operationId\": \"stars_remove\",\n                \"parameters\": [\n                    {\n                        \"description\": \"File comment to remove star from.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file_comment\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Timestamp of the message to remove star from.\",\n                        \"in\": \"formData\",\n                        \"name\": \"timestamp\",\n                        \"type\": \"number\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `stars:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Channel to remove star from, or channel where the message to remove star from was posted (used with `timestamp`).\",\n                        \"in\": \"formData\",\n                        \"name\": \"channel\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"File to remove star from.\",\n                        \"in\": \"formData\",\n                        \"name\": \"file\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from stars.remove method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"stars.remove schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from stars.remove method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"bad_timestamp\",\n                                        \"message_not_found\",\n                                        \"file_not_found\",\n                                        \"file_comment_not_found\",\n                                        \"channel_not_found\",\n                                        \"no_item_specified\",\n                                        \"not_starred\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"stars.remove error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"stars:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"stars\"\n                ]\n            }\n        },\n        \"/team.accessLogs\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets the access logs for the current team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/team.accessLogs\"\n                },\n                \"operationId\": \"team_accessLogs\",\n                \"parameters\": [\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"count\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `admin`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"page\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"End of time range of logs to include in results (inclusive).\",\n                        \"in\": \"query\",\n                        \"name\": \"before\",\n                        \"type\": \"integer\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"This response demonstrates pagination and two access log entries.\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"logins\": [\n                                    {\n                                        \"count\": 1,\n                                        \"country\": \"US\",\n                                        \"date_first\": 1422922864,\n                                        \"date_last\": 1422922864,\n                                        \"ip\": \"127.0.0.1\",\n                                        \"isp\": \"BigCo ISP\",\n                                        \"region\": \"CA\",\n                                        \"user_agent\": \"SlackWeb Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.35 Safari/537.36\",\n                                        \"user_id\": \"U45678\",\n                                        \"username\": \"alice\"\n                                    },\n                                    {\n                                        \"count\": 1,\n                                        \"country\": \"US\",\n                                        \"date_first\": 1422922493,\n                                        \"date_last\": 1422922493,\n                                        \"ip\": \"127.0.0.1\",\n                                        \"isp\": \"BigCo ISP\",\n                                        \"region\": \"CA\",\n                                        \"user_agent\": \"SlackWeb Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B466 Safari/600.1.4\",\n                                        \"user_id\": \"U12345\",\n                                        \"username\": \"white_rabbit\"\n                                    }\n                                ],\n                                \"ok\": true,\n                                \"paging\": {\n                                    \"count\": 100,\n                                    \"page\": 1,\n                                    \"pages\": 1,\n                                    \"total\": 2\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from team.accessLogs method\",\n                            \"properties\": {\n                                \"logins\": {\n                                    \"items\": {\n                                        \"additionalProperties\": false,\n                                        \"properties\": {\n                                            \"count\": {\n                                                \"type\": \"integer\"\n                                            },\n                                            \"country\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"date_first\": {\n                                                \"type\": \"integer\"\n                                            },\n                                            \"date_last\": {\n                                                \"type\": \"integer\"\n                                            },\n                                            \"ip\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"isp\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"region\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"user_agent\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"user_id\": {\n                                                \"$ref\": \"#/definitions/defs_user_id\"\n                                            },\n                                            \"username\": {\n                                                \"type\": \"string\"\n                                            }\n                                        },\n                                        \"required\": [\n                                            \"user_id\",\n                                            \"username\",\n                                            \"date_first\",\n                                            \"date_last\",\n                                            \"count\",\n                                            \"ip\",\n                                            \"user_agent\",\n                                            \"isp\",\n                                            \"country\",\n                                            \"region\"\n                                        ],\n                                        \"type\": \"object\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"paging\": {\n                                    \"$ref\": \"#/definitions/objs_paging\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"logins\",\n                                \"paging\"\n                            ],\n                            \"title\": \"team.accessLogs schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"A workspace must be on a paid plan to use this method, otherwise the `paid_only` error is thrown:\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"paid_only\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from team.accessLogs method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"paid_only\",\n                                        \"over_pagination_limit\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"team.accessLogs error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"admin\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"team\"\n                ]\n            }\n        },\n        \"/team.billableInfo\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets billable users information for the current team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/team.billableInfo\"\n                },\n                \"operationId\": \"team_billableInfo\",\n                \"parameters\": [],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from team.billableInfo method\",\n                            \"properties\": {\n                                \"billable_info\": {\n                                    \"additionalProperties\": false,\n                                    \"type\": \"object\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"billable_info\"\n                            ],\n                            \"title\": \"team.billableInfo schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from team.billableInfo method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"user_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"team.billableInfo error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"admin\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"team\"\n                ]\n            }\n        },\n        \"/team.info\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets information about the current team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/team.info\"\n                },\n                \"operationId\": \"team_info\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `team:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Team to get info on, if omitted, will return information about the current team. Will only return team that the authenticated token is allowed to see through external shared channels\",\n                        \"in\": \"query\",\n                        \"name\": \"team\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"team\": {\n                                    \"domain\": \"example\",\n                                    \"email_domain\": \"example.com\",\n                                    \"enterprise_id\": \"E1234A12AB\",\n                                    \"enterprise_name\": \"Umbrella Corporation\",\n                                    \"icon\": {\n                                        \"image_102\": \"https://...\",\n                                        \"image_132\": \"https://...\",\n                                        \"image_34\": \"https://...\",\n                                        \"image_44\": \"https://...\",\n                                        \"image_68\": \"https://...\",\n                                        \"image_88\": \"https://...\",\n                                        \"image_default\": true\n                                    },\n                                    \"id\": \"T12345\",\n                                    \"name\": \"My Team\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from team.info method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"team\": {\n                                    \"$ref\": \"#/definitions/objs_team\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"team\"\n                            ],\n                            \"title\": \"team.info schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from team.info method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revokedno_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"team.info error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"team:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"team\"\n                ]\n            }\n        },\n        \"/team.integrationLogs\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets the integration logs for the current team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/team.integrationLogs\"\n                },\n                \"operationId\": \"team_integrationLogs\",\n                \"parameters\": [\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"count\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Filter logs with this change type. Defaults to all logs.\",\n                        \"in\": \"query\",\n                        \"name\": \"change_type\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Filter logs to this Slack app. Defaults to all logs.\",\n                        \"in\": \"query\",\n                        \"name\": \"app_id\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `admin`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Filter logs generated by this user\\u2019s actions. Defaults to all logs.\",\n                        \"in\": \"query\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Filter logs to this service. Defaults to all logs.\",\n                        \"in\": \"query\",\n                        \"name\": \"service_id\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"in\": \"query\",\n                        \"name\": \"page\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from team.integrationLogs method\",\n                            \"properties\": {\n                                \"logs\": {\n                                    \"items\": {\n                                        \"additionalProperties\": false,\n                                        \"properties\": {\n                                            \"admin_app_id\": {\n                                                \"$ref\": \"#/definitions/defs_app_id\"\n                                            },\n                                            \"app_id\": {\n                                                \"$ref\": \"#/definitions/defs_app_id\"\n                                            },\n                                            \"app_type\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"change_type\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"channel\": {\n                                                \"$ref\": \"#/definitions/defs_channel\"\n                                            },\n                                            \"date\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"scope\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"service_id\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"service_type\": {\n                                                \"type\": \"string\"\n                                            },\n                                            \"user_id\": {\n                                                \"$ref\": \"#/definitions/defs_user_id\"\n                                            },\n                                            \"user_name\": {\n                                                \"type\": \"string\"\n                                            }\n                                        },\n                                        \"required\": [\n                                            \"user_id\",\n                                            \"user_name\",\n                                            \"date\",\n                                            \"change_type\",\n                                            \"app_type\",\n                                            \"app_id\",\n                                            \"scope\"\n                                        ],\n                                        \"type\": \"object\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"paging\": {\n                                    \"$ref\": \"#/definitions/objs_paging\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"logs\",\n                                \"paging\"\n                            ],\n                            \"title\": \"team.integrationLogs schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from team.integrationLogs method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"team.integrationLogs error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"admin\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"team\"\n                ]\n            }\n        },\n        \"/team.profile.get\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieve a team's profile.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/team.profile.get\"\n                },\n                \"operationId\": \"team_profile_get\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users.profile:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Filter by visibility.\",\n                        \"in\": \"query\",\n                        \"name\": \"visibility\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"profile\": {\n                                    \"fields\": [\n                                        {\n                                            \"hint\": \"Enter the extension to reach your desk\",\n                                            \"id\": \"Xf06054AAA\",\n                                            \"is_hidden\": 1,\n                                            \"label\": \"Phone extension\",\n                                            \"options\": null,\n                                            \"ordering\": 0,\n                                            \"possible_values\": null,\n                                            \"type\": \"text\"\n                                        },\n                                        {\n                                            \"hint\": \"When you were born\",\n                                            \"id\": \"Xf06054BBB\",\n                                            \"label\": \"Date of birth\",\n                                            \"options\": null,\n                                            \"ordering\": 1,\n                                            \"possible_values\": null,\n                                            \"type\": \"date\"\n                                        },\n                                        {\n                                            \"hint\": \"Enter a link to your Facebook profile\",\n                                            \"id\": \"Xf06054CCC\",\n                                            \"label\": \"Facebook\",\n                                            \"options\": null,\n                                            \"ordering\": 2,\n                                            \"possible_values\": null,\n                                            \"type\": \"link\"\n                                        },\n                                        {\n                                            \"hint\": \"Hogwarts, obviously\",\n                                            \"id\": \"Xf06054DDD\",\n                                            \"label\": \"House\",\n                                            \"options\": null,\n                                            \"ordering\": 3,\n                                            \"possible_values\": [\n                                                \"Gryffindor\",\n                                                \"Hufflepuff\",\n                                                \"Ravenclaw\",\n                                                \"Slytherin\"\n                                            ],\n                                            \"type\": \"options_list\"\n                                        },\n                                        {\n                                            \"hint\": \"Office location (LDAP)\",\n                                            \"id\": \"Xf06054EEE\",\n                                            \"label\": \"Location\",\n                                            \"options\": {\n                                                \"is_protected\": 1\n                                            },\n                                            \"ordering\": 4,\n                                            \"possible_values\": null,\n                                            \"type\": \"text\"\n                                        },\n                                        {\n                                            \"hint\": \"The boss\",\n                                            \"id\": \"Xf06054FFF\",\n                                            \"label\": \"Manager\",\n                                            \"options\": null,\n                                            \"ordering\": 5,\n                                            \"possible_values\": null,\n                                            \"type\": \"user\"\n                                        }\n                                    ]\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from team.profile.get method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"profile\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"fields\": {\n                                            \"items\": {\n                                                \"$ref\": \"#/definitions/objs_team_profile_field\"\n                                            },\n                                            \"minItems\": 1,\n                                            \"type\": \"array\",\n                                            \"uniqueItems\": true\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"fields\"\n                                    ],\n                                    \"type\": \"object\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"profile\"\n                            ],\n                            \"title\": \"team.profile.get success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from team.profile.get method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_typ\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeou\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"team.profile.get error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users.profile:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"team.profile\",\n                    \"team\"\n                ]\n            }\n        },\n        \"/usergroups.create\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Create a User Group\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/usergroups.create\"\n                },\n                \"operationId\": \"usergroups_create\",\n                \"parameters\": [\n                    {\n                        \"description\": \"A mention handle. Must be unique among channels, users and User Groups.\",\n                        \"in\": \"formData\",\n                        \"name\": \"handle\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A short description of the User Group.\",\n                        \"in\": \"formData\",\n                        \"name\": \"description\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A comma separated string of encoded channel IDs for which the User Group uses as a default.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channels\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `usergroups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Include the number of users in each User Group.\",\n                        \"in\": \"formData\",\n                        \"name\": \"include_count\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"A name for the User Group. Must be unique among User Groups.\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from usergroups.create method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"usergroup\": {\n                                    \"$ref\": \"#/definitions/objs_subteam\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"usergroup\"\n                            ],\n                            \"title\": \"usergroups.create schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from usergroups.create method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"permission_denied\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"usergroups.create error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"usergroups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"usergroups\"\n                ]\n            }\n        },\n        \"/usergroups.disable\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Disable an existing User Group\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/usergroups.disable\"\n                },\n                \"operationId\": \"usergroups_disable\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `usergroups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Include the number of users in the User Group.\",\n                        \"in\": \"formData\",\n                        \"name\": \"include_count\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"The encoded ID of the User Group to disable.\",\n                        \"in\": \"formData\",\n                        \"name\": \"usergroup\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from usergroups.disable method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"usergroup\": {\n                                    \"$ref\": \"#/definitions/objs_subteam\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"usergroup\"\n                            ],\n                            \"title\": \"usergroups.disable schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from usergroups.disable method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"permission_denied\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"usergroups.disable error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"usergroups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"usergroups\"\n                ]\n            }\n        },\n        \"/usergroups.enable\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Enable a User Group\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/usergroups.enable\"\n                },\n                \"operationId\": \"usergroups_enable\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `usergroups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Include the number of users in the User Group.\",\n                        \"in\": \"formData\",\n                        \"name\": \"include_count\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"The encoded ID of the User Group to enable.\",\n                        \"in\": \"formData\",\n                        \"name\": \"usergroup\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from usergroups.enable method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"usergroup\": {\n                                    \"$ref\": \"#/definitions/objs_subteam\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"usergroup\"\n                            ],\n                            \"title\": \"usergroups.enable schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from usergroups.enable method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_require\",\n                                        \"fatal_error\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"usergroups.enable error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"usergroups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"usergroups\"\n                ]\n            }\n        },\n        \"/usergroups.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"List all User Groups for a team\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/usergroups.list\"\n                },\n                \"operationId\": \"usergroups_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Include the list of users for each User Group.\",\n                        \"in\": \"query\",\n                        \"name\": \"include_users\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `usergroups:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Include the number of users in each User Group.\",\n                        \"in\": \"query\",\n                        \"name\": \"include_count\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Include disabled User Groups.\",\n                        \"in\": \"query\",\n                        \"name\": \"include_disabled\",\n                        \"type\": \"boolean\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"usergroups\": [\n                                    {\n                                        \"auto_type\": \"admin\",\n                                        \"created_by\": \"USLACKBOT\",\n                                        \"date_create\": 1446598059,\n                                        \"date_delete\": 0,\n                                        \"date_update\": 1446670362,\n                                        \"deleted_by\": null,\n                                        \"description\": \"A group of all Administrators on your team.\",\n                                        \"handle\": \"admins\",\n                                        \"id\": \"S0614TZR7\",\n                                        \"is_external\": false,\n                                        \"is_usergroup\": true,\n                                        \"name\": \"Team Admins\",\n                                        \"prefs\": {\n                                            \"channels\": [],\n                                            \"groups\": []\n                                        },\n                                        \"team_id\": \"T060RNRCH\",\n                                        \"updated_by\": \"U060RNRCZ\",\n                                        \"user_count\": \"2\"\n                                    },\n                                    {\n                                        \"auto_type\": \"owner\",\n                                        \"created_by\": \"USLACKBOT\",\n                                        \"date_create\": 1446678371,\n                                        \"date_delete\": 0,\n                                        \"date_update\": 1446678371,\n                                        \"deleted_by\": null,\n                                        \"description\": \"A group of all Owners on your team.\",\n                                        \"handle\": \"owners\",\n                                        \"id\": \"S06158AV7\",\n                                        \"is_external\": false,\n                                        \"is_usergroup\": true,\n                                        \"name\": \"Team Owners\",\n                                        \"prefs\": {\n                                            \"channels\": [],\n                                            \"groups\": []\n                                        },\n                                        \"team_id\": \"T060RNRCH\",\n                                        \"updated_by\": \"USLACKBOT\",\n                                        \"user_count\": \"1\"\n                                    },\n                                    {\n                                        \"auto_type\": null,\n                                        \"created_by\": \"U060RNRCZ\",\n                                        \"date_create\": 1446746793,\n                                        \"date_delete\": 1446748865,\n                                        \"date_update\": 1446747767,\n                                        \"deleted_by\": null,\n                                        \"description\": \"Marketing gurus, PR experts and product advocates.\",\n                                        \"handle\": \"marketing-team\",\n                                        \"id\": \"S0615G0KT\",\n                                        \"is_external\": false,\n                                        \"is_usergroup\": true,\n                                        \"name\": \"Marketing Team\",\n                                        \"prefs\": {\n                                            \"channels\": [],\n                                            \"groups\": []\n                                        },\n                                        \"team_id\": \"T060RNRCH\",\n                                        \"updated_by\": \"U060RNRCZ\",\n                                        \"user_count\": \"0\"\n                                    }\n                                ]\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from usergroups.list method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"usergroups\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_subteam\"\n                                    },\n                                    \"type\": \"array\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"usergroups\"\n                            ],\n                            \"title\": \"usergroups.list schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from usergroups.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_require\",\n                                        \"fatal_error\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"usergroups.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"usergroups:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"usergroups\"\n                ]\n            }\n        },\n        \"/usergroups.update\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Update an existing User Group\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/usergroups.update\"\n                },\n                \"operationId\": \"usergroups_update\",\n                \"parameters\": [\n                    {\n                        \"description\": \"A mention handle. Must be unique among channels, users and User Groups.\",\n                        \"in\": \"formData\",\n                        \"name\": \"handle\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A short description of the User Group.\",\n                        \"in\": \"formData\",\n                        \"name\": \"description\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A comma separated string of encoded channel IDs for which the User Group uses as a default.\",\n                        \"in\": \"formData\",\n                        \"name\": \"channels\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `usergroups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Include the number of users in the User Group.\",\n                        \"in\": \"formData\",\n                        \"name\": \"include_count\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"The encoded ID of the User Group to update.\",\n                        \"in\": \"formData\",\n                        \"name\": \"usergroup\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"A name for the User Group. Must be unique among User Groups.\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"usergroup\": {\n                                    \"auto_type\": null,\n                                    \"created_by\": \"U060R4BJ4\",\n                                    \"date_create\": 1447096577,\n                                    \"date_delete\": 0,\n                                    \"date_update\": 1447102109,\n                                    \"deleted_by\": null,\n                                    \"description\": \"Marketing gurus, PR experts and product advocates.\",\n                                    \"handle\": \"marketing-team\",\n                                    \"id\": \"S0616NG6M\",\n                                    \"is_external\": false,\n                                    \"is_usergroup\": true,\n                                    \"name\": \"Marketing Team\",\n                                    \"prefs\": {\n                                        \"channels\": [],\n                                        \"groups\": []\n                                    },\n                                    \"team_id\": \"T060R4BHN\",\n                                    \"updated_by\": \"U060R4BJ4\",\n                                    \"user_count\": 1,\n                                    \"users\": [\n                                        \"U060R4BJ4\",\n                                        \"U060RNRCZ\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from usergroups.update method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"usergroup\": {\n                                    \"$ref\": \"#/definitions/objs_subteam\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"usergroup\"\n                            ],\n                            \"title\": \"usergroups.update schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from usergroups.update method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"permission_denied\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_require\",\n                                        \"fatal_error\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"usergroups.update error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"usergroups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"usergroups\"\n                ]\n            }\n        },\n        \"/usergroups.users.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"List all users in a User Group\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/usergroups.users.list\"\n                },\n                \"operationId\": \"usergroups_users_list\",\n                \"parameters\": [],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Standard success response when used with a user token\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"users\": [\n                                    \"U060R4BJ4\",\n                                    \"W123A4BC5\"\n                                ]\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from usergroups.users.list method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"users\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/defs_user_id\"\n                                    },\n                                    \"type\": \"array\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"users\"\n                            ],\n                            \"title\": \"usergroups.users.list schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Standard failure response when used with an invalid token\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from usergroups.users.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_require\",\n                                        \"fatal_error\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"usergroups.users.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"usergroups:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"usergroups.users\",\n                    \"usergroups\"\n                ]\n            }\n        },\n        \"/usergroups.users.update\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Update the list of users for a User Group\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/usergroups.users.update\"\n                },\n                \"operationId\": \"usergroups_users_update\",\n                \"parameters\": [\n                    {\n                        \"description\": \"A comma separated string of encoded user IDs that represent the entire list of users for the User Group.\",\n                        \"in\": \"formData\",\n                        \"name\": \"users\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `usergroups:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Include the number of users in the User Group.\",\n                        \"in\": \"formData\",\n                        \"name\": \"include_count\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"The encoded ID of the User Group to update.\",\n                        \"in\": \"formData\",\n                        \"name\": \"usergroup\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"usergroup\": {\n                                    \"auto_type\": null,\n                                    \"created_by\": \"U060R4BJ4\",\n                                    \"date_create\": 1447096577,\n                                    \"date_delete\": 0,\n                                    \"date_update\": 1447102109,\n                                    \"deleted_by\": null,\n                                    \"description\": \"Marketing gurus, PR experts and product advocates.\",\n                                    \"handle\": \"marketing-team\",\n                                    \"id\": \"S0616NG6M\",\n                                    \"is_external\": false,\n                                    \"is_usergroup\": true,\n                                    \"name\": \"Marketing Team\",\n                                    \"prefs\": {\n                                        \"channels\": [],\n                                        \"groups\": []\n                                    },\n                                    \"team_id\": \"T060R4BHN\",\n                                    \"updated_by\": \"U060R4BJ4\",\n                                    \"user_count\": 1,\n                                    \"users\": [\n                                        \"U060R4BJ4\",\n                                        \"U060RNRCZ\"\n                                    ]\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from usergroups.users.update method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"usergroup\": {\n                                    \"$ref\": \"#/definitions/objs_subteam\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"usergroup\"\n                            ],\n                            \"title\": \"usergroups.users.update schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from usergroups.users.update method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"permission_denied\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"user_is_restricted\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_require\",\n                                        \"fatal_error\",\n                                        \"missing_charset\",\n                                        \"superfluous_charset\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"usergroups.users.update error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"usergroups:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"usergroups.users\",\n                    \"usergroups\"\n                ]\n            }\n        },\n        \"/users.conversations\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"List conversations the calling user may access.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.conversations\"\n                },\n                \"operationId\": \"users_conversations\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more detail.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `conversations:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached. Must be an integer no larger than 1000.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Browse conversations by a specific user ID's membership. Non-public channels are restricted to those where the calling user shares membership.\",\n                        \"in\": \"query\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Set to `true` to exclude archived channels from the list\",\n                        \"in\": \"query\",\n                        \"name\": \"exclude_archived\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"Mix and match channel types by providing a comma-separated list of any combination of `public_channel`, `private_channel`, `mpim`, `im`\",\n                        \"in\": \"query\",\n                        \"name\": \"types\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response with only public channels. Note how `num_members` and `is_member` are not returned like typical `conversations` objects.\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"channels\": [\n                                    {\n                                        \"created\": 1449252889,\n                                        \"creator\": \"U012A3CDE\",\n                                        \"id\": \"C012AB3CD\",\n                                        \"is_archived\": false,\n                                        \"is_channel\": true,\n                                        \"is_ext_shared\": false,\n                                        \"is_general\": true,\n                                        \"is_group\": false,\n                                        \"is_im\": false,\n                                        \"is_mpim\": false,\n                                        \"is_org_shared\": false,\n                                        \"is_pending_ext_shared\": false,\n                                        \"is_private\": false,\n                                        \"is_shared\": false,\n                                        \"name\": \"general\",\n                                        \"name_normalized\": \"general\",\n                                        \"pending_shared\": [],\n                                        \"previous_names\": [],\n                                        \"purpose\": {\n                                            \"creator\": \"\",\n                                            \"last_set\": 0,\n                                            \"value\": \"This channel is for team-wide communication and announcements. All team members are in this channel.\"\n                                        },\n                                        \"topic\": {\n                                            \"creator\": \"\",\n                                            \"last_set\": 0,\n                                            \"value\": \"Company-wide announcements and work-based matters\"\n                                        },\n                                        \"unlinked\": 0\n                                    },\n                                    {\n                                        \"created\": 1449252889,\n                                        \"creator\": \"U061F7AUR\",\n                                        \"id\": \"C061EG9T2\",\n                                        \"is_archived\": false,\n                                        \"is_channel\": true,\n                                        \"is_ext_shared\": false,\n                                        \"is_general\": false,\n                                        \"is_group\": false,\n                                        \"is_im\": false,\n                                        \"is_mpim\": false,\n                                        \"is_org_shared\": false,\n                                        \"is_pending_ext_shared\": false,\n                                        \"is_private\": false,\n                                        \"is_shared\": false,\n                                        \"name\": \"random\",\n                                        \"name_normalized\": \"random\",\n                                        \"pending_shared\": [],\n                                        \"previous_names\": [],\n                                        \"purpose\": {\n                                            \"creator\": \"\",\n                                            \"last_set\": 0,\n                                            \"value\": \"A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you'd prefer to keep out of more focused work-related channels.\"\n                                        },\n                                        \"topic\": {\n                                            \"creator\": \"\",\n                                            \"last_set\": 0,\n                                            \"value\": \"Non-work banter and water cooler conversation\"\n                                        },\n                                        \"unlinked\": 0\n                                    }\n                                ],\n                                \"ok\": true,\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"dGVhbTpDMDYxRkE1UEI=\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": true,\n                            \"description\": \"Schema for successful response from users.conversations method. Returned conversation objects do not include `num_members` or `is_member`\",\n                            \"properties\": {\n                                \"channels\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_conversation\"\n                                    },\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"response_metadata\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"next_cursor\": {\n                                            \"type\": \"string\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"next_cursor\"\n                                    ],\n                                    \"type\": \"object\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"channels\"\n                            ],\n                            \"title\": \"users.conversations success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from users.conversations method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"method_not_supported_for_channel_type\",\n                                        \"missing_scope\",\n                                        \"invalid_types\",\n                                        \"invalid_cursor\",\n                                        \"invalid_limit\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"users.conversations error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"channels:read\",\n                            \"groups:read\",\n                            \"im:read\",\n                            \"mpim:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users\"\n                ]\n            }\n        },\n        \"/users.deletePhoto\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Delete the user profile photo\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.deletePhoto\"\n                },\n                \"operationId\": \"users_deletePhoto\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users.profile:write`\",\n                        \"in\": \"formData\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from users.deletePhoto method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"users.deletePhoto schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from users.deletePhoto method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"users.deletePhoto error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users.profile:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users\"\n                ]\n            }\n        },\n        \"/users.getPresence\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets user presence information.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.getPresence\"\n                },\n                \"operationId\": \"users_getPresence\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"User to get presence info on. Defaults to the authed user.\",\n                        \"in\": \"query\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"When requesting information for a different user, this method just returns the current presence (either `active` or `away`).\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"presence\": \"active\"\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": true,\n                            \"description\": \"Generated from users.getPresence with shasum e7251aec575d8863f9e0eb38663ae9dc26655f65\",\n                            \"properties\": {\n                                \"auto_away\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"connection_count\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"last_activity\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"manual_away\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"online\": {\n                                    \"type\": \"boolean\"\n                                },\n                                \"presence\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"presence\"\n                            ],\n                            \"title\": \"API method: users.getPresence\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": {\n                                \"type\": \"object\"\n                            },\n                            \"description\": \"Schema for error response users.getPresence method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"users.counts error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users\"\n                ]\n            }\n        },\n        \"/users.identity\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Get a user's identity.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.identity\"\n                },\n                \"operationId\": \"users_identity\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `identity.basic`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"You will receive at a minimum the following information:\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"team\": {\n                                    \"id\": \"T0G9PQBBK\"\n                                },\n                                \"user\": {\n                                    \"id\": \"U0G9QF9C6\",\n                                    \"name\": \"Sonny Whether\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Schema for successful response from users.identity method\",\n                            \"items\": [\n                                {\n                                    \"additionalProperties\": false,\n                                    \"description\": \"Schema for 'identity.basic' scope\",\n                                    \"properties\": {\n                                        \"ok\": {\n                                            \"$ref\": \"#/definitions/defs_ok_true\"\n                                        },\n                                        \"team\": {\n                                            \"additionalProperties\": false,\n                                            \"properties\": {\n                                                \"id\": {\n                                                    \"$ref\": \"#/definitions/defs_team\"\n                                                }\n                                            },\n                                            \"required\": [\n                                                \"id\"\n                                            ],\n                                            \"type\": \"object\"\n                                        },\n                                        \"user\": {\n                                            \"additionalProperties\": false,\n                                            \"properties\": {\n                                                \"id\": {\n                                                    \"$ref\": \"#/definitions/defs_user_id\"\n                                                },\n                                                \"name\": {\n                                                    \"type\": \"string\"\n                                                }\n                                            },\n                                            \"required\": [\n                                                \"name\",\n                                                \"id\"\n                                            ],\n                                            \"type\": \"object\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"ok\",\n                                        \"user\",\n                                        \"team\"\n                                    ],\n                                    \"type\": \"object\"\n                                },\n                                {\n                                    \"additionalProperties\": false,\n                                    \"description\": \"Schema for 'identity.basic,identity.email' scopes\",\n                                    \"properties\": {\n                                        \"ok\": {\n                                            \"$ref\": \"#/definitions/defs_ok_true\"\n                                        },\n                                        \"team\": {\n                                            \"additionalProperties\": false,\n                                            \"properties\": {\n                                                \"id\": {\n                                                    \"$ref\": \"#/definitions/defs_team\"\n                                                }\n                                            },\n                                            \"required\": [\n                                                \"id\"\n                                            ],\n                                            \"type\": \"object\"\n                                        },\n                                        \"user\": {\n                                            \"additionalProperties\": false,\n                                            \"properties\": {\n                                                \"email\": {\n                                                    \"format\": \"email\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"id\": {\n                                                    \"$ref\": \"#/definitions/defs_user_id\"\n                                                },\n                                                \"name\": {\n                                                    \"type\": \"string\"\n                                                }\n                                            },\n                                            \"required\": [\n                                                \"name\",\n                                                \"id\",\n                                                \"email\"\n                                            ],\n                                            \"type\": \"object\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"ok\",\n                                        \"user\",\n                                        \"team\"\n                                    ],\n                                    \"type\": \"object\"\n                                },\n                                {\n                                    \"additionalProperties\": false,\n                                    \"description\": \"Schema for 'identity.basic,identity.avatar' scopes\",\n                                    \"properties\": {\n                                        \"ok\": {\n                                            \"$ref\": \"#/definitions/defs_ok_true\"\n                                        },\n                                        \"team\": {\n                                            \"additionalProperties\": false,\n                                            \"properties\": {\n                                                \"id\": {\n                                                    \"$ref\": \"#/definitions/defs_team\"\n                                                }\n                                            },\n                                            \"required\": [\n                                                \"id\"\n                                            ],\n                                            \"type\": \"object\"\n                                        },\n                                        \"user\": {\n                                            \"additionalProperties\": false,\n                                            \"properties\": {\n                                                \"id\": {\n                                                    \"$ref\": \"#/definitions/defs_user_id\"\n                                                },\n                                                \"image_192\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_24\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_32\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_48\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_512\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_72\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"name\": {\n                                                    \"type\": \"string\"\n                                                }\n                                            },\n                                            \"required\": [\n                                                \"name\",\n                                                \"id\",\n                                                \"image_24\",\n                                                \"image_32\",\n                                                \"image_48\",\n                                                \"image_72\",\n                                                \"image_192\",\n                                                \"image_512\"\n                                            ],\n                                            \"type\": \"object\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"ok\",\n                                        \"user\",\n                                        \"team\"\n                                    ],\n                                    \"type\": \"object\"\n                                },\n                                {\n                                    \"additionalProperties\": false,\n                                    \"description\": \"Schema for 'identity.basic,identity.team' scopes\",\n                                    \"properties\": {\n                                        \"ok\": {\n                                            \"$ref\": \"#/definitions/defs_ok_true\"\n                                        },\n                                        \"team\": {\n                                            \"additionalProperties\": false,\n                                            \"properties\": {\n                                                \"domain\": {\n                                                    \"type\": \"string\"\n                                                },\n                                                \"id\": {\n                                                    \"$ref\": \"#/definitions/defs_team\"\n                                                },\n                                                \"image_102\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_132\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_230\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_34\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_44\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_68\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_88\": {\n                                                    \"format\": \"url\",\n                                                    \"type\": \"string\"\n                                                },\n                                                \"image_default\": {\n                                                    \"type\": \"boolean\"\n                                                },\n                                                \"name\": {\n                                                    \"type\": \"string\"\n                                                }\n                                            },\n                                            \"required\": [\n                                                \"id\",\n                                                \"name\",\n                                                \"domain\",\n                                                \"image_34\",\n                                                \"image_44\",\n                                                \"image_68\",\n                                                \"image_88\",\n                                                \"image_102\",\n                                                \"image_132\",\n                                                \"image_230\",\n                                                \"image_default\"\n                                            ],\n                                            \"type\": \"object\"\n                                        },\n                                        \"user\": {\n                                            \"additionalProperties\": false,\n                                            \"properties\": {\n                                                \"id\": {\n                                                    \"$ref\": \"#/definitions/defs_user_id\"\n                                                },\n                                                \"name\": {\n                                                    \"type\": \"string\"\n                                                }\n                                            },\n                                            \"required\": [\n                                                \"name\",\n                                                \"id\"\n                                            ],\n                                            \"type\": \"object\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"ok\",\n                                        \"user\",\n                                        \"team\"\n                                    ],\n                                    \"type\": \"object\"\n                                }\n                            ],\n                            \"title\": \"users.identity schema\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"account_inactive\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from users.identity method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"users.identity error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"identity.basic\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users\"\n                ]\n            }\n        },\n        \"/users.info\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Gets information about a user.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.info\"\n                },\n                \"operationId\": \"users_info\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"User to get info on\",\n                        \"in\": \"query\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Set this to `true` to receive the locale for this user. Defaults to `false`\",\n                        \"in\": \"query\",\n                        \"name\": \"include_locale\",\n                        \"type\": \"boolean\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"user\": {\n                                    \"color\": \"9f69e7\",\n                                    \"deleted\": false,\n                                    \"has_2fa\": false,\n                                    \"id\": \"W012A3CDE\",\n                                    \"is_admin\": true,\n                                    \"is_app_user\": false,\n                                    \"is_bot\": false,\n                                    \"is_owner\": false,\n                                    \"is_primary_owner\": false,\n                                    \"is_restricted\": false,\n                                    \"is_ultra_restricted\": false,\n                                    \"name\": \"spengler\",\n                                    \"profile\": {\n                                        \"avatar_hash\": \"ge3b51ca72de\",\n                                        \"display_name\": \"spengler\",\n                                        \"display_name_normalized\": \"spengler\",\n                                        \"email\": \"spengler@ghostbusters.example.com\",\n                                        \"image_192\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"image_24\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"image_32\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"image_48\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"image_512\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"image_72\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"image_original\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"real_name\": \"Egon Spengler\",\n                                        \"real_name_normalized\": \"Egon Spengler\",\n                                        \"status_emoji\": \":books:\",\n                                        \"status_text\": \"Print is dead\",\n                                        \"team\": \"T012AB3C4\"\n                                    },\n                                    \"real_name\": \"Egon Spengler\",\n                                    \"team_id\": \"T012AB3C4\",\n                                    \"tz\": \"America/Los_Angeles\",\n                                    \"tz_label\": \"Pacific Daylight Time\",\n                                    \"tz_offset\": -25200,\n                                    \"updated\": 1502138686\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": true,\n                            \"description\": \"Schema for successful response from users.info method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"user\": {\n                                    \"$ref\": \"#/definitions/objs_user\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"user\"\n                            ],\n                            \"title\": \"users.info success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"user_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from users.info method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"user_not_found\",\n                                        \"user_not_visible\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"users.info error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users\"\n                ]\n            }\n        },\n        \"/users.list\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Lists all users in a Slack team.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.list\"\n                },\n                \"operationId\": \"users_list\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first \\\"page\\\" of the collection. See [pagination](/docs/pagination) for more detail.\",\n                        \"in\": \"query\",\n                        \"name\": \"cursor\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.\",\n                        \"in\": \"query\",\n                        \"name\": \"limit\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Set this to `true` to receive the locale for users. Defaults to `false`\",\n                        \"in\": \"query\",\n                        \"name\": \"include_locale\",\n                        \"type\": \"boolean\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"cache_ts\": 1498777272,\n                                \"members\": [\n                                    {\n                                        \"color\": \"9f69e7\",\n                                        \"deleted\": false,\n                                        \"has_2fa\": false,\n                                        \"id\": \"W012A3CDE\",\n                                        \"is_admin\": true,\n                                        \"is_app_user\": false,\n                                        \"is_bot\": false,\n                                        \"is_owner\": false,\n                                        \"is_primary_owner\": false,\n                                        \"is_restricted\": false,\n                                        \"is_ultra_restricted\": false,\n                                        \"name\": \"spengler\",\n                                        \"profile\": {\n                                            \"avatar_hash\": \"ge3b51ca72de\",\n                                            \"display_name\": \"spengler\",\n                                            \"display_name_normalized\": \"spengler\",\n                                            \"email\": \"spengler@ghostbusters.example.com\",\n                                            \"image_192\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                            \"image_24\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                            \"image_32\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                            \"image_48\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                            \"image_512\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                            \"image_72\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                            \"real_name\": \"Egon Spengler\",\n                                            \"real_name_normalized\": \"Egon Spengler\",\n                                            \"status_emoji\": \":books:\",\n                                            \"status_text\": \"Print is dead\",\n                                            \"team\": \"T012AB3C4\"\n                                        },\n                                        \"real_name\": \"spengler\",\n                                        \"team_id\": \"T012AB3C4\",\n                                        \"tz\": \"America/Los_Angeles\",\n                                        \"tz_label\": \"Pacific Daylight Time\",\n                                        \"tz_offset\": -25200,\n                                        \"updated\": 1502138686\n                                    },\n                                    {\n                                        \"color\": \"9f69e7\",\n                                        \"deleted\": false,\n                                        \"has_2fa\": false,\n                                        \"id\": \"W07QCRPA4\",\n                                        \"is_admin\": true,\n                                        \"is_bot\": false,\n                                        \"is_owner\": false,\n                                        \"is_primary_owner\": false,\n                                        \"is_restricted\": false,\n                                        \"is_ultra_restricted\": false,\n                                        \"name\": \"glinda\",\n                                        \"profile\": {\n                                            \"avatar_hash\": \"8fbdd10b41c6\",\n                                            \"display_name\": \"Glinda the Fairly Good\",\n                                            \"display_name_normalized\": \"Glinda the Fairly Good\",\n                                            \"email\": \"glenda@south.oz.coven\",\n                                            \"first_name\": \"Glinda\",\n                                            \"image_1024\": \"https://a.slack-edge.com...png\",\n                                            \"image_192\": \"https://a.slack-edge.com...png\",\n                                            \"image_24\": \"https://a.slack-edge.com...png\",\n                                            \"image_32\": \"https://a.slack-edge.com...png\",\n                                            \"image_48\": \"https://a.slack-edge.com...png\",\n                                            \"image_512\": \"https://a.slack-edge.com...png\",\n                                            \"image_72\": \"https://a.slack-edge.com...png\",\n                                            \"image_original\": \"https://a.slack-edge.com...png\",\n                                            \"last_name\": \"Southgood\",\n                                            \"phone\": \"\",\n                                            \"real_name\": \"Glinda Southgood\",\n                                            \"real_name_normalized\": \"Glinda Southgood\",\n                                            \"skype\": \"\",\n                                            \"title\": \"Glinda the Good\"\n                                        },\n                                        \"real_name\": \"Glinda Southgood\",\n                                        \"team_id\": \"T0G9PQBBK\",\n                                        \"tz\": \"America/Los_Angeles\",\n                                        \"tz_label\": \"Pacific Daylight Time\",\n                                        \"tz_offset\": -25200,\n                                        \"updated\": 1480527098\n                                    }\n                                ],\n                                \"ok\": true,\n                                \"response_metadata\": {\n                                    \"next_cursor\": \"dXNlcjpVMEc5V0ZYTlo=\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from users.list method\",\n                            \"properties\": {\n                                \"cache_ts\": {\n                                    \"type\": \"integer\"\n                                },\n                                \"members\": {\n                                    \"items\": {\n                                        \"$ref\": \"#/definitions/objs_user\"\n                                    },\n                                    \"minItems\": 1,\n                                    \"type\": \"array\",\n                                    \"uniqueItems\": true\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"response_metadata\": {\n                                    \"$ref\": \"#/definitions/objs_response_metadata\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"members\",\n                                \"cache_ts\"\n                            ],\n                            \"title\": \"users.list schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_cursor\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from users.list method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"limit_required\",\n                                        \"invalid_cursor\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"users.list error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users\"\n                ]\n            }\n        },\n        \"/users.lookupByEmail\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Find a user with an email address.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.lookupByEmail\"\n                },\n                \"operationId\": \"users_lookupByEmail\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users:read.email`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"An email address belonging to a user in the workspace\",\n                        \"in\": \"query\",\n                        \"name\": \"email\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"user\": {\n                                    \"color\": \"9f69e7\",\n                                    \"deleted\": false,\n                                    \"has_2fa\": false,\n                                    \"id\": \"W012A3CDE\",\n                                    \"is_admin\": true,\n                                    \"is_app_user\": false,\n                                    \"is_bot\": false,\n                                    \"is_owner\": false,\n                                    \"is_primary_owner\": false,\n                                    \"is_restricted\": false,\n                                    \"is_ultra_restricted\": false,\n                                    \"name\": \"spengler\",\n                                    \"profile\": {\n                                        \"avatar_hash\": \"ge3b51ca72de\",\n                                        \"display_name\": \"spengler\",\n                                        \"display_name_normalized\": \"spengler\",\n                                        \"email\": \"spengler@ghostbusters.example.com\",\n                                        \"image_192\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"image_24\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"image_32\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"image_48\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"image_512\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"image_72\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                        \"real_name\": \"Egon Spengler\",\n                                        \"real_name_normalized\": \"Egon Spengler\",\n                                        \"status_emoji\": \":books:\",\n                                        \"status_text\": \"Print is dead\",\n                                        \"team\": \"T012AB3C4\"\n                                    },\n                                    \"real_name\": \"Egon Spengler\",\n                                    \"team_id\": \"T012AB3C4\",\n                                    \"tz\": \"America/Los_Angeles\",\n                                    \"tz_label\": \"Pacific Daylight Time\",\n                                    \"tz_offset\": -25200,\n                                    \"updated\": 1502138686\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": true,\n                            \"description\": \"Schema for successful response from users.lookupByEmail method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"user\": {\n                                    \"$ref\": \"#/definitions/objs_user\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"user\"\n                            ],\n                            \"title\": \"users.lookupByEmail success schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"users_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from users.lookupByEmail method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"users_not_found\",\n                                        \"enterprise_is_restricted\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"no_permission\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"users.lookupByEmail error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users:read.email\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users\"\n                ]\n            }\n        },\n        \"/users.profile.get\": {\n            \"get\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Retrieves a user's profile information.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.profile.get\"\n                },\n                \"operationId\": \"users_profile_get\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users.profile:read`\",\n                        \"in\": \"query\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Include labels for each ID in custom profile fields\",\n                        \"in\": \"query\",\n                        \"name\": \"include_labels\",\n                        \"type\": \"boolean\"\n                    },\n                    {\n                        \"description\": \"User to retrieve profile info for\",\n                        \"in\": \"query\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"profile\": {\n                                    \"avatar_hash\": \"ge3b51ca72de\",\n                                    \"display_name\": \"spengler\",\n                                    \"display_name_normalized\": \"spengler\",\n                                    \"email\": \"spengler@ghostbusters.example.com\",\n                                    \"image_192\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"image_24\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"image_32\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"image_48\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"image_512\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"image_72\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"image_original\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"real_name\": \"Egon Spengler\",\n                                    \"real_name_normalized\": \"Egon Spengler\",\n                                    \"status_emoji\": \":books:\",\n                                    \"status_expiration\": 0,\n                                    \"status_text\": \"Print is dead\",\n                                    \"team\": \"T012AB3C4\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from users.profile.get method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"profile\": {\n                                    \"$ref\": \"#/definitions/objs_user_profile\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"profile\"\n                            ],\n                            \"title\": \"users.profile.get schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"user_not_found\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from users.profile.get method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"user_not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"users.profile.get error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users.profile:read\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users.profile\",\n                    \"users\"\n                ]\n            }\n        },\n        \"/users.profile.set\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Set the profile information for a user.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.profile.set\"\n                },\n                \"operationId\": \"users_profile_set\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Collection of key:value pairs presented as a URL-encoded JSON hash. At most 50 fields may be set. Each field name is limited to 255 characters.\",\n                        \"in\": \"formData\",\n                        \"name\": \"profile\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users.profile:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"ID of user to change. This argument may only be specified by team admins on paid teams.\",\n                        \"in\": \"formData\",\n                        \"name\": \"user\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Value to set a single key to. Usable only if `profile` is not passed.\",\n                        \"in\": \"formData\",\n                        \"name\": \"value\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Name of a single key to set. Usable only if `profile` is not passed.\",\n                        \"in\": \"formData\",\n                        \"name\": \"name\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true,\n                                \"profile\": {\n                                    \"avatar_hash\": \"ge3b51ca72de\",\n                                    \"display_name\": \"spengler\",\n                                    \"display_name_normalized\": \"spengler\",\n                                    \"email\": \"spengler@ghostbusters.example.com\",\n                                    \"image_192\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"image_24\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"image_32\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"image_48\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"image_512\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"image_72\": \"https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg\",\n                                    \"real_name\": \"Egon Spengler\",\n                                    \"real_name_normalized\": \"Egon Spengler\",\n                                    \"status_emoji\": \":books:\",\n                                    \"status_expiration\": 0,\n                                    \"status_text\": \"Print is dead\",\n                                    \"team\": \"T012AB3C4\"\n                                }\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from users.profile.set method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"profile\": {\n                                    \"$ref\": \"#/definitions/objs_user_profile\"\n                                },\n                                \"username\": {\n                                    \"type\": \"string\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"username\",\n                                \"profile\"\n                            ],\n                            \"title\": \"users.profile.set schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_profile\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from users.profile.set method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"reserved_name\",\n                                        \"invalid_profile\",\n                                        \"profile_set_failed\",\n                                        \"not_admin\",\n                                        \"not_app_admin\",\n                                        \"cannot_update_admin_user\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"users.profile.set error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users.profile:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users.profile\",\n                    \"users\"\n                ]\n            }\n        },\n        \"/users.setActive\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Marked a user as active. Deprecated and non-functional.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.setActive\"\n                },\n                \"operationId\": \"users_setActive\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default success template\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"description\": \"Verbose schema not yet ready for this method.\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"Default error template\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users\"\n                ]\n            }\n        },\n        \"/users.setPhoto\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\"\n                ],\n                \"description\": \"Set the user profile photo\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.setPhoto\"\n                },\n                \"operationId\": \"users_setPhoto\",\n                \"parameters\": [\n                    {\n                        \"description\": \"File contents via `multipart/form-data`.\",\n                        \"in\": \"formData\",\n                        \"name\": \"image\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Width/height of crop box (always square)\",\n                        \"in\": \"formData\",\n                        \"name\": \"crop_w\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users.profile:write`\",\n                        \"in\": \"formData\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Y coordinate of top-left corner of crop box\",\n                        \"in\": \"formData\",\n                        \"name\": \"crop_y\",\n                        \"type\": \"integer\"\n                    },\n                    {\n                        \"description\": \"X coordinate of top-left corner of crop box\",\n                        \"in\": \"formData\",\n                        \"name\": \"crop_x\",\n                        \"type\": \"integer\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from users.setPhoto method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                },\n                                \"profile\": {\n                                    \"additionalProperties\": false,\n                                    \"properties\": {\n                                        \"avatar_hash\": {\n                                            \"pattern\": \"^[0-9a-f]{12}$\",\n                                            \"type\": \"string\"\n                                        },\n                                        \"image_1024\": {\n                                            \"format\": \"uri\",\n                                            \"type\": \"string\"\n                                        },\n                                        \"image_192\": {\n                                            \"format\": \"uri\",\n                                            \"type\": \"string\"\n                                        },\n                                        \"image_24\": {\n                                            \"format\": \"uri\",\n                                            \"type\": \"string\"\n                                        },\n                                        \"image_32\": {\n                                            \"format\": \"uri\",\n                                            \"type\": \"string\"\n                                        },\n                                        \"image_48\": {\n                                            \"format\": \"uri\",\n                                            \"type\": \"string\"\n                                        },\n                                        \"image_512\": {\n                                            \"format\": \"uri\",\n                                            \"type\": \"string\"\n                                        },\n                                        \"image_72\": {\n                                            \"format\": \"uri\",\n                                            \"type\": \"string\"\n                                        },\n                                        \"image_original\": {\n                                            \"format\": \"uri\",\n                                            \"type\": \"string\"\n                                        }\n                                    },\n                                    \"required\": [\n                                        \"image_24\",\n                                        \"image_32\",\n                                        \"image_48\",\n                                        \"image_72\",\n                                        \"image_192\",\n                                        \"image_512\",\n                                        \"image_1024\",\n                                        \"image_original\",\n                                        \"avatar_hash\"\n                                    ],\n                                    \"type\": \"object\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"profile\"\n                            ],\n                            \"title\": \"users.setPhoto schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from users.setPhoto method\",\n                            \"properties\": {\n                                \"debug_step\": {\n                                    \"description\": \"possibly DEV/QA only\",\n                                    \"type\": \"string\"\n                                },\n                                \"dims\": {\n                                    \"description\": \"possibly DEV/QA only\",\n                                    \"type\": \"string\"\n                                },\n                                \"error\": {\n                                    \"enum\": [\n                                        \"bad_image\",\n                                        \"too_large\",\n                                        \"too_many_frames\",\n                                        \"not_found\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"user_is_bot\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                },\n                                \"time_ident\": {\n                                    \"description\": \"possibly DEV/QA only\",\n                                    \"type\": \"integer\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"users.setPhoto error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users.profile:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users\"\n                ]\n            }\n        },\n        \"/users.setPresence\": {\n            \"post\": {\n                \"consumes\": [\n                    \"application/x-www-form-urlencoded\",\n                    \"application/json\"\n                ],\n                \"description\": \"Manually sets user presence.\",\n                \"externalDocs\": {\n                    \"description\": \"API method documentation\",\n                    \"url\": \"https://api.slack.com/methods/users.setPresence\"\n                },\n                \"operationId\": \"users_setPresence\",\n                \"parameters\": [\n                    {\n                        \"description\": \"Authentication token. Requires scope: `users:write`\",\n                        \"in\": \"header\",\n                        \"name\": \"token\",\n                        \"type\": \"string\"\n                    },\n                    {\n                        \"description\": \"Either `auto` or `away`\",\n                        \"in\": \"formData\",\n                        \"name\": \"presence\",\n                        \"type\": \"string\"\n                    }\n                ],\n                \"produces\": [\n                    \"application/json\"\n                ],\n                \"responses\": {\n                    \"200\": {\n                        \"description\": \"Typical success response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"ok\": true\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for successful response from users.setPresence method\",\n                            \"properties\": {\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_true\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\"\n                            ],\n                            \"title\": \"users.setPresence schema\",\n                            \"type\": \"object\"\n                        }\n                    },\n                    \"default\": {\n                        \"description\": \"Typical error response\",\n                        \"examples\": {\n                            \"application/json\": {\n                                \"error\": \"invalid_auth\",\n                                \"ok\": false\n                            }\n                        },\n                        \"schema\": {\n                            \"additionalProperties\": false,\n                            \"description\": \"Schema for error response from users.setPresence method\",\n                            \"properties\": {\n                                \"error\": {\n                                    \"enum\": [\n                                        \"invalid_presence\",\n                                        \"not_authed\",\n                                        \"invalid_auth\",\n                                        \"account_inactive\",\n                                        \"token_revoked\",\n                                        \"no_permission\",\n                                        \"org_login_required\",\n                                        \"invalid_arg_name\",\n                                        \"invalid_array_arg\",\n                                        \"invalid_charset\",\n                                        \"invalid_form_data\",\n                                        \"invalid_post_type\",\n                                        \"missing_post_type\",\n                                        \"team_added_to_org\",\n                                        \"invalid_json\",\n                                        \"json_not_object\",\n                                        \"request_timeout\",\n                                        \"upgrade_required\",\n                                        \"fatal_error\"\n                                    ],\n                                    \"type\": \"string\"\n                                },\n                                \"ok\": {\n                                    \"$ref\": \"#/definitions/defs_ok_false\"\n                                }\n                            },\n                            \"required\": [\n                                \"ok\",\n                                \"error\"\n                            ],\n                            \"title\": \"users.setPresence error schema\",\n                            \"type\": \"object\"\n                        }\n                    }\n                },\n                \"security\": [\n                    {\n                        \"slackAuth\": [\n                            \"users:write\"\n                        ]\n                    }\n                ],\n                \"tags\": [\n                    \"users\"\n                ]\n            }\n        }\n    },\n    \"schemes\": [\n        \"https\"\n    ],\n    \"securityDefinitions\": {\n        \"slackAuth\": {\n            \"authorizationUrl\": \"https://slack.com/oauth/authorize\",\n            \"flow\": \"accessCode\",\n            \"scopes\": {\n                \"admin\": \"admin\",\n                \"admin.users:write\": \"admin.users:write\",\n                \"bot\": \"Bot user scope\",\n                \"channels:history\": \"channels:history\",\n                \"channels:read\": \"channels:read\",\n                \"channels:write\": \"channels:write\",\n                \"chat:write\": \"chat:write\",\n                \"chat:write:bot\": \"Author messages as a bot\",\n                \"chat:write:user\": \"chat:write:user\",\n                \"conversations:history\": \"conversations:history\",\n                \"conversations:read\": \"conversations:read\",\n                \"conversations:write\": \"conversations:write\",\n                \"dnd:read\": \"dnd:read\",\n                \"dnd:write\": \"dnd:write\",\n                \"emoji:read\": \"emoji:read\",\n                \"files:read\": \"files:read\",\n                \"files:write:user\": \"files:write:user\",\n                \"groups:history\": \"groups:history\",\n                \"groups:read\": \"groups:read\",\n                \"groups:write\": \"groups:write\",\n                \"identity.basic\": \"identity.basic\",\n                \"im:history\": \"im:history\",\n                \"im:read\": \"im:read\",\n                \"im:write\": \"im:write\",\n                \"links:write\": \"links:write\",\n                \"mpim:history\": \"mpim:history\",\n                \"mpim:read\": \"mpim:read\",\n                \"mpim:write\": \"mpim:write\",\n                \"none\": \"No scope required\",\n                \"pins:read\": \"pins:read\",\n                \"pins:write\": \"pins:write\",\n                \"reactions:read\": \"reactions:read\",\n                \"reactions:write\": \"reactions:write\",\n                \"reminders:read\": \"reminders:read\",\n                \"reminders:write\": \"reminders:write\",\n                \"rtm:stream\": \"rtm:stream\",\n                \"search:read\": \"search:read\",\n                \"stars:read\": \"stars:read\",\n                \"stars:write\": \"stars:write\",\n                \"team:read\": \"team:read\",\n                \"tokens.basic\": \"tokens.basic\",\n                \"usergroups:read\": \"usergroups:read\",\n                \"usergroups:write\": \"usergroups:write\",\n                \"users.profile:read\": \"users.profile:read\",\n                \"users.profile:write\": \"users.profile:write\",\n                \"users:read\": \"users:read\",\n                \"users:read.email\": \"users:read.email\",\n                \"users:write\": \"users:write\"\n            },\n            \"tokenUrl\": \"https://slack.com/api/oauth.access\",\n            \"type\": \"oauth2\"\n        }\n    },\n    \"swagger\": \"2.0\"\n}"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/swashbuckle.json",
    "content": "{\"swagger\":\"2.0\",\"info\":{\"version\":\"v1\",\"title\":\"Test Controllers for SwaggerProvider\"},\"host\":\"localhost:8735\",\"schemes\":[\"http\"],\"paths\":{\"/api/ResourceStringString/{key}\":{\"get\":{\"tags\":[\"ResourceStringString\"],\"operationId\":\"ResourceStringString_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"key\",\"in\":\"path\",\"required\":true,\"type\":\"string\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"string\"}}}},\"put\":{\"tags\":[\"ResourceStringString\"],\"operationId\":\"ResourceStringString_Put\",\"consumes\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\",\"application/x-www-form-urlencoded\"],\"produces\":[],\"parameters\":[{\"name\":\"key\",\"in\":\"path\",\"required\":true,\"type\":\"string\"},{\"name\":\"value\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"204\":{\"description\":\"No Content\"}}},\"post\":{\"tags\":[\"ResourceStringString\"],\"operationId\":\"ResourceStringString_Post\",\"consumes\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\",\"application/x-www-form-urlencoded\"],\"produces\":[],\"parameters\":[{\"name\":\"key\",\"in\":\"path\",\"required\":true,\"type\":\"string\"},{\"name\":\"value\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"204\":{\"description\":\"No Content\"}}},\"delete\":{\"tags\":[\"ResourceStringString\"],\"operationId\":\"ResourceStringString_Delete\",\"consumes\":[],\"produces\":[],\"parameters\":[{\"name\":\"key\",\"in\":\"path\",\"required\":true,\"type\":\"string\"}],\"responses\":{\"204\":{\"description\":\"No Content\"}}}},\"/api/ReturnArrayEnum\":{\"get\":{\"tags\":[\"ReturnArrayEnum\"],\"operationId\":\"ReturnArrayEnum_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"enum\":[0,1,2],\"type\":\"integer\"}}}}},\"post\":{\"tags\":[\"ReturnArrayEnum\"],\"operationId\":\"ReturnArrayEnum_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"enum\":[0,1,2],\"type\":\"integer\"}}}}}},\"/api/ReturnArrayInt\":{\"get\":{\"tags\":[\"ReturnArrayInt\"],\"operationId\":\"ReturnArrayInt_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}},\"post\":{\"tags\":[\"ReturnArrayInt\"],\"operationId\":\"ReturnArrayInt_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}}},\"/api/ReturnBoolean\":{\"get\":{\"tags\":[\"ReturnBoolean\"],\"operationId\":\"ReturnBoolean_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"boolean\"}}}},\"post\":{\"tags\":[\"ReturnBoolean\"],\"operationId\":\"ReturnBoolean_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"boolean\"}}}}},\"/api/ReturnDateTime\":{\"get\":{\"tags\":[\"ReturnDateTime\"],\"operationId\":\"ReturnDateTime_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"date-time\",\"type\":\"string\"}}}},\"post\":{\"tags\":[\"ReturnDateTime\"],\"operationId\":\"ReturnDateTime_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"date-time\",\"type\":\"string\"}}}}},\"/api/ReturnDouble\":{\"get\":{\"tags\":[\"ReturnDouble\"],\"operationId\":\"ReturnDouble_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"double\",\"type\":\"number\"}}}},\"post\":{\"tags\":[\"ReturnDouble\"],\"operationId\":\"ReturnDouble_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"double\",\"type\":\"number\"}}}}},\"/api/ReturnEnum\":{\"get\":{\"tags\":[\"ReturnEnum\"],\"operationId\":\"ReturnEnum_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int32\",\"enum\":[0,1,2],\"type\":\"integer\"}}}},\"post\":{\"tags\":[\"ReturnEnum\"],\"operationId\":\"ReturnEnum_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int32\",\"enum\":[0,1,2],\"type\":\"integer\"}}}}},\"/api/ReturnFileDescription\":{\"get\":{\"tags\":[\"ReturnFileDescription\"],\"operationId\":\"ReturnFileDescription_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"$ref\":\"#/definitions/FileDescription\"}}}},\"post\":{\"tags\":[\"ReturnFileDescription\"],\"operationId\":\"ReturnFileDescription_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"$ref\":\"#/definitions/FileDescription\"}}}}},\"/api/ReturnFloat\":{\"get\":{\"tags\":[\"ReturnFloat\"],\"operationId\":\"ReturnFloat_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"float\",\"type\":\"number\"}}}},\"post\":{\"tags\":[\"ReturnFloat\"],\"operationId\":\"ReturnFloat_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"float\",\"type\":\"number\"}}}}},\"/api/ReturnInt32\":{\"get\":{\"tags\":[\"ReturnInt32\"],\"operationId\":\"ReturnInt32_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int32\",\"type\":\"integer\"}}}},\"post\":{\"tags\":[\"ReturnInt32\"],\"operationId\":\"ReturnInt32_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int32\",\"type\":\"integer\"}}}}},\"/api/ReturnInt64\":{\"get\":{\"tags\":[\"ReturnInt64\"],\"operationId\":\"ReturnInt64_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int64\",\"type\":\"integer\"}}}},\"post\":{\"tags\":[\"ReturnInt64\"],\"operationId\":\"ReturnInt64_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int64\",\"type\":\"integer\"}}}}},\"/api/ReturnListInt\":{\"get\":{\"tags\":[\"ReturnListInt\"],\"operationId\":\"ReturnListInt_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}},\"post\":{\"tags\":[\"ReturnListInt\"],\"operationId\":\"ReturnListInt_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}}},\"/api/ReturnObjectPointClass\":{\"get\":{\"tags\":[\"ReturnObjectPointClass\"],\"operationId\":\"ReturnObjectPointClass_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"$ref\":\"#/definitions/PointClass\"}}}},\"post\":{\"tags\":[\"ReturnObjectPointClass\"],\"operationId\":\"ReturnObjectPointClass_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"$ref\":\"#/definitions/PointClass\"}}}}},\"/api/ReturnSeqInt\":{\"get\":{\"tags\":[\"ReturnSeqInt\"],\"operationId\":\"ReturnSeqInt_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}},\"post\":{\"tags\":[\"ReturnSeqInt\"],\"operationId\":\"ReturnSeqInt_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}}},\"/api/ReturnString\":{\"get\":{\"tags\":[\"ReturnString\"],\"operationId\":\"ReturnString_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"string\"}}}},\"post\":{\"tags\":[\"ReturnString\"],\"operationId\":\"ReturnString_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"string\"}}}}},\"/api/UpdateArrayEnum\":{\"get\":{\"tags\":[\"UpdateArrayEnum\"],\"operationId\":\"UpdateArrayEnum_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"array\",\"items\":{\"type\":\"integer\",\"format\":\"int32\",\"enum\":[0,1,2]},\"collectionFormat\":\"multi\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"enum\":[0,1,2],\"type\":\"integer\"}}}}},\"post\":{\"tags\":[\"UpdateArrayEnum\"],\"operationId\":\"UpdateArrayEnum_Post\",\"consumes\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\",\"application/x-www-form-urlencoded\"],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"enum\":[0,1,2],\"type\":\"integer\"}}}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"enum\":[0,1,2],\"type\":\"integer\"}}}}}},\"/api/UpdateArrayInt\":{\"get\":{\"tags\":[\"UpdateArrayInt\"],\"operationId\":\"UpdateArrayInt_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"array\",\"items\":{\"type\":\"integer\",\"format\":\"int32\"},\"collectionFormat\":\"multi\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}},\"post\":{\"tags\":[\"UpdateArrayInt\"],\"operationId\":\"UpdateArrayInt_Post\",\"consumes\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\",\"application/x-www-form-urlencoded\"],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}}},\"/api/UpdateBool\":{\"get\":{\"tags\":[\"UpdateBool\"],\"operationId\":\"UpdateBool_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"boolean\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"boolean\"}}}},\"post\":{\"tags\":[\"UpdateBool\"],\"operationId\":\"UpdateBool_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"boolean\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"boolean\"}}}}},\"/api/UpdateDateTime\":{\"get\":{\"tags\":[\"UpdateDateTime\"],\"operationId\":\"UpdateDateTime_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"string\",\"format\":\"date-time\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"date-time\",\"type\":\"string\"}}}},\"post\":{\"tags\":[\"UpdateDateTime\"],\"operationId\":\"UpdateDateTime_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"string\",\"format\":\"date-time\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"date-time\",\"type\":\"string\"}}}}},\"/api/UpdateDouble\":{\"get\":{\"tags\":[\"UpdateDouble\"],\"operationId\":\"UpdateDouble_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"number\",\"format\":\"double\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"double\",\"type\":\"number\"}}}},\"post\":{\"tags\":[\"UpdateDouble\"],\"operationId\":\"UpdateDouble_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"number\",\"format\":\"double\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"double\",\"type\":\"number\"}}}}},\"/api/UpdateEnum\":{\"get\":{\"tags\":[\"UpdateEnum\"],\"operationId\":\"UpdateEnum_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"integer\",\"format\":\"int32\",\"enum\":[0,1,2]}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int32\",\"enum\":[0,1,2],\"type\":\"integer\"}}}},\"post\":{\"tags\":[\"UpdateEnum\"],\"operationId\":\"UpdateEnum_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"integer\",\"format\":\"int32\",\"enum\":[0,1,2]}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int32\",\"enum\":[0,1,2],\"type\":\"integer\"}}}}},\"/api/UpdateFloat\":{\"get\":{\"tags\":[\"UpdateFloat\"],\"operationId\":\"UpdateFloat_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"number\",\"format\":\"float\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"float\",\"type\":\"number\"}}}},\"post\":{\"tags\":[\"UpdateFloat\"],\"operationId\":\"UpdateFloat_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"number\",\"format\":\"float\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"float\",\"type\":\"number\"}}}}},\"/api/UpdateInt32\":{\"get\":{\"tags\":[\"UpdateInt32\"],\"operationId\":\"UpdateInt32_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"integer\",\"format\":\"int32\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int32\",\"type\":\"integer\"}}}},\"post\":{\"tags\":[\"UpdateInt32\"],\"operationId\":\"UpdateInt32_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"integer\",\"format\":\"int32\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int32\",\"type\":\"integer\"}}}}},\"/api/UpdateInt64\":{\"get\":{\"tags\":[\"UpdateInt64\"],\"operationId\":\"UpdateInt64_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"integer\",\"format\":\"int64\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int64\",\"type\":\"integer\"}}}},\"post\":{\"tags\":[\"UpdateInt64\"],\"operationId\":\"UpdateInt64_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"integer\",\"format\":\"int64\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int64\",\"type\":\"integer\"}}}}},\"/api/UpdateListInt\":{\"get\":{\"tags\":[\"UpdateListInt\"],\"operationId\":\"UpdateListInt_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"array\",\"items\":{\"type\":\"integer\",\"format\":\"int32\"},\"collectionFormat\":\"multi\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}},\"post\":{\"tags\":[\"UpdateListInt\"],\"operationId\":\"UpdateListInt_Post\",\"consumes\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\",\"application/x-www-form-urlencoded\"],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}}},\"/api/UpdateObjectFileDescriptionClass\":{\"get\":{\"tags\":[\"UpdateObjectFileDescriptionClass\"],\"operationId\":\"UpdateObjectFileDescriptionClass_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"string\",\"format\":\"byte\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"$ref\":\"#/definitions/FileDescription\"}}}},\"post\":{\"tags\":[\"UpdateObjectFileDescriptionClass\"],\"operationId\":\"UpdateObjectFileDescriptionClass_Post\",\"consumes\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\",\"application/x-www-form-urlencoded\"],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"body\",\"required\":true,\"schema\":{\"$ref\":\"#/definitions/FileDescription\"}}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"$ref\":\"#/definitions/FileDescription\"}}}}},\"/api/UpdateObjectPointClass\":{\"get\":{\"tags\":[\"UpdateObjectPointClass\"],\"operationId\":\"UpdateObjectPointClass_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x.x\",\"in\":\"query\",\"required\":false,\"type\":\"integer\",\"format\":\"int32\"},{\"name\":\"x.y\",\"in\":\"query\",\"required\":false,\"type\":\"integer\",\"format\":\"int32\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"$ref\":\"#/definitions/PointClass\"}}}},\"post\":{\"tags\":[\"UpdateObjectPointClass\"],\"operationId\":\"UpdateObjectPointClass_Post\",\"consumes\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\",\"application/x-www-form-urlencoded\"],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"body\",\"required\":true,\"schema\":{\"$ref\":\"#/definitions/PointClass\"}}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"$ref\":\"#/definitions/PointClass\"}}}}},\"/api/UpdateSeqInt\":{\"get\":{\"tags\":[\"UpdateSeqInt\"],\"operationId\":\"UpdateSeqInt_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"array\",\"items\":{\"type\":\"integer\",\"format\":\"int32\"},\"collectionFormat\":\"multi\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}},\"post\":{\"tags\":[\"UpdateSeqInt\"],\"operationId\":\"UpdateSeqInt_Post\",\"consumes\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\",\"application/x-www-form-urlencoded\"],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"body\",\"required\":true,\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"array\",\"items\":{\"format\":\"int32\",\"type\":\"integer\"}}}}}},\"/api/UpdateString\":{\"get\":{\"tags\":[\"UpdateString\"],\"operationId\":\"UpdateString_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"string\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"string\"}}}},\"post\":{\"tags\":[\"UpdateString\"],\"operationId\":\"UpdateString_Post\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"string\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"type\":\"string\"}}}}},\"/api/UpdateWithOptionalInt\":{\"get\":{\"tags\":[\"UpdateWithOptionalInt\"],\"operationId\":\"UpdateWithOptionalInt_Get\",\"consumes\":[],\"produces\":[\"application/json\",\"text/json\",\"application/xml\",\"text/xml\"],\"parameters\":[{\"name\":\"x\",\"in\":\"query\",\"required\":true,\"type\":\"integer\",\"format\":\"int32\"},{\"name\":\"y\",\"in\":\"query\",\"required\":false,\"type\":\"integer\",\"format\":\"int32\"}],\"responses\":{\"200\":{\"description\":\"OK\",\"schema\":{\"format\":\"int32\",\"type\":\"integer\"}}}}}},\"definitions\":{\"FileDescription\":{\"type\":\"object\",\"properties\":{\"Name\":{\"type\":\"string\"},\"Bytes\":{\"format\":\"byte\",\"type\":\"string\"}}},\"PointClass\":{\"type\":\"object\",\"properties\":{\"X\":{\"format\":\"int32\",\"type\":\"integer\"},\"Y\":{\"format\":\"int32\",\"type\":\"integer\"}}}}}"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/unsupported/gettyimages.com.json",
    "content": "{\n    \"swagger\": \"2.0\",\n    \"schemes\": [\n      \"https\"\n    ],\n    \"host\": \"api.gettyimages.com\",\n    \"basePath\": \"/\",\n    \"info\": {\n      \"description\": \"Build applications using the world's most powerful imagery\",\n      \"title\": \"Getty Images\",\n      \"version\": \"3\",\n      \"x-apisguru-categories\": [\n        \"media\"\n      ],\n      \"x-logo\": {\n        \"url\": \"https://api.apis.guru/v2/cache/logo/http_developers.gettyimages.com_images_getty-api-logo.jpg\"\n      },\n      \"x-origin\": [\n        {\n          \"format\": \"swagger\",\n          \"url\": \"https://api.gettyimages.com/swagger/docs/3\",\n          \"version\": \"2.0\"\n        }\n      ],\n      \"x-preferred\": true,\n      \"x-providerName\": \"gettyimages.com\"\n    },\n    \"securityDefinitions\": {\n      \"Api-Key\": {\n        \"description\": \"Provide your API key.\",\n        \"in\": \"header\",\n        \"name\": \"Api-Key\",\n        \"type\": \"apiKey\"\n      }\n    },\n    \"security\": [\n      {\n        \"Api-Key\": []\n      }\n    ],\n    \"paths\": {\n      \"/v3/artists/images\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"operationId\": \"Artists_GetImagesByArtist\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Name of artist for desired images\",\n              \"in\": \"query\",\n              \"name\": \"artist_name\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Comma separated list of fields. Allows restricting which fields are returned. If no fields are selected, the summary_set of fields are returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"id\",\n                  \"alternative_ids\",\n                  \"asset_family\",\n                  \"asset_type\",\n                  \"caption\",\n                  \"collection_code\",\n                  \"collection_name\",\n                  \"comp\",\n                  \"date_submitted\",\n                  \"keywords\",\n                  \"license_model\",\n                  \"max_dimensions\",\n                  \"title\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Identifies page to return. Default page is 1.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies page size. Default page_size is 10, maximum page_size is 100.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Artists.ImageSearchResults\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            }\n          },\n          \"summary\": \"Search for images by a photographer\",\n          \"tags\": [\n            \"Artists\"\n          ]\n        }\n      },\n      \"/v3/artists/videos\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"operationId\": \"Artists_GetVideosByArtist\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Name of artist for desired images\",\n              \"in\": \"query\",\n              \"name\": \"artist_name\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Comma separated list of fields. Allows restricting which fields are returned. If no fields are selected, the summary_set of fields are returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"id\",\n                  \"alternative_ids\",\n                  \"asset_family\",\n                  \"asset_type\",\n                  \"caption\",\n                  \"collection_code\",\n                  \"collection_name\",\n                  \"comp\",\n                  \"date_submitted\",\n                  \"keywords\",\n                  \"license_model\",\n                  \"title\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Identifies page to return. Default page is 1.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies page size. Default page_size is 10, maximum page_size is 100.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Artists.VideoSearchResults\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            }\n          },\n          \"summary\": \"Search for videos by a photographer\",\n          \"tags\": [\n            \"Artists\"\n          ]\n        }\n      },\n      \"/v3/asset-changes/change-sets\": {\n        \"put\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"# Asset Changes\\r\\n\\r\\nGet notifications about new, updated or deleted assets.\\r\\n\\r\\n##  Quickstart\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource.\\r\\nPlease see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\\r\\n    \\r\\nPartner channels that have not been checked within the last 120 days will be removed and that partner will no longer be able \\r\\nto get change notifications from that channel.\\r\\nPartners who would like to start using the Asset Changes API again after a period of dormancy should contact their sales\\r\\nrepresentative to be set up again.\\r\\n\",\n          \"operationId\": \"AssetChanges_PutAssetChanges\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Specifies the id of the channel for the asset data. Valid channel ids can be found in the results of the Get Partner Channel query.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"channel_id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies the number of assets to return. The default is 10; maximum is 500.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"batch_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/AssetChanges\"\n              }\n            },\n            \"403\": {\n              \"description\": \"Your access token does not authorize access to this resource\"\n            },\n            \"404\": {\n              \"description\": \"The channel you specified does not exist\"\n            }\n          },\n          \"summary\": \"Get asset change notifications.\",\n          \"tags\": [\n            \"AssetChanges\"\n          ]\n        }\n      },\n      \"/v3/asset-changes/change-sets/{change-set-id}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"# Delete Asset Changes\\r\\n\\r\\nConfirm asset changes acknowledges receipt of asset changes (from the PUT asset changes endpoint).\\r\\n\\r\\n##  Quickstart\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource.\\r\\nPlease see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\",\n          \"operationId\": \"AssetChanges_DeleteAssetChanges\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"format\": \"int64\",\n              \"in\": \"path\",\n              \"name\": \"change-set-id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\"\n            },\n            \"403\": {\n              \"description\": \"Your access token does not authorize access to this resource\"\n            },\n            \"404\": {\n              \"description\": \"Transaction was not found\"\n            }\n          },\n          \"summary\": \"Confirm asset change notifications.\",\n          \"tags\": [\n            \"AssetChanges\"\n          ]\n        }\n      },\n      \"/v3/asset-changes/channels\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"# Get Partner Channels\\r\\n\\r\\nRetrieves the channel data for the partner. This data can be used to populate the channel_id parameter in the Put Asset Changes query.\\r\\n\\r\\n##  Quickstart\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource.\\r\\nPlease see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\\r\\nOnly channels that have been queried in the last 120 days will be included in the list of channels.\\r\\nPartners who have a channel that has been removed should contact their sales representative to be set up again.\\r\\n\\r\\n\",\n          \"operationId\": \"AssetChanges_GetPartnerChannel\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/PartnerChannelList\"\n              }\n            },\n            \"404\": {\n              \"description\": \"ChannelsNotFound\"\n            }\n          },\n          \"summary\": \"Get a list of asset change notification channels.\",\n          \"tags\": [\n            \"AssetChanges\"\n          ]\n        }\n      },\n      \"/v3/asset-licensing/{assetId}\": {\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"deprecated\": false,\n          \"operationId\": \"AssetLicensing_AcquireAssetLicenseWithCredits\",\n          \"parameters\": [\n            {\n              \"description\": \"Structure that specifies an array of LicenseTypes (Multiseat, Unlimited, Resale, Indemnification) to acquire,\\r\\n            and whether or not to use Team Credits. Authenticated User must have access to Team Credits if UseTeamCredits is set to \\\"true\\\".\",\n              \"in\": \"body\",\n              \"name\": \"request\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Controllers.AssetLicensing.AcquireAssetLicensesRequest\"\n              }\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Getty Images assetId - examples 520621493, 112301284\",\n              \"in\": \"path\",\n              \"name\": \"assetId\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Controllers.AssetLicensing.AssetLicensingResponse\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidRequest\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"402\": {\n              \"description\": \"NotEnoughCreditsForPurchase\"\n            },\n            \"404\": {\n              \"description\": \"StandardLicenseNotFound\"\n            }\n          },\n          \"summary\": \"Endpoint for acquiring extended licenses with iStock credits for an asset.\",\n          \"tags\": [\n            \"AssetLicensing\"\n          ]\n        }\n      },\n      \"/v3/boards\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place. More information on the [Boards FAQ](http://www.gettyimages.com/boards/faq). Use this endpoint to retrieve all Boards available for a user.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\",\n          \"operationId\": \"Boards_GetAllBoards\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Search for boards the user owns or has been invited to as an editor.\",\n              \"enum\": [\n                \"owned\",\n                \"invited\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"board_relationship\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Request results starting at a page number (default is 1).\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Request number of boards to return in each page. (default is 30).\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"pageSize\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Sort the list of boards by last update date or name. Defaults to date_last_updated_descending.\",\n              \"enum\": [\n                \"date_last_updated_descending\",\n                \"date_last_updated_ascending\",\n                \"name_ascending\",\n                \"name_decending\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sort_order\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/BoardList\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            }\n          },\n          \"summary\": \"Get all boards that the user participates in\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place. More information on the [Boards FAQ](http://www.gettyimages.com/boards/faq). Use this endpoint to create a Board by a specific id.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\\r\\n**NOTE:** *The input to this endpoint is not sanitized in any way, so it is the responsibility of the client to ensure that it is properly formatted and guards against malicious data (for example cross-site scripting attacks or HTML injection) when accessing the data.*\\r\\n\",\n          \"operationId\": \"Boards_CreateBoard\",\n          \"parameters\": [\n            {\n              \"description\": \"Specify a name and description of the board to create (name is required).\",\n              \"in\": \"body\",\n              \"name\": \"new_board\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/BoardInfo\"\n              }\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"201\": {\n              \"description\": \"Created\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/BoardCreated\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            }\n          },\n          \"summary\": \"Create a new board\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        }\n      },\n      \"/v3/boards/{board_id}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place. More information on the [Boards FAQ](http://www.gettyimages.com/boards/faq). Use this endpoint to delete a Board by a specific id.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\\r\\n\",\n          \"operationId\": \"Boards_DeleteBoard\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"board_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [],\n          \"responses\": {\n            \"204\": {\n              \"description\": \"\"\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"InsufficientAccess\"\n            },\n            \"404\": {\n              \"description\": \"BoardNotFound\"\n            }\n          },\n          \"summary\": \"Delete a board\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        },\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place. More information on the [Boards FAQ](http://www.gettyimages.com/boards/faq). Use this endpoint to retrieve a Board by a specific id.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\",\n          \"operationId\": \"Boards_GetBoard\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"board_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/BoardDetail\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"BoardNotFound\"\n            }\n          },\n          \"summary\": \"Get assets and metadata for a specific board\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        },\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place. More information on the [Boards FAQ](http://www.gettyimages.com/boards/faq). Use this endpoint to update a Board by a specific id.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\\r\\n**NOTE:** *The input to this endpoint is not sanitized in any way, so it is the responsibility of the client to ensure that it is properly formatted and guards against malicious data (for example cross-site scripting attacks or HTML injection) when accessing the data.*\\r\\n\",\n          \"operationId\": \"Boards_UpdateBoard\",\n          \"parameters\": [\n            {\n              \"description\": \"Specify a new name and description for the board (name is required).\",\n              \"in\": \"body\",\n              \"name\": \"board_info\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/BoardInfo\"\n              }\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"board_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [],\n          \"responses\": {\n            \"204\": {\n              \"description\": \"Updated\"\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"InsufficientAccess\"\n            },\n            \"404\": {\n              \"description\": \"BoardNotFound\"\n            }\n          },\n          \"summary\": \"Update a board\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        }\n      },\n      \"/v3/boards/{board_id}/assets\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place. More information on the [Boards FAQ](http://www.gettyimages.com/boards/faq).\\r\\nUse this endpoint to remove a set of assets from a board.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\",\n          \"operationId\": \"Boards_RemoveAssets\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"board_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"List the assets to be removed from the board.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"asset_ids\",\n              \"required\": true,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [],\n          \"responses\": {\n            \"204\": {\n              \"description\": \"No Content\"\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"InsufficientAccess\"\n            },\n            \"404\": {\n              \"description\": \"BoardNotFound\"\n            }\n          },\n          \"summary\": \"Remove assets from a board\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        },\n        \"put\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place. More information on the [Boards FAQ](http://www.gettyimages.com/boards/faq).\\r\\nUse this endpoint to add a set of assets to a board.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\\t\\r\\n\\t\\r\\n\",\n          \"operationId\": \"Boards_AddAssets\",\n          \"parameters\": [\n            {\n              \"description\": \"List assets to add to the board.\",\n              \"in\": \"body\",\n              \"name\": \"board_assets\",\n              \"required\": true,\n              \"schema\": {\n                \"items\": {\n                  \"$ref\": \"#/definitions/BoardAsset\"\n                },\n                \"type\": \"array\"\n              }\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"board_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"201\": {\n              \"description\": \"Created\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/AddBoardAssetsResult\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"InsufficientAccess\"\n            },\n            \"404\": {\n              \"description\": \"BoardNotFound\"\n            }\n          },\n          \"summary\": \"Add assets to a board\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        }\n      },\n      \"/v3/boards/{board_id}/assets/{asset_id}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place. More information on the [Boards FAQ](http://www.gettyimages.com/boards/faq). Use this endpoint to remove an asset from a board.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\",\n          \"operationId\": \"Boards_RemoveAsset\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"asset_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"board_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [],\n          \"responses\": {\n            \"204\": {\n              \"description\": \"No Content\"\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"InsufficientAccess\"\n            },\n            \"404\": {\n              \"description\": \"BoardNotFound\"\n            }\n          },\n          \"summary\": \"Remove an asset from a board\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        },\n        \"put\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place.\\r\\nMore information on the [Boards FAQ](http://www.gettyimages.com/boards/faq). Use this endpoint to add an asset to a board.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource.\\r\\nPlease see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\\r\\n\\r\\n\",\n          \"operationId\": \"Boards_AddAsset\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"asset_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"board_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"201\": {\n              \"description\": \"Created\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Object\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"AssetNotFound\"\n            },\n            \"404\": {\n              \"description\": \"BoardNotFound\"\n            }\n          },\n          \"summary\": \"Add an asset to a board\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        }\n      },\n      \"/v3/boards/{board_id}/comments\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place. More information on the [Boards FAQ](http://www.gettyimages.com/boards/faq). Use this endpoint to retrieve all comments for a specific board.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\",\n          \"operationId\": \"Boards_GetComments\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"board_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/CommentsList\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"BoardNotFound\"\n            }\n          },\n          \"summary\": \"Get comments from a board\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        },\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place. More information on the [Boards FAQ](http://www.gettyimages.com/boards/faq).\\r\\nUse this endpoint to add a comment to a board.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\",\n          \"operationId\": \"Boards_AddComment\",\n          \"parameters\": [\n            {\n              \"description\": \"Comment to be added to the board.\",\n              \"in\": \"body\",\n              \"name\": \"comment\",\n              \"required\": true,\n              \"schema\": {\n                \"$ref\": \"#/definitions/CommentRequest\"\n              }\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"board_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"201\": {\n              \"description\": \"Created\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/CommentCreated\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"InsufficientAccess\"\n            },\n            \"404\": {\n              \"description\": \"BoardNotFound\"\n            }\n          },\n          \"summary\": \"Add a comment to a board\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        }\n      },\n      \"/v3/boards/{board_id}/comments/{comment_id}\": {\n        \"delete\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Boards are where you collect, curate, collaborate on and manage photo and video assets in one place. More information on the [Boards FAQ](http://www.gettyimages.com/boards/faq).\\r\\nUse this endpoint to delete a comment from a board.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\",\n          \"operationId\": \"Boards_DeleteComment\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"board_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"in\": \"path\",\n              \"name\": \"comment_id\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"204\": {\n              \"description\": \"CommentDeleted\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/Object\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"InsufficientAccess\"\n            },\n            \"404\": {\n              \"description\": \"BoardNotFound\"\n            }\n          },\n          \"summary\": \"Delete a comment from a board\",\n          \"tags\": [\n            \"Boards\"\n          ]\n        }\n      },\n      \"/v3/collections\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to retrieve collections associated with your Getty Images account. To browse available collections see our [Image collections page]( http://www.gettyimages.com/creative-images/collections).\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\",\n          \"operationId\": \"Collections_GetCollections\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Collections.CollectionsList\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            }\n          },\n          \"summary\": \"Gets collections applicable for the customer.\",\n          \"tags\": [\n            \"Collections\"\n          ]\n        }\n      },\n      \"/v3/countries\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Returns a list of country objects that contains country name, two letter ISO abbreviation and three letter ISO abbreviation.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\",\n          \"operationId\": \"Countries_GetCountries\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Countries.CountriesList\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            }\n          },\n          \"summary\": \"Gets countries codes and names.\",\n          \"tags\": [\n            \"Countries\"\n          ]\n        }\n      },\n      \"/v3/customers/current\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Returns the first, middle and last name of the authenticated user.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\\t\\r\\nPlease consult our [Authorization FAQ](http://developers.gettyimages.com/en/authorization-faq.html) for more information on authorization tokens.\\r\\n\",\n          \"operationId\": \"Customers_GetCustomerInfo\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Customers.CustomerInfoResponse\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"503\": {\n              \"description\": \"ServiceUnavailable\"\n            }\n          },\n          \"summary\": \"Returns information about the current user.\",\n          \"tags\": [\n            \"Customers\"\n          ]\n        }\n      },\n      \"/v3/downloads\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Returns information about a customer's previously downloaded assets.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n \\r\\n\\t\\r\\nThis endpoint requires being a Getty Images customer to limit your results to only assets that you have a license to use, \\r\\nyou need to also include an authorization token in the header of your request. \\r\\nPlease consult our [Authorization FAQ](http://developers.gettyimages.com/en/authorization-faq.html) for more information on authorization tokens.\\r\\n\",\n          \"operationId\": \"Downloads_GetDownloads\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If specified, returns the list of previously downloaded images for all users in your company. Your account must be enabled for this functionality. Contact your Getty Images account rep for more information. Default is false.\",\n              \"in\": \"query\",\n              \"name\": \"company_downloads\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"If specified, select assets downloaded on or before this date. Dates should be submitted in ISO 8601 format (i.e., YYYY-MM-DD). \\r\\n                Any hour, minute, second values in the request are not used at this time. Date/times in the response are UTC. Default is 30 days prior to date_to.\",\n              \"format\": \"date-time\",\n              \"in\": \"query\",\n              \"name\": \"date_from\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If specified, select assets downloaded on or before this date. Dates should be submitted in ISO 8601 format (i.e., YYYY-MM-DD). \\r\\n                Any hour, minute, second values in the request are not used at this time. Date/times in the response are UTC. Default is current date.\",\n              \"format\": \"date-time\",\n              \"in\": \"query\",\n              \"name\": \"date_to\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Identifies page to return. Default is 1.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies page size. Default is 30, maximum page_size is 100.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies product type to be included in the previous download results. To get previous iStockPhoto credit downloads, credit_pack must be selected.\",\n              \"enum\": [\n                \"easyaccess\",\n                \"editorialsubscription\",\n                \"imagepack\",\n                \"premiumaccess\",\n                \"royaltyfreesubscription\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"product_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Downloads.GetDownloadsResponse\"\n              }\n            },\n            \"400\": {\n              \"description\": \"Bad request\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"Forbidden\"\n            }\n          },\n          \"summary\": \"Returns information about a customer's downloaded assets.\",\n          \"tags\": [\n            \"Downloads\"\n          ]\n        }\n      },\n      \"/v3/downloads/images/{id}\": {\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to generate download URLs and related data for images you are authorized to download.\\r\\n\\r\\nMost product offerings have enforced periodic download limits such as monthly, weekly, and daily. When this operation executes, the count of allowed downloads is decremented by one for the product offering. Once the download limit is reached for a given product offering, no further downloads may be requested for that product offering until the next download period.\\r\\n\\r\\nThe download limit for a given download period is covered in your product agreement established with Getty Images.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant or Implicit Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\\r\\n## Auto Downloads\\r\\nThe `auto_download` request query parameter specifies whether to automatically download the image.\\r\\n\\r\\nIf the `auto_download` request query parameter is set to _true_, the API will return an HTTP status code 303 *See Other*. Your client code will need to process this response and redirect to the URI specified in the *Location* header to enable you to automatically download the file. The redirection workflow follows the [HTTP 1.1 protocol](https://tools.ietf.org/html/rfc7231#section-6.4.4).\\r\\n\\r\\nClient Request:\\r\\n\\r\\n```\\r\\nhttps://api.gettyimages.com/v3/downloads/images/[asset_id]?auto_download=true\\r\\n```\\r\\n\\r\\nServer Response:\\r\\n\\r\\n```\\r\\nHTTP/1.1 303 See Other\\r\\nLocation: https://delivery.gettyimages.com/...\\r\\n```\\r\\n\\r\\nIf the `auto_download` request query parameter is set to false, the API will return a HTTP status code 200, along with the URI in the response body which can be used to download the image. \\r\\n\\r\\nClient Request:\\r\\n\\r\\n```\\r\\nhttps://api.gettyimages.com/v3/downloads/images/[asset_id]?auto_download=false\\r\\n```\\r\\n\\r\\nServer Response:\\r\\n\\r\\n```\\r\\nHTTP/1.1 200 OK\\r\\n{\\r\\n\\t\\\"uri\\\": \\\"https://delivery.gettyimages.com/...\\\"\\r\\n}\\r\\n```\",\n          \"operationId\": \"Downloads_PostDownloads\",\n          \"parameters\": [\n            {\n              \"description\": \"<remarks>\\r\\n                    Additional information required from specific customers when downloading. \\r\\n                    Only users who have been set up with a project code by Getty Images Sales need to use this field.\\r\\n                </remarks>\",\n              \"in\": \"body\",\n              \"name\": \"download_details\",\n              \"required\": false,\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Downloads.PremiumAccessDownloadData\"\n              }\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"<remarks>\\r\\n                    Id of image to download.\\r\\n                </remarks>\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"<remarks>\\r\\n                    Specifies whether to auto-download the image. If true is specified, a 303 SeeOther status is returned with a\\r\\n                    Location header set to the location of the image.\\r\\n                    If false is specified, the download URI will be returned in the response message.\\r\\n                </remarks>\",\n              \"in\": \"query\",\n              \"name\": \"auto_download\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"<remarks>\\r\\n                    File Type expressed with three character file extension.\\r\\n                </remarks>\",\n              \"enum\": [\n                \"eps\",\n                \"jpg\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"file_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"<remarks>\\r\\n                    Specifies the pixel height of the particular image to download.\\r\\n                    Available heights can be found in the images/{ids} response for the specific image.\\r\\n                    If left blank, it will return the largest available size.\\r\\n                </remarks>\",\n              \"in\": \"query\",\n              \"name\": \"height\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"<remarks>\\r\\n                    Identifier of the instance for the selected product offering type.\\r\\n                </remarks>\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"product_id\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"<remarks>\\r\\n                    Product type.\\r\\n                </remarks>\",\n              \"enum\": [\n                \"easyaccess\",\n                \"editorialsubscription\",\n                \"imagepack\",\n                \"premiumaccess\",\n                \"royaltyfreesubscription\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"product_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Specifies whether to download the image with iStock Team Credits. Only applicable to iStock API keys authenticated with a user that has Team Credits. Blank is the same as False.\",\n              \"in\": \"query\",\n              \"name\": \"use_team_credits\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/System.Object\"\n              }\n            },\n            \"303\": {\n              \"description\": \"See Other\"\n            },\n            \"400\": {\n              \"description\": \"MissingRequiredQueryParameters\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"404\": {\n              \"description\": \"ImageNotFound\"\n            }\n          },\n          \"summary\": \"Download an image\",\n          \"tags\": [\n            \"Downloads\"\n          ]\n        }\n      },\n      \"/v3/downloads/videos/{id}\": {\n        \"post\": {\n          \"consumes\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to generate download URLs and related data for videos you are authorized to download.\\r\\n\\r\\nMost product offerings have enforced periodic download limits such as monthly, weekly, and daily. When this operation executes, the count of allowed downloads is decremented by one for the product offering. Once the download limit is reached for a given product offering, no further downloads may be requested for that product offering until the next download period.\\r\\n\\r\\nThe download limit for a given download period is covered in your product agreement established with Getty Images.\\r\\n\\r\\nYou'll need an API key and a [Resource Owner Grant or Implicit Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\\r\\n## Auto Downloads\\r\\nThe `auto_download` request query parameter specifies whether to automatically download the video.\\r\\n\\r\\nIf the `auto_download` request query parameter is set to _true_, the API will return an HTTP status code 303 *See Other*. Your client code will need to process this response and redirect to the URI specified in the *Location* header to enable you to automatically download the file. The redirection workflow follows the [HTTP 1.1 protocol](https://tools.ietf.org/html/rfc7231#section-6.4.4).\\r\\n\\r\\nClient Request:\\r\\n\\r\\n```\\r\\nhttps://api.gettyimages.com/v3/downloads/videos/[asset_id]?auto_download=true\\r\\n```\\r\\n\\r\\nServer Response:\\r\\n\\r\\n```\\r\\nHTTP/1.1 303 See Other\\r\\nLocation: https://delivery.gettyimages.com/...\\r\\n```\\r\\n\\r\\nIf the `auto_download` request query parameter is set to false, the API will return a HTTP status code 200, along with the URI in the response body which can be used to download the video. \\r\\n\\r\\nClient Request:\\r\\n\\r\\n```\\r\\nhttps://api.gettyimages.com/v3/downloads/videos/[asset_id]?auto_download=false\\r\\n```\\r\\n\\r\\nServer Response:\\r\\n\\r\\n```\\r\\nHTTP/1.1 200 OK\\r\\n{\\r\\n\\t\\\"uri\\\": \\\"https://delivery.gettyimages.com/...\\\"\\r\\n}\\r\\n```\",\n          \"operationId\": \"Downloads_PostVideoDownloads\",\n          \"parameters\": [\n            {\n              \"description\": \"<remarks>\\r\\n                    Additional information required from specific customers when downloading. \\r\\n                    Only users who have been set up with a project code by Getty Images Sales need to use this field.\\r\\n                </remarks>\",\n              \"in\": \"body\",\n              \"name\": \"download_details\",\n              \"required\": false,\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Downloads.PremiumAccessDownloadData\"\n              }\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"<remarks>\\r\\n                    Id of video to download.\\r\\n                </remarks>\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"<remarks>\\r\\n                    Specifies whether to auto-download the video. If true is specified, a 303 SeeOther status is returned with a\\r\\n                    Location header set to the location of the video.\\r\\n                    If false is specified, the download URI will be returned in the response message.\\r\\n                </remarks>\",\n              \"in\": \"query\",\n              \"name\": \"auto_download\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"<remarks>\\r\\n                    Identifier of the instance for the selected product offering type.\\r\\n                </remarks>\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"product_id\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies the size to be downloaded.\",\n              \"in\": \"query\",\n              \"name\": \"size\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Specifies whether to download the image with iStock Team Credits. Only applicable to iStock API keys authenticated with a user that has Team Credits. Blank is the same as False.\",\n              \"in\": \"query\",\n              \"name\": \"use_team_credits\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/System.Object\"\n              }\n            },\n            \"303\": {\n              \"description\": \"See Other\"\n            },\n            \"400\": {\n              \"description\": \"MissingRequiredQueryParameters\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"404\": {\n              \"description\": \"VideoNotFound\"\n            }\n          },\n          \"summary\": \"Download a video\",\n          \"tags\": [\n            \"Downloads\"\n          ]\n        }\n      },\n      \"/v3/events\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"This endpoint returns the detailed event metadata for all specified events. Getty Images news, sports and entertainment photographers and\\r\\nvideographers cover editorially relevant events occurring around the world.  All images or video clips produced in association with \\r\\nan event, are assigned the same EventID. EventIDs are part of the meta-data returned in SearchForImages Results. Only content \\r\\nproduced under a Getty Images brand name (Getty Images News, Getty Images Sports, Getty Images Entertainment, Film Magic, Wire Image) \\r\\nwill be consistently assigned an EventID. The Event framework may also be used to group similar content, such as \\r\\n\\\"Hats from the Royal Wedding\\\" or \\\"Odd-ballOffbeat images of the week\\\". \\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\r\\n\",\n          \"operationId\": \"Events_GetBatch\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"A comma separated list of fields to return in the response.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"id\",\n                  \"child_event_count\",\n                  \"editorial_segments\",\n                  \"hero_image\",\n                  \"image_count\",\n                  \"location\",\n                  \"name\",\n                  \"start_date\",\n                  \"type\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"A comma separated list of event ids.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"type\": \"integer\"\n              },\n              \"name\": \"ids\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Events.EventsResult\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"EventNotFound\"\n            }\n          },\n          \"summary\": \"Get metadata for multiple events\",\n          \"tags\": [\n            \"Events\"\n          ]\n        }\n      },\n      \"/v3/events/{id}\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"This endpoint returns the detailed event metadata for a specified event. Getty Images news, sports and entertainment \\r\\nphotographers and videographers cover editorially relevant events occurring around the world.  \\r\\nAll images or video clips produced in association with an event, are assigned the same EventID. \\r\\nEventIDs are part of the meta-data returned in SearchForImages Results. Only content produced under a Getty Images \\r\\nbrand name (Getty Images News, Getty Images Sports, Getty Images Entertainment, Film Magic, Wire Image) will be \\r\\nconsistently assigned an EventID. The Event framework may also be used to group similar content, such as \\r\\n\\\"Hats from the Royal Wedding\\\" or \\\"Odd-ballOffbeat images of the week\\\". \\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html)\\r\\npage for more information on how to sign up for an API key. \\r\\n\",\n          \"operationId\": \"Events_Get\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"An event id.\",\n              \"format\": \"int32\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"A comma separated list of fields to return in the response.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"id\",\n                  \"child_event_count\",\n                  \"editorial_segments\",\n                  \"hero_image\",\n                  \"image_count\",\n                  \"location\",\n                  \"name\",\n                  \"start_date\",\n                  \"type\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Events.Event\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"404\": {\n              \"description\": \"EventNotFound\"\n            }\n          },\n          \"summary\": \"Get metadata for a single event\",\n          \"tags\": [\n            \"Events\"\n          ]\n        }\n      },\n      \"/v3/images\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"This endpoint returns the detailed image metadata for all specified images. Due to a wide variety of available image resolutions,\\r\\nthe images are grouped into a handful of size categories for simplicity. \\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) \\r\\npage for more information on how to sign up for an API key. \\r\\n\\r\\n## Working with Fields Sets\\r\\n\\r\\nFields sets are used in the **fields** request parameter to receive a suite of metadata fields. The following fields sets are available:\\r\\n\\r\\n#### Summary Fields Set\\r\\n\\r\\nThe **summary_set** query string parameter fields value represents a small batch of metadata fields that are often used to build \\r\\nsearch response results. The following fields are provided for every image in your result set when you include **summary_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\":\\r\\n    [\\r\\n        \\\"artist\\\",\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Detail Fields Set\\r\\n\\r\\nThe **detail_set** query string parameter fields value represents a large batch of metadata fields that are often used to build a \\r\\ndetailed view of images. The following fields are provided for every image in your result set when you include **detail_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\":\\r\\n    [\\r\\n        \\\"allowed_use\\\",\\r\\n        \\\"artist\\\", \\r\\n        \\\"artist_title\\\", \\r\\n        \\\"asset_family\\\",\\r\\n        \\\"call_for_image\\\",\\r\\n        \\\"caption\\\", \\r\\n        \\\"city\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\", \\r\\n        \\\"collection_name\\\",\\r\\n        \\\"color_type\\\", \\r\\n        \\\"copyright\\\", \\r\\n        \\\"country\\\", \\r\\n        \\\"credit_line\\\", \\r\\n        \\\"date_created\\\", \\r\\n        \\\"date_submitted\\\",\\r\\n        \\\"download_sizes\\\", \\r\\n        \\\"editorial_segments\\\",\\r\\n        \\\"event_ids\\\",\\r\\n        \\\"graphical_style\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"orientation\\\",\\r\\n        \\\"product_types\\\",\\r\\n        \\\"quality_rank\\\",\\r\\n        \\\"referral_destinations\\\",\\r\\n        \\\"state_province\\\", \\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Display Fields Set\\r\\n\\r\\nThe **display_set** query string parameter fields value represents the fields that provide you with URLs for the low resolution\\r\\nfiles that are most frequently used to build a UI displaying search results. The following fields are provided for every image \\r\\nin your result set when you include **display_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\":\\r\\n    [\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n## Request Usage Considerations\\r\\n\\r\\n- Specifying the \\\"entity_details\\\" response field can have significant performance implications. The field should be used only when necessary.\\r\\n\",\n          \"operationId\": \"Images_GetBatch\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies one or more image ids to return. Use comma delimiter when requesting multiple ids.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"ids\",\n              \"required\": true,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Defaults to 'summary_set'. NOTE: Bytes returned by 'download_sizes' field are estimates.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"allowed_use\",\n                  \"alternative_ids\",\n                  \"artist\",\n                  \"artist_title\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"city\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"comp\",\n                  \"copyright\",\n                  \"country\",\n                  \"credit_line\",\n                  \"date_camera_shot\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"downloads\",\n                  \"editorial_segments\",\n                  \"editorial_source\",\n                  \"entity_details\",\n                  \"event_ids\",\n                  \"graphical_style\",\n                  \"id\",\n                  \"istock_collection\",\n                  \"istock_licenses\",\n                  \"keywords\",\n                  \"largest_downloads\",\n                  \"license_model\",\n                  \"links\",\n                  \"max_dimensions\",\n                  \"object_name\",\n                  \"orientation\",\n                  \"people\",\n                  \"preview\",\n                  \"product_types\",\n                  \"quality_rank\",\n                  \"referral_destinations\",\n                  \"state_province\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"uri_oembed\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Images.ImagesDetail\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            },\n            \"404\": {\n              \"description\": \"ImageNotFound\"\n            },\n            \"500\": {\n              \"description\": \"InvalidIStockCollection\"\n            }\n          },\n          \"summary\": \"Get metadata for multiple images by supplying multiple image ids\",\n          \"tags\": [\n            \"Images\"\n          ]\n        }\n      },\n      \"/v3/images/{id}\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"This endpoint returns the detailed image metadata for a specified image. Due to a wide variety of available image resolutions, \\r\\nthe images are grouped into a handful of size categories for simplicity. \\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) \\r\\npage for more information on how to sign up for an API key. \\r\\n \\r\\n## Working with Fields Sets\\r\\n\\r\\nFields sets are used in the **fields** request parameter to receive a suite of metadata fields. The following fields sets are available:\\r\\n\\r\\n#### Summary Fields Set\\r\\n\\r\\nThe **summary_set** query string parameter fields value represents a small batch of metadata fields that\\r\\nare often used to build search response results. The following fields are provided for every image in your\\r\\nresult set when you include **summary_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\":\\r\\n    [\\r\\n        \\\"artist\\\",\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Detail Fields Set\\r\\n\\r\\nThe **detail_set** query string parameter fields value represents a large batch of metadata fields that are \\r\\noften used to build a detailed view of images. The following fields are provided for every image in your \\r\\nresult set when you include **detail_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\":\\r\\n    [\\r\\n        \\\"allowed_use\\\",\\r\\n        \\\"artist\\\", \\r\\n        \\\"artist_title\\\", \\r\\n        \\\"asset_family\\\",\\r\\n        \\\"call_for_image\\\",\\r\\n        \\\"caption\\\", \\r\\n        \\\"city\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\", \\r\\n        \\\"collection_name\\\",\\r\\n        \\\"color_type\\\", \\r\\n        \\\"copyright\\\", \\r\\n        \\\"country\\\", \\r\\n        \\\"credit_line\\\", \\r\\n        \\\"date_created\\\", \\r\\n        \\\"date_submitted\\\",\\r\\n        \\\"download_sizes\\\", \\r\\n        \\\"editorial_segments\\\",\\r\\n        \\\"event_ids\\\",\\r\\n        \\\"graphical_style\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"orientation\\\",\\r\\n        \\\"product_types\\\",\\r\\n        \\\"quality_rank\\\",\\r\\n        \\\"referral_destinations\\\",\\r\\n        \\\"state_province\\\", \\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Display Fields Set\\r\\n\\r\\nThe **display_set** query string parameter fields value represents the fields that provide you with URLs for the low\\r\\nresolution files that are most frequently used to build a UI displaying search results. The following fields are provided \\r\\nfor every image in your result set when you include **display_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\":\\r\\n    [\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n## Request Usage Considerations\\r\\n\\r\\n- Specifying the \\\"entity_details\\\" response field can have significant performance implications. The field should be used only when necessary.\\r\\n\",\n          \"operationId\": \"Images_Get\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"An image id. For more than one image please use the /v3/images endpoint.\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Defaults to 'summary_set'. NOTE: Bytes returned by 'download_sizes' field are estimates.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"allowed_use\",\n                  \"alternative_ids\",\n                  \"artist\",\n                  \"artist_title\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"city\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"comp\",\n                  \"copyright\",\n                  \"country\",\n                  \"credit_line\",\n                  \"date_camera_shot\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"downloads\",\n                  \"editorial_segments\",\n                  \"editorial_source\",\n                  \"entity_details\",\n                  \"event_ids\",\n                  \"graphical_style\",\n                  \"id\",\n                  \"istock_collection\",\n                  \"istock_licenses\",\n                  \"keywords\",\n                  \"largest_downloads\",\n                  \"license_model\",\n                  \"links\",\n                  \"max_dimensions\",\n                  \"object_name\",\n                  \"orientation\",\n                  \"people\",\n                  \"preview\",\n                  \"product_types\",\n                  \"quality_rank\",\n                  \"referral_destinations\",\n                  \"state_province\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"uri_oembed\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Images.ImagesDetail\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            },\n            \"404\": {\n              \"description\": \"ImageNotFound\"\n            },\n            \"500\": {\n              \"description\": \"InvalidIStockCollection\"\n            }\n          },\n          \"summary\": \"Get metadata for a single image by supplying one image id\",\n          \"tags\": [\n            \"Images\"\n          ]\n        }\n      },\n      \"/v3/images/{id}/similar\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"This endpoint will search our asset database for images similar to the specified asset id. Due to a wide variety of available \\r\\nimage resolutions, the images are grouped into a handful of size categories for simplicity. \\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) \\r\\npage for more information on how to sign up for an API key. \\r\\n\\r\\n## Working with Fields Sets\\r\\n\\r\\nFields sets are used in the **fields** request parameter to receive a suite of metadata fields. The following fields sets are available:\\r\\n\\r\\n#### Summary Fields Set\\r\\n\\r\\nThe **summary_set** query string parameter fields value represents a small batch of metadata fields that are often used to build\\r\\nsearch response results. The following fields are provided for every image in your result set when you include **summary_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\":\\r\\n    [\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Detail Fields Set\\r\\n\\r\\nThe **detail_set** query string parameter fields value represents a large batch of metadata fields that are often used to build a \\r\\ndetailed view of images. The following fields are provided for every image in your result set when you include **detail_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\":\\r\\n    [\\r\\n        \\\"allowed_use\\\",\\r\\n        \\\"artist\\\",\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"call_for_image\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"copyright\\\",\\r\\n        \\\"date_created\\\",\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"editorial_segments\\\",\\r\\n        \\\"event_ids\\\",\\r\\n        \\\"graphical_style\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"orientation\\\",\\r\\n        \\\"product_types\\\",\\r\\n        \\\"quality_rank\\\",\\r\\n        \\\"referral_destinations\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Display Fields Set\\r\\n\\r\\nThe **display_set** query string parameter fields value represents the fields that provide you with URLs for the low resolution files \\r\\nthat are most frequently used to build a UI displaying search results. The following fields are provided for every image in your result\\r\\nset when you include **display_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\":\\r\\n    [\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n    ]\\r\\n}\\r\\n```\",\n          \"operationId\": \"Images_GetSimilarImages\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Identifies an existing image\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Defaults to 'summary_set'.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"accessrestriction\",\n                  \"allowed_use\",\n                  \"alternative_ids\",\n                  \"artist\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"comp\",\n                  \"copyright\",\n                  \"date_camera_shot\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"editorial_segments\",\n                  \"editorial_source\",\n                  \"entity_details\",\n                  \"event_ids\",\n                  \"graphical_style\",\n                  \"id\",\n                  \"istock_collection\",\n                  \"keywords\",\n                  \"largest_downloads\",\n                  \"license_model\",\n                  \"max_dimensions\",\n                  \"orientation\",\n                  \"people\",\n                  \"preview\",\n                  \"product_types\",\n                  \"quality_rank\",\n                  \"referral_destinations\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"uri_oembed\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Identifies page to return. Default is 1.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies page size. Default is 30, maximum page_size is 100.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Search.SearchResults[GettyImages.Models.Search.ImageSearchItem]\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            },\n            \"404\": {\n              \"description\": \"ImageNotFound\"\n            },\n            \"500\": {\n              \"description\": \"InvalidIStockCollection\"\n            }\n          },\n          \"summary\": \"Search for images similar to an image\",\n          \"tags\": [\n            \"Images\"\n          ]\n        }\n      },\n      \"/v3/orders/{id}\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"This endpoint returns detailed order metadata for a specified order.\\r\\nUse of this endpoint requires configuration changes to your API key. \\r\\nPlease contact [developersupport@gettyimages.com](mailto:developersupport@gettyimages.com) to learn more.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html)\\r\\npage for more information on how to sign up for an API key.\",\n          \"operationId\": \"Orders_GetOrder\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"An order id.\",\n              \"format\": \"int32\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Orders.OrderDetail\"\n              }\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"403\": {\n              \"description\": \"NoAccessToOrderMetadata\"\n            },\n            \"404\": {\n              \"description\": \"OrderNotFound\"\n            }\n          },\n          \"summary\": \"Get order metadata\",\n          \"tags\": [\n            \"Orders\"\n          ]\n        }\n      },\n      \"/v3/products\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"This endpoint returns all products available to the username used during authentication. As such, this endpoint requires the use of\\r\\na fully authorized access_token. The product data can then be used as search filters, restricting results to images from a specific product.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html)\\r\\npage for more information on how to sign up for an API key.\\r\\n\",\n          \"operationId\": \"Products_GetProducts\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Comma separated list of fields. Allows product download requirements to be returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"download_requirements\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Products.ProductsResult\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            },\n            \"500\": {\n              \"description\": \"CreditPack\"\n            }\n          },\n          \"summary\": \"Get Products\",\n          \"tags\": [\n            \"Products\"\n          ]\n        }\n      },\n      \"/v3/purchased-assets\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"This endpoint returns a list of all assets purchased on gettyimages.com by the username used for authentication. \\r\\nUse of this endpoint requires configuration changes to your API key. \\r\\nPlease contact [developersupport@gettyimages.com](mailto:developersupport@gettyimages.com) to learn more.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html)\\r\\npage for more information on how to sign up for an API key.\\r\\n\",\n          \"operationId\": \"Purchases_GetPreviousAssetPurchases\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If specified, retrieves previous purchases on or after this date. Dates should be submitted in ISO 8601 format (i.e., YYYY-MM-DD).\",\n              \"format\": \"date-time\",\n              \"in\": \"query\",\n              \"name\": \"date_from\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If specified, retrieves previous purchases on or before this date. Dates should be submitted in ISO 8601 format (i.e., YYYY-MM-DD).\",\n              \"format\": \"date-time\",\n              \"in\": \"query\",\n              \"name\": \"date_to\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Identifies page to return. Default is 1.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies page size. Default is 75, maximum page_size is 100.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Purchases.PreviousAssetPurchases\"\n              }\n            },\n            \"400\": {\n              \"description\": \"PageNumberLessThanOne\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            }\n          },\n          \"summary\": \"Get Previously Purchased Images and Video\",\n          \"tags\": [\n            \"Purchases\"\n          ]\n        }\n      },\n      \"/v3/purchased-images\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"This endpoint returns a list of all images purchased on gettyimages.com by the username used for authentication.\\r\\nUse of this endpoint requires configuration changes to your API key. Please contact [developersupport@gettyimages.com](mailto:developersupport@gettyimages.com)\\r\\nto learn more.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html)\\r\\npage for more information on how to sign up for an API key.\\r\\n\",\n          \"operationId\": \"Purchases_GetPreviousPurchases\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If specified, retrieves previous purchases on or after this date. Dates should be submitted in ISO 8601 format (i.e., YYYY-MM-DD).\",\n              \"format\": \"date-time\",\n              \"in\": \"query\",\n              \"name\": \"date_from\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"If specified, retrieves previous purchases on or before this date. Dates should be submitted in ISO 8601 format (i.e., YYYY-MM-DD).\",\n              \"format\": \"date-time\",\n              \"in\": \"query\",\n              \"name\": \"date_to\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Identifies page to return. Default is 1.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies page size. Default is 75, maximum page_size is 100.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Purchases.PreviousPurchases\"\n              }\n            },\n            \"400\": {\n              \"description\": \"PageNumberLessThanOne\"\n            },\n            \"401\": {\n              \"description\": \"Unauthorized\"\n            }\n          },\n          \"summary\": \"Get Previously Purchased Images\",\n          \"tags\": [\n            \"Purchases\"\n          ]\n        }\n      },\n      \"/v3/search/events\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to search Getty Images news, sports and entertainment events. Getty Images photographers and videographers cover editorially relevant events occurring around the world.  All images or video clips produced in association with an event, are assigned the same EventID. EventIDs are part of the meta-data returned in Search Results. Only content produced under a Getty Images brand name (Getty Images News, Getty Images Sports, Getty Images Entertainment, Film Magic, Wire Image) will be consistently assigned an EventID. The Event framework may also be used to group similar content, such as \\\"Hats from the Royal Wedding\\\" or \\\"Odd-ballOffbeat images of the week\\\".   \\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\\r\\n\\r\\nYou can show different information in the response by specifying values on the \\\"fields\\\" parameter (see details below).\\r\\nYou can search with only an API key, and that will give you search results that are equivalent to doing a search on the GettyImages.com site without being logged in (anonymous search).  If you are a Getty Images API customer and would like to ensure that your API searches return only assets that you have a license to use, you need to also include an authorization token in the header of your request.  Please consult our [Authorization FAQ](http://developers.gettyimages.com/en/authorization-faq.html) for more information on authorization tokens, and our [Authorization Workflows](https://github.com/gettyimages/gettyimages-api/blob/master/OAuth2Workflow.md) for code examples of getting a token.\\r\\n\",\n          \"operationId\": \"Search_GetEvents\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filters to events that start on or after this date. Use ISO 8601 format (e.g., 1999-12-31).\",\n              \"format\": \"date-time\",\n              \"in\": \"query\",\n              \"name\": \"date_from\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filters to events that start on or before this date. Use ISO 8601 format (e.g., 1999-12-31).\",\n              \"format\": \"date-time\",\n              \"in\": \"query\",\n              \"name\": \"date_to\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filters to events with a matching editorial segment.\",\n              \"enum\": [\n                \"archival\",\n                \"entertainment\",\n                \"news\",\n                \"publicity\",\n                \"royalty\",\n                \"sport\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"editorial_segment\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Default set is 'id','name','start_date'.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"id\",\n                  \"child_event_count\",\n                  \"editorial_segments\",\n                  \"hero_image\",\n                  \"image_count\",\n                  \"keywords\",\n                  \"location\",\n                  \"name\",\n                  \"start_date\",\n                  \"type\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Request results starting at a page number (default is 1, maximum is 50).\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Request number of images to return in each page.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filters to events related to this phrase\",\n              \"in\": \"query\",\n              \"name\": \"phrase\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Search.EventsSearchResult\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            }\n          },\n          \"summary\": \"Search for events\",\n          \"tags\": [\n            \"Search\"\n          ]\n        }\n      },\n      \"/v3/search/images\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to search over a blend of our contemporary stock photos, illustrations, archival images, editorial photos, illustrations and archival images.  \\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\\r\\n\\r\\nYou can show different information in the response by specifying values on the \\\"fields\\\" parameter (see details below).\\r\\nYou can search with only an API key, and that will give you search results that are equivalent to doing a search on the GettyImages.com site without being logged in (anonymous search).  If you are a Getty Images API customer and would like to ensure that your API searches return only assets that you have a license to use, you need to also include an authorization token in the header of your request.  Please consult our [Authorization FAQ](http://developers.gettyimages.com/en/authorization-faq.html) for more information on authorization tokens, and our [Authorization Workflows](https://github.com/gettyimages/gettyimages-api/blob/master/OAuth2Workflow.md) for code examples of getting a token.\\r\\nTo include your API token in the search request, add it to the headers as a Bearer token (example in curl):\\r\\n\\r\\n\\t-H \\\"Authorization: Bearer <your-token>\\\"\\r\\n\\r\\n## Working with Fields Sets\\r\\n\\r\\nFields sets are used in the **fields** request parameter to receive a suite of metadata fields. The following fields sets are available:\\r\\n\\r\\n#### Summary Fields Set\\r\\n\\r\\nThe **summary_set** query string parameter fields value represents a small batch of metadata fields that are often used to build search response results. The following fields are provided for every image in your result set when you include **summary_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\": \\r\\n    [\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Detail Fields Set\\r\\n\\r\\nThe **detail_set** query string parameter fields value represents a large batch of metadata fields that are often used to build a detailed view of images. \\r\\nThe following fields are provided for every image in your result set when you include **detail_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\": \\r\\n    [\\r\\n        \\\"allowed_use\\\",\\r\\n        \\\"artist\\\",\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"call_for_image\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"copyright\\\",\\r\\n        \\\"date_created\\\",\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"editorial_segments\\\",\\r\\n        \\\"event_ids\\\",\\r\\n        \\\"graphical_style\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"orientation\\\",\\r\\n        \\\"product_types\\\",\\r\\n        \\\"quality_rank\\\",\\r\\n        \\\"referral_destinations\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n]\\r\\n```\\r\\n\\r\\n#### Display Fields Set\\r\\n\\r\\nThe **display_set** query string parameter fields value represents the fields that provide you with URLs for the low resolution files that are most \\r\\nfrequently used to build a UI displaying search results. The following fields are provided for every image in your result set when you include **display_set**\\r\\nin your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\": \\r\\n    [\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n## Request Usage Considerations\\r\\n\\r\\n- Specifying the \\\"entity_details\\\" response field can have significant performance implications. The field should be used only when necessary.\\r\\n\",\n          \"operationId\": \"Search_GetImagesByPhrase\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on the age of individuals in an image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"newborn\",\n                  \"baby\",\n                  \"child\",\n                  \"teenager\",\n                  \"young_adult\",\n                  \"adult\",\n                  \"adults_only\",\n                  \"mature_adult\",\n                  \"senior_adult\",\n                  \"0-1_months\",\n                  \"2-5_months\",\n                  \"6-11_months\",\n                  \"12-17_months\",\n                  \"18-23_months\",\n                  \"2-3_years\",\n                  \"4-5_years\",\n                  \"6-7_years\",\n                  \"8-9_years\",\n                  \"10-11_years\",\n                  \"12-13_years\",\n                  \"14-15_years\",\n                  \"16-17_years\",\n                  \"18-19_years\",\n                  \"20-24_years\",\n                  \"20-29_years\",\n                  \"25-29_years\",\n                  \"30-34_years\",\n                  \"30-39_years\",\n                  \"35-39_years\",\n                  \"40-44_years\",\n                  \"40-49_years\",\n                  \"45-49_years\",\n                  \"50-54_years\",\n                  \"50-59_years\",\n                  \"55-59_years\",\n                  \"60-64_years\",\n                  \"60-69_years\",\n                  \"65-69_years\",\n                  \"70-79_years\",\n                  \"80-89_years\",\n                  \"90_plus_years\",\n                  \"100_over\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"age_of_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Search for images by specific artists (free-text, comma-separated list of artists).\",\n              \"in\": \"query\",\n              \"name\": \"artists\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter by collection codes (comma-separated list). Include or exclude based on collections_filter_type.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"collection_codes\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Provides searching based on specified collection(s).\",\n              \"enum\": [\n                \"include\",\n                \"exclude\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"collections_filter_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter based on predominant color in an image. Use 6 character hexidecimal format (e.g., #002244). Note: when specified, results will not contain editorial images.\",\n              \"in\": \"query\",\n              \"name\": \"color\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on image composition.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"abstract\",\n                  \"candid\",\n                  \"close_up\",\n                  \"copy_space\",\n                  \"cut_out\",\n                  \"full_frame\",\n                  \"full_length\",\n                  \"headshot\",\n                  \"looking_at_camera\",\n                  \"macro\",\n                  \"portrait\",\n                  \"sparse\",\n                  \"still_life\",\n                  \"three_quarter_length\",\n                  \"waist_up\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"compositions\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Restrict search results to embeddable images. The default is false.\",\n              \"in\": \"query\",\n              \"name\": \"embed_content_only\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter search results based on the ethnicity of individuals in an image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"black\",\n                  \"caucasian\",\n                  \"east_asian\",\n                  \"hispanic_latino\",\n                  \"japanese\",\n                  \"middle_eastern\",\n                  \"mixed_race_person\",\n                  \"multiethnic_group\",\n                  \"native_american_first_nations\",\n                  \"pacific_islander\",\n                  \"south_asian\",\n                  \"southeast_asian\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"ethnicity\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on specific events\",\n              \"in\": \"query\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"type\": \"integer\"\n              },\n              \"name\": \"event_ids\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Excludes images containing nudity. The default is false.\",\n              \"in\": \"query\",\n              \"name\": \"exclude_nudity\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Defaults to 'summary_set'.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"accessrestriction\",\n                  \"allowed_use\",\n                  \"alternative_ids\",\n                  \"artist\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"comp\",\n                  \"copyright\",\n                  \"date_camera_shot\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"editorial_segments\",\n                  \"editorial_source\",\n                  \"entity_details\",\n                  \"event_ids\",\n                  \"graphical_style\",\n                  \"id\",\n                  \"istock_collection\",\n                  \"keywords\",\n                  \"largest_downloads\",\n                  \"license_model\",\n                  \"max_dimensions\",\n                  \"orientation\",\n                  \"people\",\n                  \"preview\",\n                  \"product_types\",\n                  \"quality_rank\",\n                  \"referral_destinations\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"uri_oembed\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images having a specific file type.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"eps\",\n                  \"jpg\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"file_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on graphical style of the image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"fine_art\",\n                  \"illustration\",\n                  \"photography\",\n                  \"vector\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"graphical_styles\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Provides searching based on specified graphical style(s).\",\n              \"enum\": [\n                \"include\",\n                \"exclude\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"graphical_styles_filter_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images tagged with specific keyword(s). Specify using a comma-separated list of keyword Ids. If keyword Ids and phrase are both specified, only those images matching the query phrase which also contain the requested keyword(s) are returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"type\": \"integer\"\n              },\n              \"name\": \"keyword_ids\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies the image licensing model(s).\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"rightsmanaged\",\n                  \"royaltyfree\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"license_models\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Filter based on minimum size requested.\",\n              \"enum\": [\n                \"x_small\",\n                \"small\",\n                \"medium\",\n                \"large\",\n                \"x_large\",\n                \"xx_large\",\n                \"vector\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"minimum_size\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on the number of people in the image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"none\",\n                  \"one\",\n                  \"two\",\n                  \"group\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"number_of_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images with selected aspect ratios.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"Horizontal\",\n                  \"Vertical\",\n                  \"Square\",\n                  \"PanoramicHorizontal\",\n                  \"PanoramicVertical\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"orientations\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Request results starting at a page number (default is 1).\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Request number of images to return in each page.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Search images using a search phrase.\",\n              \"in\": \"query\",\n              \"name\": \"phrase\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter images to those from one of your product types. \\r\\n                    Allowed values are easyaccess, editorialsubscription, imagepack, premiumaccess and royaltyfreesubscription. \\r\\n                    If you have more than one instance of a product, you may also include the ID of the product instance you wish to filter on. \\r\\n                    For example, some users may have more than one premiumaccess product, so the product_types value would be premiumaccess:1234. \\r\\n                    Product ID can be obtained from the GET /products response.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"product_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Select sort order of results.\",\n              \"enum\": [\n                \"best_match\",\n                \"most_popular\",\n                \"newest\",\n                \"random\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sort_order\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images associated with specific people (using a comma-delimited list).\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"specific_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Search.SearchResults[GettyImages.Models.Search.ImageSearchItem]\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            }\n          },\n          \"summary\": \"Search for both creative and editorial images\",\n          \"tags\": [\n            \"Search\"\n          ]\n        }\n      },\n      \"/v3/search/images/creative\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to search our contemporary stock photos, illustrations and archival images.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) \\r\\npage for more information on how to sign up for an API key. \\r\\n \\r\\nYou can show different information in the response by specifying values on the \\\"fields\\\" parameter (see details below).\\r\\nYou can search with only an API key, and that will give you search results that are equivalent to doing a search on the GettyImages.com site without being logged in (anonymous search).  If you are a Getty Images API customer and would like to ensure that your API searches return only assets that you have a license to use, you need to also include an authorization token in the header of your request.  Please consult our [Authorization FAQ](http://developers.gettyimages.com/en/authorization-faq.html) for more information on authorization tokens, and our [Authorization Workflows](https://github.com/gettyimages/gettyimages-api/blob/master/OAuth2Workflow.md) for code examples of getting a token.\\r\\n\\r\\n## Working with Fields Sets\\r\\n\\r\\nFields sets are used in the **fields** request parameter to receive a suite of metadata fields. The following fields sets are available:\\r\\n\\r\\n#### Summary Fields Set\\r\\n\\r\\nThe **summary_set** query string parameter fields value represents a small batch of metadata fields that are often used to \\r\\nbuild search response results. The following fields are provided for every image in your result set when you include **summary_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\": \\r\\n    [\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Detail Fields Set\\r\\n\\r\\nThe **detail_set** query string parameter fields value represents a large batch of metadata fields that are often used to \\r\\nbuild a detailed view of images. The following fields are provided for every image in your result set when you include **detail_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\": \\r\\n    [\\r\\n        \\\"allowed_use\\\",\\r\\n        \\\"artist\\\",\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"call_for_image\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"copyright\\\",\\r\\n        \\\"date_created\\\",\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"editorial_segments\\\",\\r\\n        \\\"event_ids\\\",\\r\\n        \\\"graphical_style\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"orientation\\\",\\r\\n        \\\"product_types\\\",\\r\\n        \\\"quality_rank\\\",\\r\\n        \\\"referral_destinations\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n]\\r\\n```\\r\\n\\r\\n#### Display Fields Set\\r\\n\\r\\nThe **display_set** query string parameter fields value represents the fields that provide you with URLs for the low resolution\\r\\nfiles that are most frequently used to build a UI displaying search results. The following fields are provided for every image \\r\\nin your result set when you include **display_set** in your request.\\r\\n\\r\\n```Go\\r\\n{\\r\\n    \\\"images\\\": \\r\\n    [\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\",\n          \"operationId\": \"Search_GetCreativeImagesByPhrase\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on the age of individuals in an image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"newborn\",\n                  \"baby\",\n                  \"child\",\n                  \"teenager\",\n                  \"young_adult\",\n                  \"adult\",\n                  \"adults_only\",\n                  \"mature_adult\",\n                  \"senior_adult\",\n                  \"0-1_months\",\n                  \"2-5_months\",\n                  \"6-11_months\",\n                  \"12-17_months\",\n                  \"18-23_months\",\n                  \"2-3_years\",\n                  \"4-5_years\",\n                  \"6-7_years\",\n                  \"8-9_years\",\n                  \"10-11_years\",\n                  \"12-13_years\",\n                  \"14-15_years\",\n                  \"16-17_years\",\n                  \"18-19_years\",\n                  \"20-24_years\",\n                  \"20-29_years\",\n                  \"25-29_years\",\n                  \"30-34_years\",\n                  \"30-39_years\",\n                  \"35-39_years\",\n                  \"40-44_years\",\n                  \"40-49_years\",\n                  \"45-49_years\",\n                  \"50-54_years\",\n                  \"50-59_years\",\n                  \"55-59_years\",\n                  \"60-64_years\",\n                  \"60-69_years\",\n                  \"65-69_years\",\n                  \"70-79_years\",\n                  \"80-89_years\",\n                  \"90_plus_years\",\n                  \"100_over\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"age_of_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Search for images by specific artists (free-text, comma-separated list of artists).\",\n              \"in\": \"query\",\n              \"name\": \"artists\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter by collection codes (comma-separated list). Include or exclude based on collections_filter_type.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"collection_codes\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Use to include or exclude collections from search.\",\n              \"enum\": [\n                \"include\",\n                \"exclude\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"collections_filter_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Filter based on predominant color in an image. Use 6 character hexidecimal format (e.g., #002244).\",\n              \"in\": \"query\",\n              \"name\": \"color\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on image composition.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"abstract\",\n                  \"candid\",\n                  \"close_up\",\n                  \"copy_space\",\n                  \"cut_out\",\n                  \"full_frame\",\n                  \"full_length\",\n                  \"headshot\",\n                  \"looking_at_camera\",\n                  \"macro\",\n                  \"portrait\",\n                  \"sparse\",\n                  \"still_life\",\n                  \"three_quarter_length\",\n                  \"waist_up\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"compositions\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Restrict search results to embeddable images. The default is false.\",\n              \"in\": \"query\",\n              \"name\": \"embed_content_only\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter search results based on the ethnicity of individuals in an image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"black\",\n                  \"caucasian\",\n                  \"east_asian\",\n                  \"hispanic_latino\",\n                  \"japanese\",\n                  \"middle_eastern\",\n                  \"mixed_race_person\",\n                  \"multiethnic_group\",\n                  \"native_american_first_nations\",\n                  \"pacific_islander\",\n                  \"south_asian\",\n                  \"southeast_asian\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"ethnicity\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Exclude images that are only available for editorial (non-commercial) use. Default value is false.\",\n              \"in\": \"query\",\n              \"name\": \"exclude_editorial_use_only\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Excludes images containing nudity. The default is false.\",\n              \"in\": \"query\",\n              \"name\": \"exclude_nudity\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies the facets to return in the response. Facets provide additional search parameters to refine your results.\\r\\n                   The include_facets parameter must be set to \\\"true\\\" for facets to be returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"artists\",\n                  \"locations\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"facet_fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Specifies the maximum number of facets to return per type. Default is 300.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"facet_max_count\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Defaults to 'summary_set'.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"allowed_use\",\n                  \"alternative_ids\",\n                  \"artist\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"comp\",\n                  \"copyright\",\n                  \"date_camera_shot\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"graphical_style\",\n                  \"id\",\n                  \"istock_collection\",\n                  \"keywords\",\n                  \"largest_downloads\",\n                  \"license_model\",\n                  \"max_dimensions\",\n                  \"orientation\",\n                  \"preview\",\n                  \"product_types\",\n                  \"quality_rank\",\n                  \"referral_destinations\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"uri_oembed\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images having a specific file type.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"eps\",\n                  \"jpg\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"file_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on graphical style of the image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"fine_art\",\n                  \"illustration\",\n                  \"photography\",\n                  \"vector\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"graphical_styles\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Provides searching based on specified graphical style(s).\",\n              \"enum\": [\n                \"include\",\n                \"exclude\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"graphical_styles_filter_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Specifies whether or not to include facets in the result set. Default is \\\"false\\\".\",\n              \"in\": \"query\",\n              \"name\": \"include_facets\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images tagged with specific keyword(s). Specify using a comma-separated list of keyword Ids. If keyword Ids and phrase are both specified, only those images matching the query phrase which also contain the requested keyword(s) are returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"type\": \"integer\"\n              },\n              \"name\": \"keyword_ids\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies the image licensing model(s).\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"rightsmanaged\",\n                  \"royaltyfree\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"license_models\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Filter based on minimum size requested.\",\n              \"enum\": [\n                \"x_small\",\n                \"small\",\n                \"medium\",\n                \"large\",\n                \"x_large\",\n                \"xx_large\",\n                \"vector\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"minimum_size\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on the number of people in the image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"none\",\n                  \"one\",\n                  \"two\",\n                  \"group\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"number_of_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images with selected aspect ratios.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"Horizontal\",\n                  \"Vertical\",\n                  \"Square\",\n                  \"PanoramicHorizontal\",\n                  \"PanoramicVertical\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"orientations\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Request results starting at a page number (default is 1).\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Request number of images to return in each page.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Search images using a search phrase.\",\n              \"in\": \"query\",\n              \"name\": \"phrase\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter images to those from one of your product types. \\r\\n                    Allowed values are easyaccess, editorialsubscription, imagepack, premiumaccess and royaltyfreesubscription. \\r\\n                    If you have more than one instance of a product, you may also include the ID of the product instance you wish to filter on. \\r\\n                    For example, some users may have more than one premiumaccess product, so the product_types value would be premiumaccess:1234. \\r\\n                    Product ID can be obtained from the GET /products response.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"product_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Select sort order of results.\",\n              \"enum\": [\n                \"best_match\",\n                \"most_popular\",\n                \"newest\",\n                \"random\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sort_order\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Search.CreativeImageSearchResults\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            },\n            \"500\": {\n              \"description\": \"InvalidIStockCollection\"\n            }\n          },\n          \"summary\": \"Search for creative images only\",\n          \"tags\": [\n            \"Search\"\n          ]\n        }\n      },\n      \"/v3/search/images/creative/by-image\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Allows searching for similar creative images by passing the URL to an existing image.\\r\\n\\r\\nBefore calling the search by image endpoint, an image must be uploaded to a specific AWS S3 bucket. The bucket name is `search-by-image.s3.amazonaws.com`.\\r\\nFor example, using cURL:\\r\\n```sh\\r\\ncurl -i -X PUT https://search-by-image.s3.amazonaws.com/my-test-image.jpg -H \\\"Content-Type: image/jpeg\\\" --data-binary \\\"@testimage.jpg\\\"\\r\\n```\\r\\n\\r\\nUploads can be overwritten if the names are the same, so using a prefix like the API Key, application name or company name would help keep that\\r\\nfrom happening.\\r\\n\\r\\nOnce the image has been uploaded, use the full URL in the `image_url` parameter, e.g. `image_url=https://search-by-image.s3.amazonaws.com/my-test-image.jpg`.\\r\\n\\r\\nSubsequent searches for the same image can be executed using the `image_fingerprint` that is returned by the inital search.\\r\\n\",\n          \"operationId\": \"Search_GetCreativeImagesByUrl\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies the facets to return in the response. Facets provide additional search parameters to refine your results.\\r\\n                    The include_facets parameter must be set to \\\"true\\\" for facets to be returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"artists\",\n                  \"locations\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"facet_fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Specifies the maximum number of facets to return per type. Default is 300.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"facet_max_count\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Defaults to 'summary_set'.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"allowed_use\",\n                  \"alternative_ids\",\n                  \"artist\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"comp\",\n                  \"copyright\",\n                  \"date_camera_shot\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"graphical_style\",\n                  \"id\",\n                  \"istock_collection\",\n                  \"keywords\",\n                  \"largest_downloads\",\n                  \"license_model\",\n                  \"max_dimensions\",\n                  \"orientation\",\n                  \"preview\",\n                  \"product_types\",\n                  \"quality_rank\",\n                  \"referral_destinations\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"uri_oembed\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Specifies the fingerprint of the image to use in the search.\",\n              \"in\": \"query\",\n              \"name\": \"image_fingerprint\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Specifies the location of the image to use in the search.\",\n              \"in\": \"query\",\n              \"name\": \"image_url\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Specifies whether or not to include facets in the result set. Default is \\\"false\\\".\",\n              \"in\": \"query\",\n              \"name\": \"include_facets\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"description\": \"Request results starting at a page number (default is 1).\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Request number of images to return in each page.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter images to those from one of your product types. \\r\\n                    Allowed values are easyaccess, imagepack, premiumaccess and royaltyfreesubscription. \\r\\n                    If you have more than one instance of a product, you may also include the ID of the product instance you wish to filter on. \\r\\n                    For example, some users may have more than one premiumaccess product, so the product_types value would be premiumaccess:1234. \\r\\n                    Product ID can be obtained from the GET /products response.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"product_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/System.Object\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            },\n            \"500\": {\n              \"description\": \"InvalidIStockCollection\"\n            }\n          },\n          \"summary\": \"Search for creative images based on url\",\n          \"tags\": [\n            \"Search\"\n          ]\n        }\n      },\n      \"/v3/search/images/editorial\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to search our editorial stock photos, illustrations and archival images.  Editorial images represent newsworthy events or illustrate matters of general interest, such as news, sport and entertainment and are generally intended for editorial use.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) \\r\\npage for more information on how to sign up for an API key.\\r\\n\\r\\nYou can show different information in the response by specifying values on the \\\"fields\\\" parameter (see details below).\\r\\nYou can search with only an API key, and that will give you search results that are equivalent to doing a search on the GettyImages.com site without being logged in (anonymous search).  If you are a Getty Images API customer and would like to ensure that your API searches return only assets that you have a license to use, you need to also include an authorization token in the header of your request.  Please consult our [Authorization FAQ](http://developers.gettyimages.com/en/authorization-faq.html) for more information on authorization tokens, and our [Authorization Workflows](https://github.com/gettyimages/gettyimages-api/blob/master/OAuth2Workflow.md) for code examples of getting a token.\\r\\nTo include your API token in the search request, add it to the headers as a Bearer token (example in curl):\\r\\n\\r\\n\\t-H \\\"Authorization: Bearer <your-token>\\\"\\r\\n\\r\\n## Working with Fields Sets\\r\\n\\r\\nFields sets are used in the **fields** request parameter to receive a suite of metadata fields. The following fields sets are available:\\r\\n\\r\\n#### Summary Fields Set\\r\\n\\r\\nThe **summary_set** query string parameter fields value represents a small batch of metadata fields that are often used to build search response results. The following fields are provided for every image in your result set when you include **summary_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\": \\r\\n    [\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Detail Fields Set\\r\\n\\r\\nThe **detail_set** query string parameter fields value represents a large batch of metadata fields that are often used to build a detailed view of images. The following fields are provided for every image in your result set when you include **detail_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\": \\r\\n    [\\r\\n        \\\"allowed_use\\\",\\r\\n        \\\"artist\\\",\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"call_for_image\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"copyright\\\",\\r\\n        \\\"date_created\\\",\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"editorial_segments\\\",\\r\\n        \\\"event_ids\\\",\\r\\n        \\\"graphical_style\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"max_dimensions\\\",\\r\\n        \\\"orientation\\\",\\r\\n        \\\"product_types\\\",\\r\\n        \\\"quality_rank\\\",\\r\\n        \\\"referral_destinations\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n]\\r\\n```\\r\\n\\r\\n#### Display Fields Set\\r\\n\\r\\nThe **display_set** query string parameter fields value represents the fields that provide you with URLs for the low resolution files that are most frequently used to build a UI displaying search results. The following fields are provided for every image in your result set when you include **display_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"images\\\": \\r\\n    [\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n## Request Usage Considerations\\r\\n\\r\\n- Specifying the \\\"entity_details\\\" response field can have significant performance implications. The field should be used only when necessary.\\r\\n\",\n          \"operationId\": \"Search_GetEditorialImagesByPhrase\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on the age of individuals in an image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"newborn\",\n                  \"baby\",\n                  \"child\",\n                  \"teenager\",\n                  \"young_adult\",\n                  \"adult\",\n                  \"adults_only\",\n                  \"mature_adult\",\n                  \"senior_adult\",\n                  \"0-1_months\",\n                  \"2-5_months\",\n                  \"6-11_months\",\n                  \"12-17_months\",\n                  \"18-23_months\",\n                  \"2-3_years\",\n                  \"4-5_years\",\n                  \"6-7_years\",\n                  \"8-9_years\",\n                  \"10-11_years\",\n                  \"12-13_years\",\n                  \"14-15_years\",\n                  \"16-17_years\",\n                  \"18-19_years\",\n                  \"20-24_years\",\n                  \"20-29_years\",\n                  \"25-29_years\",\n                  \"30-34_years\",\n                  \"30-39_years\",\n                  \"35-39_years\",\n                  \"40-44_years\",\n                  \"40-49_years\",\n                  \"45-49_years\",\n                  \"50-54_years\",\n                  \"50-59_years\",\n                  \"55-59_years\",\n                  \"60-64_years\",\n                  \"60-69_years\",\n                  \"65-69_years\",\n                  \"70-79_years\",\n                  \"80-89_years\",\n                  \"90_plus_years\",\n                  \"100_over\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"age_of_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Search for images by specific artists (free-text, comma-separated list of artists).\",\n              \"in\": \"query\",\n              \"name\": \"artists\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter by collections (comma-separated list of collection codes). Include or exclude based on collections_filter_type.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"collection_codes\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Use to include or exclude collections from search.\",\n              \"enum\": [\n                \"include\",\n                \"exclude\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"collections_filter_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on image composition.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"abstract\",\n                  \"candid\",\n                  \"close_up\",\n                  \"copy_space\",\n                  \"cut_out\",\n                  \"full_frame\",\n                  \"full_length\",\n                  \"headshot\",\n                  \"looking_at_camera\",\n                  \"macro\",\n                  \"portrait\",\n                  \"sparse\",\n                  \"still_life\",\n                  \"three_quarter_length\",\n                  \"waist_up\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"compositions\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Return only images that are created on or after this date. Use ISO 8601 format (e.g., 1999-12-31).\",\n              \"format\": \"date-time\",\n              \"in\": \"query\",\n              \"name\": \"date_from\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Return only images that are created on or before this date. Use ISO 8601 format (e.g., 1999-12-31).\",\n              \"format\": \"date-time\",\n              \"in\": \"query\",\n              \"name\": \"date_to\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only events with a matching editorial segment.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"archival\",\n                  \"entertainment\",\n                  \"news\",\n                  \"publicity\",\n                  \"royalty\",\n                  \"sport\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"editorial_segments\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Restrict search results to embeddable images. The default is false.\",\n              \"in\": \"query\",\n              \"name\": \"embed_content_only\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"specify linked data entity uri.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"entity_uris\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter search results based on the ethnicity of individuals in an image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"black\",\n                  \"caucasian\",\n                  \"east_asian\",\n                  \"hispanic_latino\",\n                  \"japanese\",\n                  \"middle_eastern\",\n                  \"mixed_race_person\",\n                  \"multiethnic_group\",\n                  \"native_american_first_nations\",\n                  \"pacific_islander\",\n                  \"south_asian\",\n                  \"southeast_asian\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"ethnicity\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on specific events\",\n              \"in\": \"query\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"type\": \"integer\"\n              },\n              \"name\": \"event_ids\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies the facets to return in the response. Facets provide additional search parameters to refine your results.\\r\\n                   The include_facets parameter must be set to \\\"true\\\" for facets to be returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"artists\",\n                  \"events\",\n                  \"locations\",\n                  \"specific_people\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"facet_fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Specifies the maximum number of facets to return per type. Default is 300.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"facet_max_count\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Defaults to 'summary_set'.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"allowed_use\",\n                  \"alternative_ids\",\n                  \"artist\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"comp\",\n                  \"copyright\",\n                  \"date_camera_shot\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"editorial_segments\",\n                  \"editorial_source\",\n                  \"entity_details\",\n                  \"event_ids\",\n                  \"graphical_style\",\n                  \"id\",\n                  \"keywords\",\n                  \"largest_downloads\",\n                  \"license_model\",\n                  \"max_dimensions\",\n                  \"orientation\",\n                  \"people\",\n                  \"preview\",\n                  \"product_types\",\n                  \"quality_rank\",\n                  \"referral_destinations\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"uri_oembed\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images having a specific file type.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"eps\",\n                  \"jpg\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"file_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on graphical style of the image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"photography\",\n                  \"illustration\",\n                  \"vector\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"graphical_styles\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Provides searching based on specified graphical style(s).\",\n              \"enum\": [\n                \"include\",\n                \"exclude\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"graphical_styles_filter_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Specifies whether or not to include facets in the result set. Default is \\\"false\\\".\",\n              \"in\": \"query\",\n              \"name\": \"include_facets\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images tagged with specific keyword(s). Specify using a comma-separated list of keyword Ids. If keyword Ids and phrase are both specified, only those images matching the query phrase which also contain the requested keyword(s) are returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"type\": \"integer\"\n              },\n              \"name\": \"keyword_ids\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Filter search results based on minimum quality ranking. Possible values 1, 2, 3 with 1 being best.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"minimum_quality_rank\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Filter based on minimum size requested.\",\n              \"enum\": [\n                \"x_small\",\n                \"small\",\n                \"medium\",\n                \"large\",\n                \"x_large\",\n                \"xx_large\",\n                \"vector\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"minimum_size\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter based on the number of people in the image.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"none\",\n                  \"one\",\n                  \"two\",\n                  \"group\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"number_of_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images with selected aspect ratios.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"Horizontal\",\n                  \"Vertical\",\n                  \"Square\",\n                  \"PanoramicHorizontal\",\n                  \"PanoramicVertical\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"orientations\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Request results starting at a page number (default is 1).\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Request number of images to return in each page.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Search images using a search phrase.\",\n              \"in\": \"query\",\n              \"name\": \"phrase\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter images to those from one of your product types. \\r\\n                    Allowed values are easyaccess, editorialsubscription, imagepack, premiumaccess and royaltyfreesubscription. \\r\\n                    If you have more than one instance of a product, you may also include the ID of the product instance you wish to filter on. \\r\\n                    For example, some users may have more than one premiumaccess product, so the product_types value would be premiumaccess:1234. \\r\\n                    Product ID can be obtained from the GET /products response.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"product_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Select sort order of results.\",\n              \"enum\": [\n                \"best_match\",\n                \"most_popular\",\n                \"newest\",\n                \"oldest\",\n                \"random\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sort_order\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images associated with specific people (using a comma-delimited list).\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"specific_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Search.EditorialImageSearchResults\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            }\n          },\n          \"summary\": \"Search for editorial images only\",\n          \"tags\": [\n            \"Search\"\n          ]\n        }\n      },\n      \"/v3/search/videos\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to search over a blend of our premium stock, contemporary 4K and HD footage, celebrities, news, newsmakers, entertainment, events and archival videos.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\\r\\n\\r\\nYou can show different information in the response by specifying values on the \\\"fields\\\" parameter (see details below).\\r\\nYou can search with only an API key, and that will give you search results that are equivalent to doing a search on the GettyImages.com site without being logged in (anonymous search).  If you are a Getty Images API customer and would like to ensure that your API searches return only assets that you have a license to use, you need to also include an authorization token in the header of your request.  Please consult our [Authorization FAQ](http://developers.gettyimages.com/en/authorization-faq.html) for more information on authorization tokens, and our [Authorization Workflows](https://github.com/gettyimages/gettyimages-api/blob/master/OAuth2Workflow.md) for code examples of getting a token.\\r\\n\\r\\n## Working with Fields Sets\\r\\n\\r\\nFields sets are used in the **fields** request parameter to receive a suite of metadata fields. The following fields sets are available:\\r\\n\\r\\n#### Summary Fields Set\\r\\n\\r\\nThe **summary_set** query string parameter fields value represents a small batch of metadata fields that are often used to build search response results. The following fields are provided for every video in your result set when you include **summary_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\":\\r\\n    [\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"license_model\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Detail Fields Set\\r\\n\\r\\nThe **detail_set** query string parameter fields value represents a large batch of metadata fields that are often used to build a detailed view of videos. The following fields are provided for every video in your result set when you include **detail_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\":\\r\\n    [\\r\\n        \\\"allowed_use\\\",\\r\\n        \\\"artist\\\",\\r\\n        \\\"asset_family\\\",\\r\\n\\t\\t\\\"call_for_image\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"clip_length\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"color_type\\\",\\r\\n        \\\"copyright\\\",\\r\\n        \\\"date_created\\\",\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"era\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"mastered_to\\\",\\r\\n        \\\"originally_shot_on\\\",\\r\\n        \\\"product_types\\\",\\r\\n        \\\"shot_speed\\\",\\r\\n        \\\"source\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Display Fields Set\\r\\n\\r\\nThe **display_set** query string parameter fields value represents the fields that provide you with URLs for the low resolution files that are most frequently used to build a UI displaying search results. The following fields are provided for every video in your result set when you include **display_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\":\\r\\n    [\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n## Request Usage Considerations\\r\\n\\r\\n- Specifying the \\\"entity_details\\\" response field can have significant performance implications. The field should be used only when necessary.\\r\\n\",\n          \"operationId\": \"Search_GetVideosByPhrase\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Provides filtering according to the age of individuals in a video.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"newborn\",\n                  \"baby\",\n                  \"child\",\n                  \"teenager\",\n                  \"young_adult\",\n                  \"adult\",\n                  \"adults_only\",\n                  \"mature_adult\",\n                  \"senior_adult\",\n                  \"0-1_months\",\n                  \"2-5_months\",\n                  \"6-11_months\",\n                  \"12-17_months\",\n                  \"18-23_months\",\n                  \"2-3_years\",\n                  \"4-5_years\",\n                  \"6-7_years\",\n                  \"8-9_years\",\n                  \"10-11_years\",\n                  \"12-13_years\",\n                  \"14-15_years\",\n                  \"16-17_years\",\n                  \"18-19_years\",\n                  \"20-24_years\",\n                  \"20-29_years\",\n                  \"25-29_years\",\n                  \"30-34_years\",\n                  \"30-39_years\",\n                  \"35-39_years\",\n                  \"40-44_years\",\n                  \"40-49_years\",\n                  \"45-49_years\",\n                  \"50-54_years\",\n                  \"50-59_years\",\n                  \"55-59_years\",\n                  \"60-64_years\",\n                  \"60-69_years\",\n                  \"65-69_years\",\n                  \"70-79_years\",\n                  \"80-89_years\",\n                  \"90_plus_years\",\n                  \"100_over\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"age_of_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Provides filtering by collection code.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"collection_codes\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Provides searching based on specified collection(s).\",\n              \"enum\": [\n                \"include\",\n                \"exclude\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"collections_filter_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Allows filtering by types of video.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"raw\",\n                  \"produced\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"editorial_video_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Defaults to 'summary_set'.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"allowed_use\",\n                  \"artist\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"clip_length\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"comp\",\n                  \"copyright\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"editorial_segments\",\n                  \"entity_details\",\n                  \"era\",\n                  \"id\",\n                  \"istock_collection\",\n                  \"keywords\",\n                  \"largest_downloads\",\n                  \"license_model\",\n                  \"mastered_to\",\n                  \"originally_shot_on\",\n                  \"object_name\",\n                  \"preview\",\n                  \"product_types\",\n                  \"referral_destinations\",\n                  \"shot_speed\",\n                  \"source\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"istock_licenses\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Filters according to the digital video format available on a film asset.\",\n              \"enum\": [\n                \"sd\",\n                \"hd\",\n                \"4k\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"format_available\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Provides filtering by video frame rate (frames/second).\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"23.98\",\n                  \"24\",\n                  \"25\",\n                  \"29.97\",\n                  \"30\",\n                  \"50\",\n                  \"59.94\",\n                  \"60\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"frame_rates\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images tagged with specific keyword(s). Specify using a comma-separated list of keyword Ids. If keyword Ids and phrase are both specified, only those images matching the query phrase which also contain the requested keyword(s) are returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"type\": \"integer\"\n              },\n              \"name\": \"keyword_ids\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies the video licensing model(s).\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"rightsready\",\n                  \"royaltyfree\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"license_models\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Identifies page to return. Default is 1.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies page size. Default is 30, maximum page_size is 100.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Free-text search query.\",\n              \"in\": \"query\",\n              \"name\": \"phrase\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter images to those from one of your product types. \\r\\n                    Allowed values are easyaccess, editorialsubscription, imagepack, premiumaccess and royaltyfreesubscription. \\r\\n                    If you have more than one instance of a product, you may also include the ID of the product instance you wish to filter on. \\r\\n                    For example, some users may have more than one premiumaccess product, so the product_types value would be premiumaccess:1234. \\r\\n                    Product ID can be obtained from the GET /products response.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"product_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Allows filtering by type of model release.\",\n              \"enum\": [\n                \"release_not_important\",\n                \"fully_released\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"release_status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Allows sorting of results.\",\n              \"enum\": [\n                \"best_match\",\n                \"most_popular\",\n                \"newest\",\n                \"oldest\",\n                \"random\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sort_order\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Provides filtering by specific peoples' names.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"specific_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Search.VideoSearchResults[GettyImages.Models.Artists.VideoSearchItem]\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            }\n          },\n          \"summary\": \"Search for both creative and editorial videos\",\n          \"tags\": [\n            \"Search\"\n          ]\n        }\n      },\n      \"/v3/search/videos/creative\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to search premium stock video, from archival film to contemporary 4K and HD footage.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html)\\r\\npage for more information on how to sign up for an API key.\\r\\n\\r\\nYou can show different information in the response by specifying values on the \\\"fields\\\" parameter (see details below).\\r\\nYou can search with only an API key, and that will give you search results that are equivalent to doing a search on the GettyImages.com site without\\r\\nbeing logged in (anonymous search).  If you are a Getty Images API customer and would like to ensure that your API searches return only \\r\\nassets that you have a license to use, you need to also include an authorization token in the header of your request.\\r\\nPlease consult our [Authorization FAQ](http://developers.gettyimages.com/en/authorization-faq.html) for more information on authorization tokens.\\r\\n\\r\\n## Working with Fields Sets\\r\\n\\r\\nFields sets are used in the **fields** request parameter to receive a suite of metadata fields. The following fields sets are available:\\r\\n\\r\\n#### Summary Fields Set\\r\\n\\r\\nThe **summary_set** query string parameter fields value represents a small batch of metadata fields that are often used to build search\\r\\nresponse results. The following fields are provided for every video in your result set when you include **summary_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\": \\r\\n    [\\r\\n        \\\"asset_family\\\", \\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"license_model\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Detail Fields Set\\r\\n\\r\\nThe **detail_set** query string parameter fields value represents a large batch of metadata fields that are often used to build a \\r\\ndetailed view of videos. The following fields are provided for every video in your result set when you include **detail_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\": \\r\\n    [\\r\\n        \\\"allowed_use\\\",\\r\\n        \\\"artist\\\",\\r\\n        \\\"asset_family\\\", \\r\\n\\t\\t\\\"call_for_image\\\",\\r\\n        \\\"caption\\\", \\r\\n        \\\"clip_length\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\", \\r\\n        \\\"color_type\\\",\\r\\n        \\\"copyright\\\",\\r\\n        \\\"date_created\\\",\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"era\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"mastered_to\\\",\\r\\n        \\\"originally_shot_on\\\",\\r\\n        \\\"product_types\\\",\\r\\n        \\\"shot_speed\\\",\\r\\n        \\\"source\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Display Fields Set\\r\\n\\r\\nThe **display_set** query string parameter fields value represents the fields that provide you with URLs for the low resolution files \\r\\nthat are most frequently used to build a UI displaying search results. The following fields are provided for every video in your result \\r\\nset when you include **display_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\":\\r\\n    [\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n    ]\\r\\n}\\r\\n```\",\n          \"operationId\": \"Search_GetCreativeVideosByPhrase\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Provides filtering according to the age of individuals in a video.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"newborn\",\n                  \"baby\",\n                  \"child\",\n                  \"teenager\",\n                  \"young_adult\",\n                  \"adult\",\n                  \"adults_only\",\n                  \"mature_adult\",\n                  \"senior_adult\",\n                  \"0-1_months\",\n                  \"2-5_months\",\n                  \"6-11_months\",\n                  \"12-17_months\",\n                  \"18-23_months\",\n                  \"2-3_years\",\n                  \"4-5_years\",\n                  \"6-7_years\",\n                  \"8-9_years\",\n                  \"10-11_years\",\n                  \"12-13_years\",\n                  \"14-15_years\",\n                  \"16-17_years\",\n                  \"18-19_years\",\n                  \"20-24_years\",\n                  \"20-29_years\",\n                  \"25-29_years\",\n                  \"30-34_years\",\n                  \"30-39_years\",\n                  \"35-39_years\",\n                  \"40-44_years\",\n                  \"40-49_years\",\n                  \"45-49_years\",\n                  \"50-54_years\",\n                  \"50-59_years\",\n                  \"55-59_years\",\n                  \"60-64_years\",\n                  \"60-69_years\",\n                  \"65-69_years\",\n                  \"70-79_years\",\n                  \"80-89_years\",\n                  \"90_plus_years\",\n                  \"100_over\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"age_of_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Provides filtering by collection code.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"collection_codes\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Provides searching based on specified collection(s).\",\n              \"enum\": [\n                \"include\",\n                \"exclude\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"collections_filter_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies the facets to return in the response. Facets provide additional search parameters to refine your results.\\r\\n                   The include_facets parameter must be set to \\\"true\\\" for facets to be returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"artists\",\n                  \"locations\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"facet_fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Specifies the maximum number of facets to return per type. Default is 300.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"facet_max_count\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Defaults to 'summary_set'.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"allowed_use\",\n                  \"artist\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"clip_length\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"comp\",\n                  \"copyright\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"era\",\n                  \"id\",\n                  \"istock_collection\",\n                  \"keywords\",\n                  \"largest_downloads\",\n                  \"license_model\",\n                  \"mastered_to\",\n                  \"originally_shot_on\",\n                  \"object_name\",\n                  \"preview\",\n                  \"product_types\",\n                  \"referral_destinations\",\n                  \"shot_speed\",\n                  \"source\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Filters according to the digital video format available on a film asset.\",\n              \"enum\": [\n                \"sd\",\n                \"hd\",\n                \"4k\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"format_available\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Provides filtering by video frame rate (frames/second).\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"23.98\",\n                  \"24\",\n                  \"25\",\n                  \"29.97\",\n                  \"30\",\n                  \"50\",\n                  \"59.94\",\n                  \"60\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"frame_rates\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Specifies whether or not to include facets in the result set. Default is \\\"false\\\".\",\n              \"in\": \"query\",\n              \"name\": \"include_facets\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images tagged with specific keyword(s). Specify using a comma-separated list of keyword Ids. If keyword Ids and phrase are both specified, only those images matching the query phrase which also contain the requested keyword(s) are returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"type\": \"integer\"\n              },\n              \"name\": \"keyword_ids\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies the video licensing model(s).\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"rightsready\",\n                  \"royaltyfree\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"license_models\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Identifies page to return. Default is 1.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies page size. Default is 30, maximum page_size is 100.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Free-text search query.\",\n              \"in\": \"query\",\n              \"name\": \"phrase\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter images to those from one of your product types. \\r\\n                    Allowed values are easyaccess, editorialsubscription, imagepack, premiumaccess and royaltyfreesubscription. \\r\\n                    If you have more than one instance of a product, you may also include the ID of the product instance you wish to filter on. \\r\\n                    For example, some users may have more than one premiumaccess product, so the product_types value would be premiumaccess:1234. \\r\\n                    Product ID can be obtained from the GET /products response.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"product_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Allows filtering by type of model release.\",\n              \"enum\": [\n                \"release_not_important\",\n                \"fully_released\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"release_status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Allows sorting of results.\",\n              \"enum\": [\n                \"best_match\",\n                \"most_popular\",\n                \"newest\",\n                \"random\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sort_order\",\n              \"required\": false,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Search.CreativeVideoSearchResults\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            },\n            \"500\": {\n              \"description\": \"InvalidIStockCollection\"\n            }\n          },\n          \"summary\": \"Search for creative videos\",\n          \"tags\": [\n            \"Search\"\n          ]\n        }\n      },\n      \"/v3/search/videos/editorial\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to search current and archival video clips of celebrities, newsmakers, and events.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\\r\\nYou can show different information in the response by specifying values on the \\\"fields\\\" parameter (see details below).\\r\\nYou can search with only an API key, and that will give you search results that are equivalent to doing a search on the GettyImages.com site without being logged in (anonymous search).  If you are a Getty Images API customer and would like to ensure that your API searches return only assets that you have a license to use, you need to also include an authorization token in the header of your request.  Please consult our [Authorization FAQ](http://developers.gettyimages.com/en/authorization-faq.html) for more information on authorization tokens, and our [Authorization Workflows](https://github.com/gettyimages/gettyimages-api/blob/master/OAuth2Workflow.md) for code examples of getting a token.\\r\\n\\r\\n## Working with Fields Sets\\r\\n\\r\\nFields sets are used in the **fields** request parameter to receive a suite of metadata fields. The following fields sets are available:\\r\\n\\r\\n#### Summary Fields Set\\r\\n\\r\\nThe **summary_set** query string parameter fields value represents a small batch of metadata fields that are often used to build search response results. The following fields are provided for every video in your result set when you include **summary_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\": \\r\\n    [\\r\\n        \\\"asset_family\\\", \\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"license_model\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Detail Fields Set\\r\\n\\r\\nThe **detail_set** query string parameter fields value represents a large batch of metadata fields that are often used to build a detailed view of videos. The following fields are provided for every video in your result set when you include **detail_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\": \\r\\n    [\\r\\n        \\\"allowed_use\\\",\\r\\n        \\\"artist\\\",\\r\\n        \\\"asset_family\\\", \\r\\n\\t\\t\\\"call_for_image\\\",\\r\\n        \\\"caption\\\", \\r\\n        \\\"clip_length\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\", \\r\\n        \\\"color_type\\\",\\r\\n        \\\"copyright\\\",\\r\\n        \\\"date_created\\\",\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"era\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"mastered_to\\\",\\r\\n        \\\"originally_shot_on\\\",\\r\\n        \\\"product_types\\\",\\r\\n        \\\"shot_speed\\\",\\r\\n        \\\"source\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Display Fields Set\\r\\n\\r\\nThe **display_set** query string parameter fields value represents the fields that provide you with URLs for the low resolution files that are most frequently used to build a UI displaying search results. The following fields are provided for every video in your result set when you include **display_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\":\\r\\n    [\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n## Request Usage Considerations\\r\\n\\r\\n- Specifying the \\\"entity_details\\\" response field can have significant performance implications. The field should be used only when necessary.\\r\\n\",\n          \"operationId\": \"Search_GetEditorialVideosByPhrase\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Provides filtering according to the age of individuals in a video.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"newborn\",\n                  \"baby\",\n                  \"child\",\n                  \"teenager\",\n                  \"young_adult\",\n                  \"adult\",\n                  \"adults_only\",\n                  \"mature_adult\",\n                  \"senior_adult\",\n                  \"0-1_months\",\n                  \"2-5_months\",\n                  \"6-11_months\",\n                  \"12-17_months\",\n                  \"18-23_months\",\n                  \"2-3_years\",\n                  \"4-5_years\",\n                  \"6-7_years\",\n                  \"8-9_years\",\n                  \"10-11_years\",\n                  \"12-13_years\",\n                  \"14-15_years\",\n                  \"16-17_years\",\n                  \"18-19_years\",\n                  \"20-24_years\",\n                  \"20-29_years\",\n                  \"25-29_years\",\n                  \"30-34_years\",\n                  \"30-39_years\",\n                  \"35-39_years\",\n                  \"40-44_years\",\n                  \"40-49_years\",\n                  \"45-49_years\",\n                  \"50-54_years\",\n                  \"50-59_years\",\n                  \"55-59_years\",\n                  \"60-64_years\",\n                  \"60-69_years\",\n                  \"65-69_years\",\n                  \"70-79_years\",\n                  \"80-89_years\",\n                  \"90_plus_years\",\n                  \"100_over\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"age_of_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Provides filtering by collection code.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"collection_codes\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Provides searching based on specified collection(s).\",\n              \"enum\": [\n                \"include\",\n                \"exclude\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"collections_filter_type\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Allows filtering by types of video.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"raw\",\n                  \"produced\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"editorial_video_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"specify link data entity uri.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"entity_uris\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies the facets to return in the response. Facets provide additional search parameters to refine your results.\\r\\n                   The include_facets parameter must be set to \\\"true\\\" for facets to be returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"artists\",\n                  \"events\",\n                  \"locations\",\n                  \"specific_people\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"facet_fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Specifies the maximum number of facets to return per type. Default is 300.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"facet_max_count\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Defaults to 'summary_set'.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"allowed_use\",\n                  \"artist\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"clip_length\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"comp\",\n                  \"copyright\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"editorial_segments\",\n                  \"entity_details\",\n                  \"era\",\n                  \"id\",\n                  \"istock_collection\",\n                  \"keywords\",\n                  \"largest_downloads\",\n                  \"license_model\",\n                  \"mastered_to\",\n                  \"originally_shot_on\",\n                  \"object_name\",\n                  \"preview\",\n                  \"product_types\",\n                  \"referral_destinations\",\n                  \"shot_speed\",\n                  \"source\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"istock_licenses\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Filters according to the digital video format available on a film asset.\",\n              \"enum\": [\n                \"sd\",\n                \"hd\",\n                \"4k\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"format_available\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Provides filtering by video frame rate (frames/second).\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"23.98\",\n                  \"24\",\n                  \"25\",\n                  \"29.97\",\n                  \"30\",\n                  \"50\",\n                  \"59.94\",\n                  \"60\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"frame_rates\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Specifies whether or not to include facets in the result set. Default is \\\"false\\\".\",\n              \"in\": \"query\",\n              \"name\": \"include_facets\",\n              \"required\": false,\n              \"type\": \"boolean\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Return only images tagged with specific keyword(s). Specify using a comma-separated list of keyword Ids. If keyword Ids and phrase are both specified, only those images matching the query phrase which also contain the requested keyword(s) are returned.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"format\": \"int32\",\n                \"type\": \"integer\"\n              },\n              \"name\": \"keyword_ids\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Identifies page to return. Default is 1.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies page size. Default is 30, maximum page_size is 100.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Free-text search query.\",\n              \"in\": \"query\",\n              \"name\": \"phrase\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Filter images to those from one of your product types. \\r\\n                    Allowed values are easyaccess, editorialsubscription, imagepack, premiumaccess and royaltyfreesubscription. \\r\\n                    If you have more than one instance of a product, you may also include the ID of the product instance you wish to filter on. \\r\\n                    For example, some users may have more than one premiumaccess product, so the product_types value would be premiumaccess:1234. \\r\\n                    Product ID can be obtained from the GET /products response.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"product_types\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Allows filtering by type of model release.\",\n              \"enum\": [\n                \"release_not_important\",\n                \"fully_released\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"release_status\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Allows sorting of results.\",\n              \"enum\": [\n                \"best_match\",\n                \"most_popular\",\n                \"newest\",\n                \"oldest\",\n                \"random\"\n              ],\n              \"in\": \"query\",\n              \"name\": \"sort_order\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Allows filtering by specific peoples' names.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"specific_people\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Search.EditorialVideoSearchResults\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            }\n          },\n          \"summary\": \"Search for editorial videos\",\n          \"tags\": [\n            \"Search\"\n          ]\n        }\n      },\n      \"/v3/usage-batches/{id}\": {\n        \"put\": {\n          \"consumes\": [\n            \"application/json-patch+json\",\n            \"application/json\",\n            \"text/json\",\n            \"application/*+json\"\n          ],\n          \"deprecated\": false,\n          \"description\": \"# Report Usage\\n\\nUse this endpoint to report the usages of a set of assets. The count of assets submitted in a single batch to this endpoint is limited to 1000. Note that all asset Ids specified must be valid or the operation will fail causing no usages to be recorded. In this case, you will need to remove the invalid asset Ids from the query request and re-submit the query.\\n\\n##  Quickstart\\n\\nYou'll need an API key and a [Resource Owner Grant](http://developers.gettyimages.com/en/authorization-faq.html) access token to use this resource.\\nPlease see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key. \\n\\n_Note_: Date of use can be in any unambiguous date format.\\n\",\n          \"operationId\": \"PutAsync\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Specifies up to 1000 sets of asset Id, usage count, and date of use to submit usages for. \\r\\n            Note that all asset Ids specified must be valid or the operation will fail causing no usages to be recorded. \\r\\n            All dates must be on or before this date and the format should be ISO 8601 (ex: YYYY-MM-DD), time is not needed.\",\n              \"in\": \"body\",\n              \"name\": \"batchRequest\",\n              \"required\": false,\n              \"schema\": {\n                \"$ref\": \"#/definitions/report_usage_batch_request\"\n              }\n            },\n            {\n              \"description\": \"Specifies a unique batch transaction id to identify the report.\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"string\"\n            }\n          ],\n          \"produces\": [\n            \"text/plain\",\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"201\": {\n              \"description\": \"Success - All usages reported were successfully recorded.\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/report_usage_batch_response\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidRequest - The content of the request was invalid. Most commonly this is due to either too many assets specified, no assets or invalid JSON.\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired - Authorization token was missing or not valid.\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedToReportUsage\"\n            },\n            \"409\": {\n              \"description\": \"TransactionIdDuplicated\"\n            }\n          },\n          \"summary\": \"Report usage of assets via a batch format.\",\n          \"tags\": [\n            \"Usage\"\n          ]\n        }\n      },\n      \"/v3/videos\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to return detailed video metadata for all the specified video ids.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\\r\\nYou can show different information in the response by specifying values on the \\\"fields\\\" parameter (see details below).\\r\\nYou can search with only an API key, and that will give you search results that are equivalent to doing a search on the GettyImages.com site without being logged in (anonymous search).  If you are a Getty Images API customer and would like to ensure that your API searches return only assets that you have a license to use, you need to also include an authorization token in the header of your request.  Please consult our [Authorization FAQ](http://developers.gettyimages.com/en/authorization-faq.html) for more information on authorization tokens, and our [Authorization Workflows](https://github.com/gettyimages/gettyimages-api/blob/master/OAuth2Workflow.md) for code examples of getting a token.\\r\\n\\r\\n## Working with Fields Sets\\r\\n\\r\\nFields sets are used in the **fields** request parameter to receive a suite of metadata fields. The following fields sets are available:\\r\\n\\r\\n#### Summary Fields Set\\r\\n\\r\\nThe **summary_set** query string parameter fields value represents a small batch of metadata fields that are often used to build search response results. The following fields are provided for every video in your result set when you include **summary_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\": \\r\\n    [\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"license_model\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Detail Fields Set\\r\\n\\r\\nThe **detail_set** query string parameter fields value represents a large batch of metadata fields that are often used to build a detailed view of videos. The following fields are provided for every video in your result set when you include **detail_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\": \\r\\n    [\\r\\n        \\\"allowed_use\\\",\\r\\n        \\\"artist\\\",\\r\\n        \\\"asset_family\\\",\\r\\n\\t\\t\\\"call_for_image\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"clip_length\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"color_type\\\",\\r\\n        \\\"copyright\\\",\\r\\n        \\\"date_created\\\",\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"download_sizes\\\",\\r\\n        \\\"era\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"mastered_to\\\",\\r\\n        \\\"originally_shot_on\\\",\\r\\n        \\\"product_types\\\",\\r\\n        \\\"shot_speed\\\",\\r\\n        \\\"source\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Display Fields Set\\r\\n\\r\\nThe **display_set** query string parameter fields value represents the fields that provide you with URLs for the low resolution files that are most frequently used to build a UI displaying search results. The following fields are provided for every video in your result set when you include **display_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\":\\r\\n    [\\r\\n        \\\"display_sizes\\\": \\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n## Request Usage Considerations\\r\\n\\r\\n- Specifying the \\\"entity_details\\\" response field can have significant performance implications. The field should be used only when necessary.\\r\\n\",\n          \"operationId\": \"Videos_GetBatch\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies one or more video ids to return. Use comma delimiter when requesting multiple ids.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"name\": \"ids\",\n              \"required\": true,\n              \"type\": \"array\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"Specifies fields to return. Defaults to 'summary_set'.\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"id\",\n                  \"allowed_use\",\n                  \"artist\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"clip_length\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"copyright\",\n                  \"comp\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"downloads\",\n                  \"era\",\n                  \"editorial_segments\",\n                  \"entity_details\",\n                  \"keywords\",\n                  \"license_model\",\n                  \"mastered_to\",\n                  \"originally_shot_on\",\n                  \"object_name\",\n                  \"preview\",\n                  \"product_types\",\n                  \"referral_destinations\",\n                  \"shot_speed\",\n                  \"source\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"istock_licenses\",\n                  \"istock_collection\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Videos.VideosDetail\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            },\n            \"404\": {\n              \"description\": \"VideosNotFound\"\n            },\n            \"500\": {\n              \"description\": \"InvalidIStockCollection\"\n            }\n          },\n          \"summary\": \"Get metadata for multiple videos by supplying multiple video ids\",\n          \"tags\": [\n            \"Videos\"\n          ]\n        }\n      },\n      \"/v3/videos/{id}\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"description\": \"Use this endpoint to return detailed video metadata for the specified video id.\\r\\n\\r\\nYou'll need an API key and access token to use this resource. Please see our [Getting Started](http://developers.gettyimages.com/en/getting-started.html) page for more information on how to sign up for an API key.\\r\\n\\r\\nYou can show different information in the response by specifying values on the \\\"fields\\\" parameter (see details below).\\r\\nYou can search with only an API key, and that will give you search results that are equivalent to doing a search on the GettyImages.com site without being logged in (anonymous search).  If you are a Getty Images API customer and would like to ensure that your API searches return only assets that you have a license to use, you need to also include an authorization token in the header of your request.  Please consult our [Authorization FAQ](http://developers.gettyimages.com/en/authorization-faq.html) for more information on authorization tokens, and our [Authorization Workflows](https://github.com/gettyimages/gettyimages-api/blob/master/OAuth2Workflow.md) for code examples of getting a token.\\r\\n\\r\\n## Working with Fields Sets\\r\\n\\r\\nFields sets are used in the **fields** request parameter to receive a suite of metadata fields. The following fields sets are available:\\r\\n\\r\\n#### Summary Fields Set\\r\\n\\r\\nThe **summary_set** query string parameter fields value represents a small batch of metadata fields that are often used to build search response results. The following fields are provided for every video in your result set when you include **summary_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\":\\r\\n    [\\r\\n        \\\"asset_family\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"license_model\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Detail Fields Set\\r\\n\\r\\nThe **detail_set** query string parameter fields value represents a large batch of metadata fields that are often used to build a detailed view of videos. The following fields are provided for every video in your result set when you include **detail_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\":\\r\\n    [\\r\\n        \\\"allowed_use\\\",\\r\\n        \\\"artist\\\",\\r\\n        \\\"asset_family\\\",\\r\\n\\t\\t\\\"call_for_image\\\",\\r\\n        \\\"caption\\\",\\r\\n        \\\"clip_length\\\",\\r\\n        \\\"collection_code\\\",\\r\\n        \\\"collection_id\\\",\\r\\n        \\\"collection_name\\\",\\r\\n        \\\"color_type\\\",\\r\\n        \\\"copyright\\\",\\r\\n        \\\"date_created\\\",\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"download_sizes\\\",\\r\\n        \\\"era\\\",\\r\\n        \\\"license_model\\\",\\r\\n        \\\"mastered_to\\\",\\r\\n        \\\"originally_shot_on\\\",\\r\\n        \\\"product_types\\\",\\r\\n        \\\"shot_speed\\\",\\r\\n        \\\"source\\\",\\r\\n        \\\"title\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n#### Display Fields Set\\r\\n\\r\\nThe **display_set** query string parameter fields value represents the fields that provide you with URLs for the low resolution files that are most frequently used to build a UI displaying search results. The following fields are provided for every video in your result set when you include **display_set** in your request.\\r\\n\\r\\n```\\r\\n{\\r\\n    \\\"videos\\\":\\r\\n    [\\r\\n        \\\"display_sizes\\\":\\r\\n        [\\r\\n            {\\r\\n                \\\"name\\\": \\\"comp\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"preview\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"thumb\\\"\\r\\n            }\\r\\n        ]\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n## Request Usage Considerations\\r\\n\\r\\n- Specifying the \\\"entity_details\\\" response field can have significant performance implications. The field should be used only when necessary.\\r\\n\",\n          \"operationId\": \"Videos_Get\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A video id. For more than one video please use the /v3/video endpoint.\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"comma delimited list of fields to retrive for the video\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"id\",\n                  \"allowed_use\",\n                  \"artist\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"clip_length\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"copyright\",\n                  \"comp\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"downloads\",\n                  \"era\",\n                  \"editorial_segments\",\n                  \"entity_details\",\n                  \"keywords\",\n                  \"license_model\",\n                  \"mastered_to\",\n                  \"originally_shot_on\",\n                  \"object_name\",\n                  \"preview\",\n                  \"product_types\",\n                  \"referral_destinations\",\n                  \"shot_speed\",\n                  \"source\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"istock_licenses\",\n                  \"istock_collection\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Videos.VideoDetail\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            },\n            \"404\": {\n              \"description\": \"VideosNotFound\"\n            },\n            \"500\": {\n              \"description\": \"InvalidIStockCollection\"\n            }\n          },\n          \"summary\": \"Get metadata for a single video by supplying one video id\",\n          \"tags\": [\n            \"Videos\"\n          ]\n        }\n      },\n      \"/v3/videos/{id}/similar\": {\n        \"get\": {\n          \"consumes\": [],\n          \"deprecated\": false,\n          \"operationId\": \"Videos_GetSimilarVideos\",\n          \"parameters\": [\n            {\n              \"description\": \"Provide a header to specify the language of result values.\",\n              \"in\": \"header\",\n              \"name\": \"Accept-Language\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"Provide access token in the format of 'Bearer {token}'.\",\n              \"in\": \"header\",\n              \"name\": \"Authorization\",\n              \"required\": false,\n              \"type\": \"string\"\n            },\n            {\n              \"description\": \"A video id.\",\n              \"in\": \"path\",\n              \"name\": \"id\",\n              \"required\": true,\n              \"type\": \"string\"\n            },\n            {\n              \"collectionFormat\": \"multi\",\n              \"description\": \"comma delimited list of fields to retrive for the videos\",\n              \"in\": \"query\",\n              \"items\": {\n                \"enum\": [\n                  \"allowed_use\",\n                  \"artist\",\n                  \"asset_family\",\n                  \"call_for_image\",\n                  \"caption\",\n                  \"clip_length\",\n                  \"collection_code\",\n                  \"collection_id\",\n                  \"collection_name\",\n                  \"color_type\",\n                  \"comp\",\n                  \"copyright\",\n                  \"date_created\",\n                  \"date_submitted\",\n                  \"detail_set\",\n                  \"display_set\",\n                  \"download_sizes\",\n                  \"editorial_segments\",\n                  \"entity_details\",\n                  \"era\",\n                  \"id\",\n                  \"istock_collection\",\n                  \"keywords\",\n                  \"largest_downloads\",\n                  \"license_model\",\n                  \"mastered_to\",\n                  \"originally_shot_on\",\n                  \"object_name\",\n                  \"preview\",\n                  \"product_types\",\n                  \"referral_destinations\",\n                  \"shot_speed\",\n                  \"source\",\n                  \"summary_set\",\n                  \"thumb\",\n                  \"title\",\n                  \"istock_licenses\"\n                ],\n                \"type\": \"string\"\n              },\n              \"name\": \"fields\",\n              \"required\": false,\n              \"type\": \"array\"\n            },\n            {\n              \"description\": \"Identifies page to return. Default is 1.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page\",\n              \"required\": false,\n              \"type\": \"integer\"\n            },\n            {\n              \"description\": \"Specifies page size. Default is 30, maximum page_size is 100.\",\n              \"format\": \"int32\",\n              \"in\": \"query\",\n              \"name\": \"page_size\",\n              \"required\": false,\n              \"type\": \"integer\"\n            }\n          ],\n          \"produces\": [\n            \"application/json\",\n            \"text/json\"\n          ],\n          \"responses\": {\n            \"200\": {\n              \"description\": \"OK\",\n              \"schema\": {\n                \"$ref\": \"#/definitions/GettyImages.Models.Artists.VideoSearchResults\"\n              }\n            },\n            \"400\": {\n              \"description\": \"InvalidParameterValue\"\n            },\n            \"401\": {\n              \"description\": \"AuthorizationTokenRequired\"\n            },\n            \"403\": {\n              \"description\": \"UnauthorizedDisplaySize\"\n            },\n            \"404\": {\n              \"description\": \"VideosNotFound\"\n            },\n            \"500\": {\n              \"description\": \"InvalidIStockCollection\"\n            }\n          },\n          \"summary\": \"Get videos similar to a video by supplying one video id\",\n          \"tags\": [\n            \"Videos\"\n          ]\n        }\n      }\n    },\n    \"definitions\": {\n      \"AddBoardAssetsResult\": {\n        \"properties\": {\n          \"assets_added\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/BoardAsset\"\n            },\n            \"type\": \"array\"\n          },\n          \"assets_not_added\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Asset\": {\n        \"properties\": {\n          \"asset_type\": {\n            \"type\": \"string\"\n          },\n          \"date_added\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"display_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/DisplaySize\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"AssetChanges\": {\n        \"properties\": {\n          \"change_set_id\": {\n            \"description\": \"Contains the identifier for the change-set resource. Passed into ConfirmAssetChanges requests to confirm receipt of the asset changes in the response.\",\n            \"type\": \"string\"\n          },\n          \"changed_assets\": {\n            \"description\": \"Contains a list of ChangedAssetList results for the query.\",\n            \"items\": {\n              \"$ref\": \"#/definitions/ChangedAssetDetail\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"BoardAsset\": {\n        \"properties\": {\n          \"asset_id\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"asset_id\"\n        ],\n        \"type\": \"object\"\n      },\n      \"BoardCommentPermissions\": {\n        \"properties\": {\n          \"can_add_comment\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"BoardCreated\": {\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"BoardDetail\": {\n        \"properties\": {\n          \"asset_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"assets\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Asset\"\n            },\n            \"type\": \"array\"\n          },\n          \"comment_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"date_created\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"date_last_updated\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"links\": {\n            \"$ref\": \"#/definitions/Links\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"permissions\": {\n            \"$ref\": \"#/definitions/BoardPermissions\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"BoardInfo\": {\n        \"properties\": {\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"required\": [\n          \"name\"\n        ],\n        \"type\": \"object\"\n      },\n      \"BoardList\": {\n        \"properties\": {\n          \"board_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"boards\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/BoardListBoard\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"BoardListBoard\": {\n        \"properties\": {\n          \"asset_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"board_relationship\": {\n            \"type\": \"string\"\n          },\n          \"date_created\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"date_last_updated\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"hero_asset\": {\n            \"$ref\": \"#/definitions/Asset\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"BoardPermissions\": {\n        \"properties\": {\n          \"can_add_assets\": {\n            \"type\": \"boolean\"\n          },\n          \"can_delete_board\": {\n            \"type\": \"boolean\"\n          },\n          \"can_invite_to_board\": {\n            \"type\": \"boolean\"\n          },\n          \"can_remove_assets\": {\n            \"type\": \"boolean\"\n          },\n          \"can_update_description\": {\n            \"type\": \"boolean\"\n          },\n          \"can_update_name\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"ChangedAssetDetail\": {\n        \"properties\": {\n          \"asset_changed_utc_datetime\": {\n            \"description\": \"Contains the date of the asset change.\",\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"asset_lifecycle\": {\n            \"description\": \"Contains the type of change this asset change is. (i.e. \\\"New,\\\" \\\"Updated\\\" or \\\"Deleted\\\")\",\n            \"type\": \"string\"\n          },\n          \"asset_type\": {\n            \"description\": \"Contains the type of asset this asset change is (i.e. \\\"Image\\\").\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"description\": \"Contains the Id for the asset change.\",\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"description\": \"Contains the asset download URL for assets with an AssetLifecycle of \\\"New.\\\"\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Collaborator\": {\n        \"properties\": {\n          \"first_name\": {\n            \"type\": \"string\"\n          },\n          \"last_name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Comment\": {\n        \"properties\": {\n          \"created_by\": {\n            \"$ref\": \"#/definitions/Collaborator\"\n          },\n          \"date_created\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"permissions\": {\n            \"$ref\": \"#/definitions/CommentPermissions\"\n          },\n          \"text\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"CommentCreated\": {\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"CommentPermissions\": {\n        \"properties\": {\n          \"can_delete_comment\": {\n            \"type\": \"boolean\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"CommentRequest\": {\n        \"properties\": {\n          \"text\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"CommentsList\": {\n        \"properties\": {\n          \"comments\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Comment\"\n            },\n            \"type\": \"array\"\n          },\n          \"permissions\": {\n            \"$ref\": \"#/definitions/BoardCommentPermissions\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"DisplaySize\": {\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Enterprise.Proxies.Public.V3.Controllers.Search.Facets.Artist\": {\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Enterprise.Proxies.Public.V3.Controllers.Search.Facets.Entertainment\": {\n        \"properties\": {\n          \"id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Enterprise.Proxies.Public.V3.Controllers.Search.Facets.Event\": {\n        \"properties\": {\n          \"date\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Enterprise.Proxies.Public.V3.Controllers.Search.Facets.Location\": {\n        \"properties\": {\n          \"id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Enterprise.Proxies.Public.V3.Controllers.Search.Facets.SearchFacetsResponse\": {\n        \"properties\": {\n          \"artists\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Enterprise.Proxies.Public.V3.Controllers.Search.Facets.Artist\"\n            },\n            \"type\": \"array\"\n          },\n          \"entertainment\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Enterprise.Proxies.Public.V3.Controllers.Search.Facets.Entertainment\"\n            },\n            \"type\": \"array\"\n          },\n          \"events\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Enterprise.Proxies.Public.V3.Controllers.Search.Facets.Event\"\n            },\n            \"type\": \"array\"\n          },\n          \"locations\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Enterprise.Proxies.Public.V3.Controllers.Search.Facets.Location\"\n            },\n            \"type\": \"array\"\n          },\n          \"specific_people\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/Enterprise.Proxies.Public.V3.Controllers.Search.Facets.SpecificPeople\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Enterprise.Proxies.Public.V3.Controllers.Search.Facets.SpecificPeople\": {\n        \"properties\": {\n          \"id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Controllers.AssetLicensing.AcquireAssetLicensesRequest\": {\n        \"properties\": {\n          \"LicenseTypes\": {\n            \"items\": {\n              \"enum\": [\n                \"Multiseat\",\n                \"Unlimited\",\n                \"Resale\",\n                \"Indemnification\"\n              ],\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"UseTeamCredits\": {\n            \"description\": \"Defaults to false.\",\n            \"type\": \"boolean\"\n          }\n        },\n        \"required\": [\n          \"LicenseTypes\"\n        ],\n        \"type\": \"object\"\n      },\n      \"GettyImages.Controllers.AssetLicensing.AssetLicensingResponse\": {\n        \"properties\": {\n          \"AcquiredLicenses\": {\n            \"items\": {\n              \"enum\": [\n                \"Standard\",\n                \"Multiseat\",\n                \"Unlimited\",\n                \"Resale\",\n                \"Indemnification\"\n              ],\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"CreditsUsed\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.AllowedUse\": {\n        \"properties\": {\n          \"how_can_i_use_it\": {\n            \"description\": \"Indicates how the asset can be used\",\n            \"type\": \"string\"\n          },\n          \"release_info\": {\n            \"description\": \"Indicates release status\",\n            \"type\": \"string\"\n          },\n          \"usage_restrictions\": {\n            \"description\": \"Indicates asset usage restriction, if any\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Artists.DisplaySize\": {\n        \"properties\": {\n          \"aspect_ratio\": {\n            \"type\": \"string\"\n          },\n          \"is_watermarked\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Artists.ImageSearchItem\": {\n        \"properties\": {\n          \"alternative_ids\": {\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"object\"\n          },\n          \"asset_family\": {\n            \"type\": \"string\"\n          },\n          \"asset_type\": {\n            \"enum\": [\n              \"Image\",\n              \"Film\"\n            ],\n            \"type\": \"string\"\n          },\n          \"caption\": {\n            \"type\": \"string\"\n          },\n          \"collection_code\": {\n            \"type\": \"string\"\n          },\n          \"collection_name\": {\n            \"type\": \"string\"\n          },\n          \"date_submitted\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"display_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Artists.DisplaySize\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"keywords\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Artists.Keyword\"\n            },\n            \"type\": \"array\"\n          },\n          \"license_model\": {\n            \"type\": \"string\"\n          },\n          \"max_dimensions\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.MaxDimensions\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Artists.ImageSearchResults\": {\n        \"properties\": {\n          \"images\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Artists.ImageSearchItem\"\n            },\n            \"type\": \"array\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Artists.Keyword\": {\n        \"properties\": {\n          \"keyword_id\": {\n            \"type\": \"string\"\n          },\n          \"text\": {\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Artists.VideoSearchItem\": {\n        \"properties\": {\n          \"alternative_ids\": {\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"object\"\n          },\n          \"asset_family\": {\n            \"type\": \"string\"\n          },\n          \"asset_type\": {\n            \"enum\": [\n              \"Image\",\n              \"Film\"\n            ],\n            \"type\": \"string\"\n          },\n          \"caption\": {\n            \"type\": \"string\"\n          },\n          \"collection_code\": {\n            \"type\": \"string\"\n          },\n          \"collection_name\": {\n            \"type\": \"string\"\n          },\n          \"date_submitted\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"display_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Artists.DisplaySize\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"keywords\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Artists.Keyword\"\n            },\n            \"type\": \"array\"\n          },\n          \"license_model\": {\n            \"type\": \"string\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Artists.VideoSearchResults\": {\n        \"properties\": {\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"videos\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Artists.VideoSearchItem\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Collections.Collection\": {\n        \"properties\": {\n          \"asset_family\": {\n            \"type\": \"string\"\n          },\n          \"code\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"license_model\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"product_types\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Collections.CollectionsList\": {\n        \"properties\": {\n          \"collections\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Collections.Collection\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Countries.CountriesList\": {\n        \"properties\": {\n          \"countries\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Countries.Country\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Countries.Country\": {\n        \"properties\": {\n          \"iso_alpha_2\": {\n            \"type\": \"string\"\n          },\n          \"iso_alpha_3\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.CuratedSets.CuratedSet\": {\n        \"properties\": {\n          \"assets\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"date_created\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"date_last_updated\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"hero_image_uri\": {\n            \"type\": \"string\"\n          },\n          \"keywords\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"set_id\": {\n            \"type\": \"string\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Customers.CustomerInfoResponse\": {\n        \"properties\": {\n          \"first_name\": {\n            \"type\": \"string\"\n          },\n          \"last_name\": {\n            \"type\": \"string\"\n          },\n          \"middle_name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Download\": {\n        \"properties\": {\n          \"agreement_name\": {\n            \"type\": \"string\"\n          },\n          \"product_id\": {\n            \"type\": \"string\"\n          },\n          \"product_type\": {\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Downloads.GetDownloadsResponse\": {\n        \"properties\": {\n          \"downloads\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Downloads.GetDownloadsResponse.Download\"\n            },\n            \"type\": \"array\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Downloads.GetDownloadsResponse.Download\": {\n        \"properties\": {\n          \"agreement_name\": {\n            \"type\": \"string\"\n          },\n          \"asset_type\": {\n            \"type\": \"string\"\n          },\n          \"date_downloaded\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"download_details\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.Downloads.GetDownloadsResponse.DownloadDetails\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"product_type\": {\n            \"type\": \"string\"\n          },\n          \"size_name\": {\n            \"type\": \"string\"\n          },\n          \"thumb_uri\": {\n            \"type\": \"string\"\n          },\n          \"user\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.Downloads.User\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Downloads.GetDownloadsResponse.DownloadDetails\": {\n        \"properties\": {\n          \"download_notes\": {\n            \"type\": \"string\"\n          },\n          \"project_code\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Downloads.PremiumAccessDownloadData\": {\n        \"properties\": {\n          \"download_notes\": {\n            \"type\": \"string\"\n          },\n          \"project_code\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Downloads.User\": {\n        \"properties\": {\n          \"first_name\": {\n            \"type\": \"string\"\n          },\n          \"last_name\": {\n            \"type\": \"string\"\n          },\n          \"middle_name\": {\n            \"type\": \"string\"\n          },\n          \"username\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Events.Event\": {\n        \"properties\": {\n          \"child_event_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"editorial_segments\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"hero_image\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.HeroImage\"\n          },\n          \"id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"image_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"location\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.LocationEvent\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"start_date\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Events.EventsResult\": {\n        \"properties\": {\n          \"events\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Events.Event\"\n            },\n            \"type\": \"array\"\n          },\n          \"events_not_found\": {\n            \"items\": {\n              \"format\": \"int32\",\n              \"type\": \"integer\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.HeroImage\": {\n        \"properties\": {\n          \"display_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.HeroImageDisplaySize\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.HeroImageDisplaySize\": {\n        \"properties\": {\n          \"is_watermarked\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.IStockLicense\": {\n        \"properties\": {\n          \"credits\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"license_type\": {\n            \"enum\": [\n              \"Standard\",\n              \"Multiseat\",\n              \"Unlimited\",\n              \"Resale\",\n              \"Indemnification\"\n            ],\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Images.EditorialSource\": {\n        \"properties\": {\n          \"id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Images.ImageDetail\": {\n        \"properties\": {\n          \"allowed_use\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.AllowedUse\"\n          },\n          \"alternative_ids\": {\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"object\"\n          },\n          \"artist\": {\n            \"type\": \"string\"\n          },\n          \"artist_title\": {\n            \"type\": \"string\"\n          },\n          \"asset_family\": {\n            \"type\": \"string\"\n          },\n          \"call_for_image\": {\n            \"type\": \"boolean\"\n          },\n          \"caption\": {\n            \"type\": \"string\"\n          },\n          \"city\": {\n            \"type\": \"string\"\n          },\n          \"collection_code\": {\n            \"type\": \"string\"\n          },\n          \"collection_id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"collection_name\": {\n            \"type\": \"string\"\n          },\n          \"color_type\": {\n            \"type\": \"string\"\n          },\n          \"copyright\": {\n            \"type\": \"string\"\n          },\n          \"country\": {\n            \"type\": \"string\"\n          },\n          \"credit_line\": {\n            \"type\": \"string\"\n          },\n          \"date_camera_shot\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"date_created\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"date_submitted\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"display_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Images.ImageDetailDisplaySize\"\n            },\n            \"type\": \"array\"\n          },\n          \"download_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Images.ImageDownloadSize\"\n            },\n            \"type\": \"array\"\n          },\n          \"editorial_segments\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"editorial_source\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.Images.EditorialSource\"\n          },\n          \"event_ids\": {\n            \"items\": {\n              \"format\": \"int32\",\n              \"type\": \"integer\"\n            },\n            \"type\": \"array\"\n          },\n          \"graphical_style\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"istock_licenses\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.IStockLicense\"\n            },\n            \"type\": \"array\"\n          },\n          \"keywords\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Keyword\"\n            },\n            \"type\": \"array\"\n          },\n          \"largest_downloads\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Images.ImageDownloadSize\"\n            },\n            \"type\": \"array\"\n          },\n          \"license_model\": {\n            \"type\": \"string\"\n          },\n          \"links\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Images.Link\"\n            },\n            \"type\": \"array\"\n          },\n          \"max_dimensions\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.MaxDimensions\"\n          },\n          \"orientation\": {\n            \"type\": \"string\"\n          },\n          \"people\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"product_types\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"quality_rank\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"referral_destinations\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.ReferralDestination\"\n            },\n            \"type\": \"array\"\n          },\n          \"state_province\": {\n            \"type\": \"string\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          },\n          \"uri_oembed\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Images.ImageDetailDisplaySize\": {\n        \"properties\": {\n          \"height\": {\n            \"description\": \"Indicates the height in pixels\",\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"is_watermarked\": {\n            \"description\": \"Indicates whether the image is watermarked.\",\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"description\": \"Identifies the name of the display size\",\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"description\": \"Identifies the URI for the image\",\n            \"type\": \"string\"\n          },\n          \"width\": {\n            \"description\": \"Indicates the width in pixels\",\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Images.ImageDownloadAuthorization\": {\n        \"properties\": {\n          \"agreement_name\": {\n            \"type\": \"string\"\n          },\n          \"product_id\": {\n            \"type\": \"string\"\n          },\n          \"product_type\": {\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Images.ImageDownloadSize\": {\n        \"properties\": {\n          \"bytes\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"downloads\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Images.ImageDownloadAuthorization\"\n            },\n            \"type\": \"array\"\n          },\n          \"height\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"media_type\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"enum\": [\n              \"x_small\",\n              \"small\",\n              \"medium\",\n              \"large\",\n              \"x_large\",\n              \"xx_large\",\n              \"vector\"\n            ],\n            \"type\": \"string\"\n          },\n          \"width\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Images.ImagesDetail\": {\n        \"properties\": {\n          \"images\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Images.ImageDetail\"\n            },\n            \"type\": \"array\"\n          },\n          \"images_not_found\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Images.Link\": {\n        \"properties\": {\n          \"rel\": {\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Keyword\": {\n        \"properties\": {\n          \"entity_types\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"entity_uris\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"keyword_id\": {\n            \"type\": \"string\"\n          },\n          \"relevance\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"text\": {\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.LocationEvent\": {\n        \"properties\": {\n          \"city\": {\n            \"type\": \"string\"\n          },\n          \"country\": {\n            \"type\": \"string\"\n          },\n          \"state_province\": {\n            \"type\": \"string\"\n          },\n          \"venue\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.MaxDimensions\": {\n        \"properties\": {\n          \"height\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"width\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Orders.AssetIdFromOrder\": {\n        \"properties\": {\n          \"id\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Orders.OrderDetail\": {\n        \"properties\": {\n          \"assets\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Orders.AssetIdFromOrder\"\n            },\n            \"type\": \"array\"\n          },\n          \"end_client\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"notes\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.Orders.OrderNotes\"\n          },\n          \"order_date\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Orders.OrderNotes\": {\n        \"properties\": {\n          \"licensee_name\": {\n            \"type\": \"string\"\n          },\n          \"ordered_by\": {\n            \"type\": \"string\"\n          },\n          \"project_title\": {\n            \"type\": \"string\"\n          },\n          \"purchase_order_number\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Products.DownloadRequirements\": {\n        \"properties\": {\n          \"is_note_required\": {\n            \"type\": \"boolean\"\n          },\n          \"is_project_code_required\": {\n            \"type\": \"boolean\"\n          },\n          \"project_codes\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Products.OverageDetails\": {\n        \"properties\": {\n          \"count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"limit\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"overages_reached\": {\n            \"type\": \"boolean\"\n          },\n          \"remaining\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Products.Product\": {\n        \"properties\": {\n          \"agreement_name\": {\n            \"type\": \"string\"\n          },\n          \"application_website\": {\n            \"type\": \"string\"\n          },\n          \"credits_remaining\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"download_limit\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"download_limit_duration\": {\n            \"type\": \"string\"\n          },\n          \"download_limit_reset_utc_date\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"download_requirements\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.Products.DownloadRequirements\"\n          },\n          \"downloads_remaining\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"expiration_utc_date\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"imagepack_resolution\": {\n            \"type\": \"string\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"overage\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.Products.OverageDetails\"\n          },\n          \"status\": {\n            \"enum\": [\n              \"active\",\n              \"inactive\"\n            ],\n            \"type\": \"string\"\n          },\n          \"team_credits\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"type\": {\n            \"enum\": [\n              \"easyaccess\",\n              \"editorialsubscription\",\n              \"imagepack\",\n              \"premiumaccess\",\n              \"royaltyfreesubscription\",\n              \"creditpack\"\n            ],\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Products.ProductsResult\": {\n        \"properties\": {\n          \"products\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Products.Product\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Purchases.PreviousAssetPurchase\": {\n        \"properties\": {\n          \"asset_id\": {\n            \"type\": \"string\"\n          },\n          \"asset_type\": {\n            \"type\": \"string\"\n          },\n          \"date_purchased\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"download_uri\": {\n            \"type\": \"string\"\n          },\n          \"file_size_in_bytes\": {\n            \"type\": \"string\"\n          },\n          \"license_model\": {\n            \"type\": \"string\"\n          },\n          \"order_id\": {\n            \"type\": \"string\"\n          },\n          \"size_name\": {\n            \"type\": \"string\"\n          },\n          \"thumb_uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Purchases.PreviousAssetPurchases\": {\n        \"properties\": {\n          \"previous_purchases\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Purchases.PreviousAssetPurchase\"\n            },\n            \"type\": \"array\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Purchases.PreviousPurchase\": {\n        \"properties\": {\n          \"date_purchased\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"image_id\": {\n            \"type\": \"string\"\n          },\n          \"license_model\": {\n            \"type\": \"string\"\n          },\n          \"order_id\": {\n            \"type\": \"string\"\n          },\n          \"thumb_uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Purchases.PreviousPurchases\": {\n        \"properties\": {\n          \"previous_purchases\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Purchases.PreviousPurchase\"\n            },\n            \"type\": \"array\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.ReferralDestination\": {\n        \"properties\": {\n          \"site_name\": {\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.CreativeImageSearchLightResults\": {\n        \"properties\": {\n          \"images\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Search.ImageSearchLightItemCreative\"\n            },\n            \"type\": \"array\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.CreativeImageSearchResults\": {\n        \"properties\": {\n          \"images\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Search.ImageSearchItemCreative\"\n            },\n            \"type\": \"array\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.CreativeVideoSearchResults\": {\n        \"properties\": {\n          \"facets\": {\n            \"$ref\": \"#/definitions/Enterprise.Proxies.Public.V3.Controllers.Search.Facets.SearchFacetsResponse\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"videos\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Search.VideoSearchItem\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.EditorialImageSearchResults\": {\n        \"properties\": {\n          \"images\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Search.ImageSearchItemEditorial\"\n            },\n            \"type\": \"array\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.EditorialSource\": {\n        \"properties\": {\n          \"id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.EditorialVideoSearchResults\": {\n        \"properties\": {\n          \"facets\": {\n            \"$ref\": \"#/definitions/Enterprise.Proxies.Public.V3.Controllers.Search.Facets.SearchFacetsResponse\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"videos\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Search.VideoSearchItem\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.EventsSearchResult\": {\n        \"properties\": {\n          \"events\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Events.Event\"\n            },\n            \"type\": \"array\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.ImageSearchItem\": {\n        \"properties\": {\n          \"allowed_use\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.AllowedUse\"\n          },\n          \"alternative_ids\": {\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"object\"\n          },\n          \"artist\": {\n            \"type\": \"string\"\n          },\n          \"asset_family\": {\n            \"type\": \"string\"\n          },\n          \"call_for_image\": {\n            \"type\": \"boolean\"\n          },\n          \"caption\": {\n            \"type\": \"string\"\n          },\n          \"collection_code\": {\n            \"type\": \"string\"\n          },\n          \"collection_id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"collection_name\": {\n            \"type\": \"string\"\n          },\n          \"color_type\": {\n            \"type\": \"string\"\n          },\n          \"copyright\": {\n            \"type\": \"string\"\n          },\n          \"date_camera_shot\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"date_created\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"display_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Search.ImageSearchItemDisplaySize\"\n            },\n            \"type\": \"array\"\n          },\n          \"editorial_segments\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"event_ids\": {\n            \"items\": {\n              \"format\": \"int32\",\n              \"type\": \"integer\"\n            },\n            \"type\": \"array\"\n          },\n          \"graphical_style\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"istock_licenses\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.IStockLicense\"\n            },\n            \"type\": \"array\"\n          },\n          \"keywords\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Keyword\"\n            },\n            \"type\": \"array\"\n          },\n          \"largest_downloads\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Download\"\n            },\n            \"type\": \"array\"\n          },\n          \"license_model\": {\n            \"type\": \"string\"\n          },\n          \"max_dimensions\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.MaxDimensions\"\n          },\n          \"orientation\": {\n            \"type\": \"string\"\n          },\n          \"people\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"product_types\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"quality_rank\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"referral_destinations\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.ReferralDestination\"\n            },\n            \"type\": \"array\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          },\n          \"uri_oembed\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.ImageSearchItemCreative\": {\n        \"properties\": {\n          \"allowed_use\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.AllowedUse\"\n          },\n          \"alternative_ids\": {\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"object\"\n          },\n          \"artist\": {\n            \"type\": \"string\"\n          },\n          \"asset_family\": {\n            \"type\": \"string\"\n          },\n          \"call_for_image\": {\n            \"type\": \"boolean\"\n          },\n          \"caption\": {\n            \"type\": \"string\"\n          },\n          \"collection_code\": {\n            \"type\": \"string\"\n          },\n          \"collection_id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"collection_name\": {\n            \"type\": \"string\"\n          },\n          \"color_type\": {\n            \"type\": \"string\"\n          },\n          \"copyright\": {\n            \"type\": \"string\"\n          },\n          \"date_camera_shot\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"date_created\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"display_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Search.ImageSearchItemDisplaySize\"\n            },\n            \"type\": \"array\"\n          },\n          \"graphical_style\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"keywords\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Keyword\"\n            },\n            \"type\": \"array\"\n          },\n          \"largest_downloads\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Download\"\n            },\n            \"type\": \"array\"\n          },\n          \"license_model\": {\n            \"type\": \"string\"\n          },\n          \"max_dimensions\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.MaxDimensions\"\n          },\n          \"orientation\": {\n            \"type\": \"string\"\n          },\n          \"quality_rank\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"referral_destinations\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.ReferralDestination\"\n            },\n            \"type\": \"array\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          },\n          \"uri_oembed\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.ImageSearchItemDisplaySize\": {\n        \"properties\": {\n          \"is_watermarked\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.ImageSearchItemEditorial\": {\n        \"properties\": {\n          \"allowed_use\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.AllowedUse\"\n          },\n          \"alternative_ids\": {\n            \"additionalProperties\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"object\"\n          },\n          \"artist\": {\n            \"type\": \"string\"\n          },\n          \"asset_family\": {\n            \"type\": \"string\"\n          },\n          \"call_for_image\": {\n            \"type\": \"boolean\"\n          },\n          \"caption\": {\n            \"type\": \"string\"\n          },\n          \"collection_code\": {\n            \"type\": \"string\"\n          },\n          \"collection_id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"collection_name\": {\n            \"type\": \"string\"\n          },\n          \"color_type\": {\n            \"type\": \"string\"\n          },\n          \"copyright\": {\n            \"type\": \"string\"\n          },\n          \"date_camera_shot\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"date_created\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"display_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Search.ImageSearchItemDisplaySize\"\n            },\n            \"type\": \"array\"\n          },\n          \"editorial_segments\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"editorial_source\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.Search.EditorialSource\"\n          },\n          \"event_ids\": {\n            \"items\": {\n              \"format\": \"int32\",\n              \"type\": \"integer\"\n            },\n            \"type\": \"array\"\n          },\n          \"graphical_style\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"keywords\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Keyword\"\n            },\n            \"type\": \"array\"\n          },\n          \"largest_downloads\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Download\"\n            },\n            \"type\": \"array\"\n          },\n          \"license_model\": {\n            \"type\": \"string\"\n          },\n          \"max_dimensions\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.MaxDimensions\"\n          },\n          \"orientation\": {\n            \"type\": \"string\"\n          },\n          \"people\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"product_types\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"quality_rank\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"referral_destinations\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.ReferralDestination\"\n            },\n            \"type\": \"array\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          },\n          \"uri_oembed\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.ImageSearchLightItemCreative\": {\n        \"properties\": {\n          \"display_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Search.ImageSearchItemDisplaySize\"\n            },\n            \"type\": \"array\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.SearchResults[GettyImages.Models.Search.ImageSearchItem]\": {\n        \"properties\": {\n          \"images\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Search.ImageSearchItem\"\n            },\n            \"type\": \"array\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.VideoSearchItem\": {\n        \"properties\": {\n          \"allowed_use\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.AllowedUse\"\n          },\n          \"artist\": {\n            \"type\": \"string\"\n          },\n          \"asset_family\": {\n            \"type\": \"string\"\n          },\n          \"caption\": {\n            \"type\": \"string\"\n          },\n          \"clip_length\": {\n            \"type\": \"string\"\n          },\n          \"collection_code\": {\n            \"type\": \"string\"\n          },\n          \"collection_id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"collection_name\": {\n            \"type\": \"string\"\n          },\n          \"color_type\": {\n            \"type\": \"string\"\n          },\n          \"copyright\": {\n            \"type\": \"string\"\n          },\n          \"date_created\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"display_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Search.VideoSearchItemDisplaySize\"\n            },\n            \"type\": \"array\"\n          },\n          \"era\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"istock_licenses\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.IStockLicense\"\n            },\n            \"type\": \"array\"\n          },\n          \"keywords\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Keyword\"\n            },\n            \"type\": \"array\"\n          },\n          \"largest_downloads\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Download\"\n            },\n            \"type\": \"array\"\n          },\n          \"license_model\": {\n            \"type\": \"string\"\n          },\n          \"mastered_to\": {\n            \"type\": \"string\"\n          },\n          \"originally_shot_on\": {\n            \"type\": \"string\"\n          },\n          \"product_types\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"referral_destinations\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.ReferralDestination\"\n            },\n            \"type\": \"array\"\n          },\n          \"shot_speed\": {\n            \"type\": \"string\"\n          },\n          \"source\": {\n            \"type\": \"string\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.VideoSearchItemDisplaySize\": {\n        \"properties\": {\n          \"aspect_ratio\": {\n            \"type\": \"string\"\n          },\n          \"is_watermarked\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Search.VideoSearchResults[GettyImages.Models.Artists.VideoSearchItem]\": {\n        \"properties\": {\n          \"facets\": {\n            \"$ref\": \"#/definitions/Enterprise.Proxies.Public.V3.Controllers.Search.Facets.SearchFacetsResponse\"\n          },\n          \"result_count\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"videos\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Artists.VideoSearchItem\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.TerritoryRestriction\": {\n        \"properties\": {\n          \"country_code\": {\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Videos.VideoDetail\": {\n        \"properties\": {\n          \"allowed_use\": {\n            \"$ref\": \"#/definitions/GettyImages.Models.AllowedUse\"\n          },\n          \"artist\": {\n            \"type\": \"string\"\n          },\n          \"asset_family\": {\n            \"type\": \"string\"\n          },\n          \"caption\": {\n            \"type\": \"string\"\n          },\n          \"clip_length\": {\n            \"type\": \"string\"\n          },\n          \"collection_code\": {\n            \"type\": \"string\"\n          },\n          \"collection_id\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"collection_name\": {\n            \"type\": \"string\"\n          },\n          \"color_type\": {\n            \"type\": \"string\"\n          },\n          \"copyright\": {\n            \"type\": \"string\"\n          },\n          \"date_created\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"date_submitted\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"display_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Videos.VideoDetailDisplaySize\"\n            },\n            \"type\": \"array\"\n          },\n          \"download_sizes\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Videos.VideoDownloadSize\"\n            },\n            \"type\": \"array\"\n          },\n          \"editorial_segments\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"era\": {\n            \"type\": \"string\"\n          },\n          \"id\": {\n            \"type\": \"string\"\n          },\n          \"istock_licenses\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.IStockLicense\"\n            },\n            \"type\": \"array\"\n          },\n          \"keywords\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Keyword\"\n            },\n            \"type\": \"array\"\n          },\n          \"license_model\": {\n            \"type\": \"string\"\n          },\n          \"mastered_to\": {\n            \"type\": \"string\"\n          },\n          \"originally_shot_on\": {\n            \"type\": \"string\"\n          },\n          \"product_types\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          },\n          \"referral_destinations\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.ReferralDestination\"\n            },\n            \"type\": \"array\"\n          },\n          \"shot_speed\": {\n            \"type\": \"string\"\n          },\n          \"source\": {\n            \"type\": \"string\"\n          },\n          \"title\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Videos.VideoDetailDisplaySize\": {\n        \"properties\": {\n          \"aspect_ratio\": {\n            \"description\": \"Identifies the URI for the image\",\n            \"type\": \"string\"\n          },\n          \"is_watermarked\": {\n            \"description\": \"Indicates whether the image is watermarked.\",\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"description\": \"Identifies the name of the display size\",\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"description\": \"Identifies the URI for the image\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Videos.VideoDownloadAuthorization\": {\n        \"properties\": {\n          \"agreement_name\": {\n            \"type\": \"string\"\n          },\n          \"product_id\": {\n            \"type\": \"string\"\n          },\n          \"product_type\": {\n            \"type\": \"string\"\n          },\n          \"uri\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Videos.VideoDownloadSize\": {\n        \"properties\": {\n          \"bit_depth\": {\n            \"type\": \"string\"\n          },\n          \"broadcast_video_standard\": {\n            \"type\": \"string\"\n          },\n          \"compression\": {\n            \"type\": \"string\"\n          },\n          \"content_type\": {\n            \"type\": \"string\"\n          },\n          \"description\": {\n            \"type\": \"string\"\n          },\n          \"downloads\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Videos.VideoDownloadAuthorization\"\n            },\n            \"type\": \"array\"\n          },\n          \"format\": {\n            \"type\": \"string\"\n          },\n          \"frame_rate\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"frame_size\": {\n            \"type\": \"string\"\n          },\n          \"height\": {\n            \"format\": \"double\",\n            \"type\": \"number\"\n          },\n          \"interlaced\": {\n            \"type\": \"boolean\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"width\": {\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Models.Videos.VideosDetail\": {\n        \"properties\": {\n          \"videos\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/GettyImages.Models.Videos.VideoDetail\"\n            },\n            \"type\": \"array\"\n          },\n          \"videos_not_found\": {\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"GettyImages.Services.Core.SecurityToken\": {\n        \"properties\": {\n          \"ActAsSystemId\": {\n            \"type\": \"string\"\n          },\n          \"AdminId\": {\n            \"type\": \"string\"\n          },\n          \"AuthId\": {\n            \"type\": \"string\"\n          },\n          \"ClientIP\": {\n            \"type\": \"string\"\n          },\n          \"ClientId\": {\n            \"type\": \"string\"\n          },\n          \"Created\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"Expires\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"RememberedUser\": {\n            \"type\": \"boolean\"\n          },\n          \"RenewalEnds\": {\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"SecureOnly\": {\n            \"type\": \"boolean\"\n          },\n          \"SystemId\": {\n            \"type\": \"string\"\n          },\n          \"SystemRole\": {\n            \"enum\": [\n              \"CustomerFacing\",\n              \"Admin\",\n              \"Automation\"\n            ],\n            \"type\": \"string\"\n          },\n          \"UserId\": {\n            \"type\": \"string\"\n          },\n          \"VisitorId\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Links\": {\n        \"properties\": {\n          \"invitation\": {\n            \"type\": \"string\"\n          },\n          \"share\": {\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"Object\": {\n        \"properties\": {},\n        \"type\": \"object\"\n      },\n      \"PartnerChannel\": {\n        \"description\": \"partner_channel\",\n        \"properties\": {\n          \"asset_family\": {\n            \"description\": \"Specifies the asset family for the channel (e.g. \\\"editorial\\\" or \\\"creative\\\")\",\n            \"type\": \"string\"\n          },\n          \"asset_type\": {\n            \"description\": \"Specifies channel's asset type (i.e. \\\"image\\\", \\\"film\\\")\",\n            \"type\": \"string\"\n          },\n          \"channel_id\": {\n            \"description\": \"Specifies the identification number for the channel\",\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"channel_type\": {\n            \"description\": \"Specifies the channel type (i.e. \\\"New,\\\" \\\"Updated\\\" or \\\"Deleted\\\")\",\n            \"type\": \"string\"\n          },\n          \"notification_count\": {\n            \"description\": \"Specifies the current count of notifications pending in the channel\",\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"oldest_notification_date_utc\": {\n            \"description\": \"Specifies the date of the oldest notification currently in the channel in UTC\",\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          },\n          \"start_date\": {\n            \"description\": \"\",\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"PartnerChannelList\": {\n        \"properties\": {\n          \"channels\": {\n            \"items\": {\n              \"$ref\": \"#/definitions/PartnerChannel\"\n            },\n            \"type\": \"array\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"System.Object\": {\n        \"properties\": {},\n        \"type\": \"object\"\n      },\n      \"asset_usage\": {\n        \"description\": \"Specifies the id, usage Quantity, and date of when an asset was used.\",\n        \"properties\": {\n          \"asset_id\": {\n            \"description\": \"Specifies the Id of the asset that was used.\",\n            \"type\": \"string\"\n          },\n          \"quantity\": {\n            \"description\": \"Specifies the number of times the asset was used.\",\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          },\n          \"usage_date\": {\n            \"description\": \"Identifies the date the asset was used, in ISO 8601 format (e.g., YYYY-MM-DD), time is not needed.\",\n            \"format\": \"date-time\",\n            \"type\": \"string\"\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"report_usage_batch_request\": {\n        \"description\": \"Specifies the request information for the Batch Usages endpoint.\",\n        \"properties\": {\n          \"asset_usages\": {\n            \"description\": \"Identifies the list of asset id, usage count and date of usage combinations to record.\",\n            \"items\": {\n              \"$ref\": \"#/definitions/asset_usage\"\n            },\n            \"type\": \"array\",\n            \"uniqueItems\": false\n          }\n        },\n        \"type\": \"object\"\n      },\n      \"report_usage_batch_response\": {\n        \"description\": \"Specifies the response from the Batch Usages endpoint.\",\n        \"properties\": {\n          \"invalid_assets\": {\n            \"description\": \"Identifies a list of asset ids submitted that did not match known Getty asset ids.\",\n            \"items\": {\n              \"type\": \"string\"\n            },\n            \"type\": \"array\",\n            \"uniqueItems\": false\n          },\n          \"total_asset_usages_processed\": {\n            \"description\": \"Specifies the number of asset usage records that were successfully recorded.\",\n            \"format\": \"int32\",\n            \"type\": \"integer\"\n          }\n        },\n        \"type\": \"object\"\n      }\n    }\n  }"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Schemas/unsupported/issue0204.yaml",
    "content": "﻿openapi: 3.0.0\ninfo:\n  description: This is our customer facing API for the Qorta platform\n  version: v1\n  title: SambaSafety Customer API\ntags:\n  - name: authentication\n  - name: user management\n    description: Operations to manage users\n  - name: group\n    description: Operations to manage a group\n  - name: people\n    description: Operations to manage people in groups\n  - name: license\n    description: Operations to manage licenses associated with people\n  - name: license enrollment\n    description: Operations to manage enrollment in monitoring per license\n  - name: mvr\n    description: Operations to find and retrieve an MVR\n  - name: mvr order\n    description: Operations for mvr orders\n  - name: subscription\n    description: Webhook management\npaths:\n  /oauth2/v1/token:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Authorization/1.0#/components/token'\n  /oauth2/v1/revoke:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Authorization/1.0#/components/revokeToken'\n  /organization/v1/groups/{groupId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Organization/v1#/components/groupsById'\n  /organization/v1/groups:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Organization/v1#/components/groups'\n  /organization/v1/groups/{groupId}/people:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Organization/v1#/components/people'\n  /organization/v1/people/{personId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Organization/v1#/components/peopleById'\n  /organization/v1/groups/{groupId}/people/{personId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Organization/v1#/components/groupsByIdPeopleById'\n  /organization/v1/people/search:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Organization/v1#/components/peopleBySearch'\n  /organization/v1/people/{personId}/customfields:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Organization/v1#/components/customFields'\n  /organization/v1/licenses/{licenseId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Organization/v1#/components/licensesById'\n  /organization/v1/licenses/search:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Organization/v1#/components/licenseBySearch'\n  /organization/v1/licenses/history:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Transactional/v1-beta#/components/LicenseHistoryOrder'\n  /organization/v1/people/{personId}/licenses:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Organization/v1#/components/licenses'\n  /organization/v1/users:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/UserManagement/v1#/components/users'\n  /organization/v1/users/{userId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/UserManagement/v1#/components/userById'\n  /organization/v1/users/{userId}/roles:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/UserManagement/v1#/components/rolesByUserId'\n  /organization/v1/users/{userId}/groups:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/UserManagement/v1#/components/groupsByUserId'\n  /organization/v1/users/search:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/UserManagement/v1#/components/usersSearch'\n  /monitoring/v1/groups/{groupId}/licenseenrollments:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Monitoring/1.1#/components/licenseEnrollmentsByGroupId'\n  /monitoring/v1/licenseenrollments/{licenseId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Monitoring/1.1#/components/licenseEnrollmentsById'\n  /monitoring/v1/people/{personId}/licenseenrollments:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Monitoring/1.1#/components/licenseEnrollmentsByPersonId'\n  /monitoring/v1/licenseenrollments/search:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Monitoring/1.1#/components/licenseEnrollmentsByStateByDLN'\n  /transactional/v1/licenses/{licenseId}/mvrorders:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Transactional/v1-beta#/components/LicenseIdMvrOrder'\n  /transactional/v1/mvrorders:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Transactional/v1-beta#/components/DriverDataMvrOrder'\n  /transactional/v1/mvrorders/{mvrOrderId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Transactional/v1-beta#/components/MvrOrderById'\n  /reports/v1/licensehistory/{orderId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Transactional/v1-beta#/components/LicenseHistoryResponse'\n  /reports/v1/motorvehiclereports/watch:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Reports/v1#/components/MVRWatch'\n  /reports/v1/motorvehiclereports/watch/{subscriptionId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Reports/v1#/components/SubscriptionModify'\n  /reports/v1/people/{personId}/motorvehiclereports:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Reports/v1#/components/MVRsByPersonId'\n  /reports/v1/motorvehiclereports/{mvrId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/MonitoringMotorVehicleReports/v1-beta#/components/MVRById'\n  /reports/v1/motorvehiclereports/{mvrId}/mvrreason:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/Reports/v1#/components/MvrReason'\n  /reports/v1/monitoring/motorvehiclereports/{mvrId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/MonitoringMotorVehicleReports/v1-beta#/components/MonitoringMVRById'\n  /reports/v1/compliance/motorvehiclereports/{mvrId}:\n    $ref: 'https://api.swaggerhub.com/domains/SambaSafety/MonitoringMotorVehicleReports/v1-beta#/components/ComplianceMVRById'\ncomponents:\n  securitySchemes:\n    ApiKeyAuth:      # arbitrary name for the security scheme\n      type: apiKey\n      in: header       # can be \"header\", \"query\" or \"cookie\"\n      name: x-api-key\n    Authorization:            # arbitrary name for the security\n        type: http\n        scheme: bearer\n        bearerFormat: JWT\n        description: >\n          For accessing the API a valid JWT token must be passed in\n\n          the 'Authorization' header.\n\n          A valid JWT token is generated by the Authentication API.\n\n          The following syntax must be used in the 'Authorization' header :\n\n              Bearer: xxxxxx.yyyyyyy.zzzzzz\nsecurity:\n   - ApiKeyAuth: []\n     Authorization: []\n# Added by API Auto Mocking Plugin\nservers:\n    - description: API Demo\n      url: https://api-demo.sambasafety.io\n# Added by API Auto Mocking Plugin\n    - description: SwaggerHub API Auto Mocking\n      url: https://api-mock.sambasafety.io\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Script.fsx",
    "content": "// Load SwaggerProvider\n#r @\"../../src/SwaggerProvider/bin/Release/SwaggerProvider.dll\"\nopen SwaggerProvider\n\n// Petstore\n[<Literal>]\nlet path =\n    __SOURCE_DIRECTORY__\n    + \"/../SwaggerProvider.Tests/Schemas/PetStore.Swagger.json\"\n\ntype PetStore = SwaggerClientProvider<path, \"Content-Type,application/json\">\n\n// Types\nlet tag = PetStore.Definitions.Tag()\ntag.Id <- Some 1337L\ntag.Name <- \"foobar\"\n\nlet category = new PetStore.Definitions.Category()\ncategory.Id <- Some 1337L\ncategory.Name <- \"dog\"\n\nlet pet = new PetStore.Definitions.Pet(Name = \"foo\", Id = Some 1337L)\npet.Name <- \"bar\" // Overwrites \"foo\"\npet.Category <- category\npet.Status <- \"sold\"\npet.Tags <- [| tag |]\n\nlet user = new PetStore.Definitions.User()\nuser.Id <- Some 1337L\nuser.FirstName <- \"Firstname\"\nuser.LastName <- \"Lastname\"\nuser.Email <- \"e-mail\"\nuser.Password <- \"password\"\nuser.Phone <- \"12345678\"\nuser.Username <- \"user_name\"\n\n// Calls\nlet f = PetStore.Pet.GetPetById(6L)\nf.Category\nf.Name <- \"Hans\"\nf.Tags <- Array.append f.Tags [| tag |]\n\nPetStore.Pet.AddPet(pet)\nlet x = PetStore.Pet.FindPetsByTags([| \"tag1\" |])\nArray.length x\n\nPetStore.Pet.UpdatePetWithForm(-1L, \"name\", \"sold\")\nPetStore.Pet.GetPetById(1337L)\n\nlet h = PetStore.Pet.FindPetsByStatus([| \"pending\"; \"sold\" |])\nh.ToString()\nlet i = PetStore.Pet.FindPetsByTags([| \"tag2\" |])\ni.ToString()\n\nPetStore.Store.GetInventory().ToString()\nPetStore.Store.GetOrderById(3L).ToString()\n\nPetStore.Pet.GetPetById(14L).ToString()\nPetStore.Pet.DeletePet(14L, \"no-key\").ToString()\nPetStore.Pet.GetPetById(14L).ToString()\n\n// Serialization\n#r @\"../../packages/Newtonsoft.Json.7.0.1/lib/net40/Newtonsoft.Json.dll\"\n\nopen SwaggerProvider.OptionConverter\nopen Newtonsoft.Json\nopen Newtonsoft.Json.Converters\n\nlet settings = JsonSerializerSettings(NullValueHandling = NullValueHandling.Ignore) //Add 'Formatting = Formatting.Indented' for nice json formatting\nsettings.Converters.Add(new OptionConverter() :> Newtonsoft.Json.JsonConverter) // This does not run if the session is not bound to Blend/Newtonsoft.Json.dll\nlet body = JsonConvert.SerializeObject(pet :> obj, settings)\nlet data = body.ToLower()\ndata\n\n// HTTP calls\nopen FSharp.Data\nHttp.RequestString(\"http://petstore.swagger.io/v2/pet/6?=\", headers = seq [ (\"Content-Type\", \"application/json\") ], query = [])\n\nHttp.RequestString(\n    \"http://petstore.swagger.io/v2/pet\",\n    httpMethod = \"POST\",\n    headers = seq [ (\"Content-Type\", \"application/json\") ],\n    body = HttpRequestBody.TextRequest data,\n    query = []\n)\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swagger.I0173.Tests.fs",
    "content": "module Swagger.I0173.Tests\n\nopen SwaggerProvider\n\n[<Literal>]\nlet Schema = __SOURCE_DIRECTORY__ + \"/Schemas/issue173.json\"\n\ntype OdhApiTourism = OpenApiClientProvider<Schema>\n\nlet inst = OdhApiTourism.Client()\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swagger.I0181.Tests.fs",
    "content": "module Swagger.I0181.Tests\n\nopen SwaggerProvider\n\n[<Literal>]\nlet Schema = __SOURCE_DIRECTORY__ + \"/Schemas/issue181.yaml\"\n\ntype MyApi = OpenApiClientProvider<Schema>\n\nlet inst = MyApi.Client()\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swagger.I0219.Tests.fs",
    "content": "module Swagger.I0219.Tests\n\nopen SwaggerProvider\n\n[<Literal>]\nlet Schema = __SOURCE_DIRECTORY__ + \"/Schemas/issue219.yaml\"\n\ntype AcmeApi = OpenApiClientProvider<Schema>\n\nlet inst = AcmeApi.Client()\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swagger.I0279.Tests.fs",
    "content": "module Swagger.I0279.Tests\n\nopen SwaggerProvider\n\n[<Literal>]\nlet Schema = __SOURCE_DIRECTORY__ + \"/Schemas/issue279.json\"\n\ntype Immich = OpenApiClientProvider<Schema>\n\nlet inst = Immich.Client()\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swagger.NullableDate.Tests.fs",
    "content": "module Swagger.NullableDate.Tests\n\nopen SwaggerProvider\nopen Xunit\nopen FsUnitTyped\nopen System.Text.Json\nopen System.Text.Json.Serialization\n\n[<Literal>]\nlet Schema = __SOURCE_DIRECTORY__ + \"/Schemas/nullable-date.yaml\"\n\ntype TestApi = OpenApiClientProvider<Schema>\n\n[<Fact>]\nlet ``PersonDto should have nullable birthDate property``() =\n    let personType = typeof<TestApi.PersonDto>\n    let birthDateProp = personType.GetProperty(\"BirthDate\")\n    birthDateProp |> shouldNotEqual null\n\n    // The property should be Option<DateOnly> (on .NET 6+) or Option<DateTimeOffset> (netstandard2.0)\n    let propType = birthDateProp.PropertyType\n    propType.IsGenericType |> shouldEqual true\n\n    let genericTypeDef = propType.GetGenericTypeDefinition()\n\n    let hasNullableWrapper =\n        genericTypeDef = typedefof<Option<_>>\n        || genericTypeDef = typedefof<System.Nullable<_>>\n\n    hasNullableWrapper |> shouldEqual true\n\n[<Fact>]\nlet ``PersonDto birthDate property should be Option<DateOnly> on NET6+``() =\n    let personType = typeof<TestApi.PersonDto>\n    let birthDateProp = personType.GetProperty(\"BirthDate\")\n    birthDateProp |> shouldNotEqual null\n\n    // On NET6+, format: date should map to DateOnly wrapped in Option<T>\n    let propType = birthDateProp.PropertyType\n    propType |> shouldEqual typeof<Option<System.DateOnly>>\n\n[<Fact>]\nlet ``PersonDto can deserialize JSON with null birthDate using type provider deserialization``() =\n    // This JSON is from the issue - a person with null birthDate\n    let jsonWithNullBirthDate =\n        \"\"\"{\n    \"id\": \"04a38328-4202-44ef-9f2b-ee85b1cd1a48\",\n    \"name\": \"Test\",\n    \"birthDate\": null\n}\"\"\"\n\n    // Use the same deserialization code as the type provider (System.Text.Json with JsonFSharpConverter)\n    let options = JsonSerializerOptions()\n    options.Converters.Add(JsonFSharpConverter())\n\n    // Deserialize - this should not throw\n    let person =\n        JsonSerializer.Deserialize<TestApi.PersonDto>(jsonWithNullBirthDate, options)\n\n    // Verify the properties\n    person.Id |> shouldEqual \"04a38328-4202-44ef-9f2b-ee85b1cd1a48\"\n    person.Name |> shouldEqual \"Test\"\n    person.BirthDate |> shouldEqual None\n\n[<Fact>]\nlet ``PersonDto can deserialize JSON with valid birthDate using type provider deserialization``() =\n    // Test with a valid date value\n    let jsonWithValidBirthDate =\n        \"\"\"{\n    \"id\": \"test-id-123\",\n    \"name\": \"John Doe\",\n    \"birthDate\": \"1990-05-15\"\n}\"\"\"\n\n    // Use the same deserialization code as the type provider\n    let options = JsonSerializerOptions()\n    options.Converters.Add(JsonFSharpConverter())\n\n    // Deserialize\n    let person =\n        JsonSerializer.Deserialize<TestApi.PersonDto>(jsonWithValidBirthDate, options)\n\n    // Verify the properties\n    person.Id |> shouldEqual \"test-id-123\"\n    person.Name |> shouldEqual \"John Doe\"\n\n    // BirthDate should be Some value\n    person.BirthDate |> shouldNotEqual None\n\n    match person.BirthDate with\n    | Some date ->\n        // Verify the date is correct (1990-05-15)\n        date.Year |> shouldEqual 1990\n        date.Month |> shouldEqual 5\n        date.Day |> shouldEqual 15\n    | None -> failwith \"Expected Some date but got None\"\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swagger.PetStore.Tests.fs",
    "content": "module Swagger.PetStore.Tests\n\nopen SwaggerProvider\nopen Swagger\nopen FsUnitTyped\nopen Xunit\nopen System\nopen System.Net.Http\n\n[<Literal>]\nlet Schema = \"https://petstore.swagger.io/v2/swagger.json\"\n\ntype PetStore = OpenApiClientProvider<Schema, PreferAsync=true>\ntype PetStoreTask = OpenApiClientProvider<Schema, PreferAsync=false>\n\ntype PetStoreNullable = OpenApiClientProvider<Schema, PreferNullable=true>\ntype PetStoreOperationId = OpenApiClientProvider<Schema, IgnoreOperationId=true>\ntype PetStoreControllerPrefix = OpenApiClientProvider<Schema, IgnoreControllerPrefix=false>\n\nlet store = PetStore.Client()\nlet storeTask = PetStoreTask.Client()\nlet apiKey = \"test-key\"\n\n[<Fact>]\nlet ``Test provided Host property``() =\n    let store = PetStore.Client()\n\n    store.HttpClient.BaseAddress.ToString()\n    |> shouldEqual \"https://petstore.swagger.io/v2/\"\n\n    store.HttpClient.BaseAddress <- Uri \"http://petstore.swagger.io/v3/\"\n\n    store.HttpClient.BaseAddress.ToString()\n    |> shouldEqual \"http://petstore.swagger.io/v3/\"\n\n[<Fact>]\nlet ``Instantiate provided objects``() =\n    let pet = PetStore.Pet(Name = \"foo\")\n    pet.Name |> shouldEqual \"foo\"\n    pet.ToString() |> shouldContainText \"foo\"\n    pet.Name <- \"bar\"\n    pet.Name |> shouldEqual \"bar\"\n    pet.ToString() |> shouldContainText \"bar\"\n\n[<Fact>]\nlet ``throw custom exceptions from async``() =\n    task {\n        try\n            let! _ = store.GetPetById(-142L)\n            failwith \"Call should fail\"\n        with\n        | :? HttpRequestException ->\n            // External API connectivity issue (e.g. SSL/TLS failure); skip assertion\n            ()\n        | :? System.AggregateException as aex ->\n            match aex.InnerException with\n            | :? OpenApiException as ex -> ex.Description |> shouldEqual \"Pet not found\"\n            | :? HttpRequestException -> ()\n            | _ -> raise aex\n    }\n\n[<Fact>]\nlet ``throw custom exceptions from task``() =\n    task {\n        try\n            let! _ = storeTask.GetPetById(-142L)\n            failwith \"Call should fail\"\n        with\n        | :? HttpRequestException ->\n            // External API connectivity issue (e.g. SSL/TLS failure); skip assertion\n            ()\n        | :? OpenApiException as ex -> ex.Description |> shouldEqual \"Pet not found\"\n    }\n\n[<Fact>]\nlet ``call provided methods``() =\n    task {\n        let id = 3247L\n\n        try\n            do! store.DeletePet(id, Some apiKey)\n        with _ ->\n            ()\n\n        let tag = PetStore.Tag(None, Some \"foobar\")\n        tag.Name |> shouldEqual(Some \"foobar\")\n        let pet = PetStore.Pet(\"foo\", [||], Some id)\n        pet.ToString() |> shouldContainText(id.ToString())\n\n        try\n            do! store.AddPet(pet)\n        with exn ->\n            let msg =\n                if isNull exn.InnerException then\n                    exn.Message\n                else\n                    exn.InnerException.Message\n\n            failwith $\"Adding pet failed with message: %s{msg}\"\n    }\n\n[<Fact>]\nlet ``create types with Nullable properties``() =\n    let tag = PetStoreNullable.Tag(Nullable<_>(), \"foobar\")\n    tag.Name |> shouldEqual \"foobar\"\n    let tag2 = PetStoreNullable.Tag(Name = \"foobar\")\n    tag2.ToString() |> shouldContainText \"foobar\"\n\n    let pet = PetStoreNullable.Pet(\"foo\", [||], Nullable(1337L))\n    pet.ToString() |> shouldContainText \"1337\"\n    let pet2 = PetStoreNullable.Pet(Name = \"foo\", Id = Nullable(1337L))\n    pet2.ToString() |> shouldContainText \"1337\"\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swagger.SchemaReaderErrors.Tests.fs",
    "content": "module Swagger.SchemaReaderErrors.Tests\n\nopen SwaggerProvider\nopen Xunit\nopen FsUnitTyped\n\n[<Literal>]\nlet ValidSchema = __SOURCE_DIRECTORY__ + \"/Schemas/petstore.yaml\"\n\n[<Literal>]\nlet SchemaWithErrors =\n    __SOURCE_DIRECTORY__ + \"/Schemas/nullable-parameter-issue261.json\"\n\ntype ValidApi = OpenApiClientProvider<ValidSchema>\n\ntype ApiWithErrors = OpenApiClientProvider<SchemaWithErrors, IgnoreParseErrors=true>\n\n[<Fact>]\nlet ``SchemaReaderErrors is empty for a valid schema``() =\n    ValidApi.SchemaReaderErrors |> shouldEqual []\n\n[<Fact>]\nlet ``SchemaReaderErrors is non-empty when IgnoreParseErrors=true and schema has validation errors``() =\n    ApiWithErrors.SchemaReaderErrors |> List.isEmpty |> shouldEqual false\n\n[<Fact>]\nlet ``SchemaReaderErrors entries contain message and pointer``() =\n    let errors = ApiWithErrors.SchemaReaderErrors\n    errors |> List.isEmpty |> shouldEqual false\n\n    for entry in errors do\n        entry.Contains(\" @ \") |> shouldEqual true\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/SwaggerProvider.ProviderTests.fsproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</TargetFrameworks>\n    <DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>\n    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>\n  </PropertyGroup>\n  <PropertyGroup>\n    <AssemblyName>SwaggerProvider.ProviderTests</AssemblyName>\n    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"Swagger.PetStore.Tests.fs\" />\n    <Compile Include=\"Swagger.I0173.Tests.fs\" />\n    <Compile Include=\"Swagger.I0181.Tests.fs\" />\n    <Compile Include=\"Swagger.I0219.Tests.fs\" />\n    <Compile Include=\"Swagger.I0279.Tests.fs\" />\n    <Compile Include=\"Swagger.NullableDate.Tests.fs\" />\n    <Compile Include=\"Swagger.SchemaReaderErrors.Tests.fs\" />\n    <Compile Include=\"Swashbuckle.ReturnControllers.Tests.fs\" />\n    <Compile Include=\"Swashbuckle.CancellationToken.Tests.fs\" />\n    <Compile Include=\"Swashbuckle.ReturnTextControllers.Tests.fs\" />\n    <Compile Include=\"Swashbuckle.UpdateControllers.Tests.fs\" />\n    <Compile Include=\"Swashbuckle.ResourceControllers.Tests.fs\" />\n    <Compile Include=\"Swashbuckle.FileController.Tests.fs\" />\n    <Compile Include=\"Swashbuckle.NoContentControllers.Tests.fs\" />\n    <Compile Include=\"Swashbuckle.SpecialCasesControllers.Tests.fs\" />\n    <Compile Include=\"..\\SwaggerProvider.Tests\\APIs.guru.fs\">\n      <Link>APIs.guru.fs</Link>\n    </Compile>\n    <Compile Include=\"APIs.Guru.FSC.Tests.fs\" />\n    <None Include=\"Script.fsx\" />\n    <None Include=\"paket.references\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"System.IO\" />\n    <Reference Include=\"System.Runtime\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\src\\SwaggerProvider.Runtime\\SwaggerProvider.Runtime.fsproj\" />\n  </ItemGroup>\n  <Import Project=\"..\\..\\.paket\\Paket.Restore.targets\" />\n</Project>\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swashbuckle.CancellationToken.Tests.fs",
    "content": "module Swashbuckle.CancellationTokenTests\n\nopen Xunit\nopen FsUnitTyped\nopen System\nopen System.Net.Http\nopen System.Threading\nopen SwaggerProvider\nopen Swashbuckle.ReturnControllersTests\n\ntype WebAPIAsync =\n    OpenApiClientProvider<\"http://localhost:5000/swagger/v1/openapi.json\", IgnoreOperationId=true, SsrfProtection=false, PreferAsync=true>\n\nlet apiAsync =\n    let handler = new HttpClientHandler(UseCookies = false)\n\n    let client =\n        new HttpClient(handler, true, BaseAddress = Uri(\"http://localhost:5000\"))\n\n    WebAPIAsync.Client(client)\n\n[<Fact>]\nlet ``Call generated method without CancellationToken uses default token``() =\n    task {\n        let! result = api.GetApiReturnBoolean()\n        result |> shouldEqual true\n    }\n\n[<Fact>]\nlet ``Call generated method with explicit CancellationToken None``() =\n    task {\n        let! result = api.GetApiReturnBoolean(CancellationToken.None)\n        result |> shouldEqual true\n    }\n\n[<Fact>]\nlet ``Call generated method with valid CancellationTokenSource token``() =\n    task {\n        use cts = new CancellationTokenSource()\n        let! result = api.GetApiReturnInt32(cts.Token)\n        result |> shouldEqual 42\n    }\n\n[<Fact>]\nlet ``Call generated method with already-cancelled token raises OperationCanceledException``() =\n    task {\n        use cts = new CancellationTokenSource()\n        cts.Cancel()\n\n        try\n            let! _ = api.GetApiReturnString(cts.Token)\n            failwith \"Expected OperationCanceledException\"\n        with\n        | :? OperationCanceledException -> ()\n        | :? System.AggregateException as aex when (aex.InnerException :? OperationCanceledException) -> ()\n    }\n\n[<Fact>]\nlet ``Call POST generated method with explicit CancellationToken None``() =\n    task {\n        let! result = api.PostApiReturnString(CancellationToken.None)\n        result |> shouldEqual \"Hello world\"\n    }\n\n[<Fact>]\nlet ``Call async generated method without CancellationToken uses default token``() =\n    async {\n        let! result = apiAsync.GetApiReturnBoolean()\n        result |> shouldEqual true\n    }\n    |> Async.StartAsTask\n\n[<Fact>]\nlet ``Call method with required param and explicit CancellationToken``() =\n    task {\n        use cts = new CancellationTokenSource()\n        let! result = api.GetApiUpdateString(Some \"Serge\", cts.Token)\n        result |> shouldEqual \"Hello, Serge\"\n    }\n\n[<Fact>]\nlet ``Call method with optional param and explicit CancellationToken``() =\n    task {\n        use cts = new CancellationTokenSource()\n        let! result = api.GetApiUpdateBool(Some true, cts.Token)\n        result |> shouldEqual false\n    }\n\n[<Fact>]\nlet ``Call async generated method with explicit CancellationToken``() =\n    async {\n        use cts = new CancellationTokenSource()\n        let! result = apiAsync.GetApiReturnInt32(cts.Token)\n        result |> shouldEqual 42\n    }\n    |> Async.StartAsTask\n\n[<Fact>]\nlet ``Call stream-returning method with explicit CancellationToken``() =\n    task {\n        use cts = new CancellationTokenSource()\n        let! result = api.GetApiReturnFile(cts.Token)\n        use reader = new IO.StreamReader(result)\n        let! content = reader.ReadToEndAsync()\n        content |> shouldEqual \"I am totally a file's\\ncontent\"\n    }\n\n[<Fact>]\nlet ``Call text-returning method with explicit CancellationToken``() =\n    task {\n        use cts = new CancellationTokenSource()\n        let! result = api.GetApiReturnPlain(cts.Token)\n        result |> shouldEqual \"Hello world\"\n    }\n\n[<Fact>]\nlet ``Call async generated method with already-cancelled token raises OperationCanceledException``() =\n    async {\n        use cts = new CancellationTokenSource()\n        cts.Cancel()\n\n        try\n            let! _ = apiAsync.GetApiReturnString(cts.Token)\n            failwith \"Expected OperationCanceledException\"\n        with\n        | :? OperationCanceledException -> ()\n        | :? AggregateException as aex when (aex.InnerException :? OperationCanceledException) -> ()\n    }\n    |> Async.StartAsTask\n\n[<Fact>]\nlet ``Call async POST generated method with explicit CancellationToken``() =\n    async {\n        use cts = new CancellationTokenSource()\n        let! result = apiAsync.PostApiReturnString(cts.Token)\n        result |> shouldEqual \"Hello world\"\n    }\n    |> Async.StartAsTask\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swashbuckle.FileController.Tests.fs",
    "content": "module Swashbuckle.FileControllersTests\n\nopen Xunit\nopen FsUnitTyped\nopen System.IO\nopen Swashbuckle.ReturnControllersTests\n\nlet text = \"This is test file content\"\n\nlet toStream(text: string) =\n    let bytes = System.Text.Encoding.UTF8.GetBytes(text)\n    new MemoryStream(bytes)\n\nlet fromStream(stream: Stream) =\n    async {\n        use reader = new StreamReader(stream)\n        return! reader.ReadToEndAsync() |> Async.AwaitTask\n    }\n\n\n[<Fact>]\nlet ``Download file as IO.Stream``() =\n    task {\n        let! stream = api.GetApiReturnFile()\n        let! actual = fromStream stream\n        actual |> shouldContainText \"I am totally a file\"\n    }\n\n[<Fact>]\nlet ``Send file as IO.Stream``() =\n    task {\n        let bytes = System.Text.Encoding.UTF8.GetBytes(\"I am totally a file's\\ncontent\")\n        use stream = new MemoryStream(bytes)\n        let! actual = api.PostApiReturnFileStream(stream)\n        actual |> shouldEqual bytes.Length\n    }\n\n[<Fact>]\nlet ``Send file and get it back``() =\n    task {\n        let data =\n            WebAPI.OperationTypes.PostApiReturnFileSingle_formData(Some(toStream text))\n\n        let! stream = api.PostApiReturnFileSingle(data)\n        let! actual = fromStream stream\n        actual |> shouldEqual text\n    }\n\n[<Fact>]\nlet ``Send form-with-file and get it back as IO.Stream``() =\n    task {\n        let data =\n            WebAPI.OperationTypes.PostApiReturnFileFormWithFile_formData(Some \"newName.txt\", Some(toStream text))\n\n        let! stream = api.PostApiReturnFileFormWithFile(data)\n        let! actual = fromStream stream\n        actual |> shouldEqual text\n    }\n\n[<Fact>]\nlet ``Send multiple files``() =\n    task {\n        let data =\n            WebAPI.OperationTypes.PostApiReturnFileMultiple_formData([| toStream text; toStream text |])\n\n        let! actual = api.PostApiReturnFileMultiple(data)\n        actual |> shouldEqual 2\n    }\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swashbuckle.NoContentControllers.Tests.fs",
    "content": "module Swashbuckle.NoContentControllersTests\n\nopen FsUnitTyped\nopen Xunit\nopen Swashbuckle.ReturnControllersTests\n\n[<Fact>]\nlet ``Test 204 with GET``() =\n    task { do! api.GetApiNoContent() }\n\n[<Fact>]\nlet ``Test 204 with POST``() =\n    task { do! api.PostApiNoContent() }\n\n[<Fact>]\nlet ``Test 204 with PUT``() =\n    task { do! api.PutApiNoContent() }\n\n[<Fact>]\nlet ``Test 204 with DELETE``() =\n    task { do! api.DeleteApiNoContent() }\n\n[<Fact>]\nlet ``Test 202 Accepted with GET returns string``() =\n    task {\n        let! result = api.GetApiAccepted()\n        result |> shouldEqual \"accepted-value\"\n    }\n\n[<Fact>]\nlet ``Test 202 Accepted with POST returns string``() =\n    task {\n        let! result = api.PostApiAccepted()\n        result |> shouldEqual \"accepted-value\"\n    }\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swashbuckle.ResourceControllers.Tests.fs",
    "content": "﻿module Swashbuckle.ResourceControllersTests\n\nopen Xunit\nopen FsUnitTyped\nopen Swashbuckle.ReturnControllersTests\n\n[<Fact>]\nlet ``ResourceStringString Add and get from resource dictionary``() =\n    task {\n        do! api.PutApiResourceStringString(\"lang\", \"F#\")\n        do! api.GetApiResourceStringString(\"lang\") |> asyncEqual \"F#\"\n    }\n\n[<Fact>]\nlet ``ResourceStringString Update value in the resource dictionary``() =\n    task {\n        do! api.PutApiResourceStringString(\"name\", \"Sergey\")\n        do! api.GetApiResourceStringString(\"name\") |> asyncEqual \"Sergey\"\n\n        do! api.PostApiResourceStringString(\"name\", \"Siarhei\")\n        do! api.GetApiResourceStringString(\"name\") |> asyncEqual \"Siarhei\"\n    }\n\nlet ``ResourceStringString Delete from the dictionary``() =\n    task {\n        let baseUrl = \"http://localhost/\"\n        do! api.PutApiResourceStringString(\"url\", baseUrl)\n        let! url = api.GetApiResourceStringString(\"url\")\n        shouldEqual url baseUrl\n        do! api.DeleteApiResourceStringString(\"url\")\n    }\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swashbuckle.ReturnControllers.Tests.fs",
    "content": "module Swashbuckle.ReturnControllersTests\n\nopen Xunit\nopen FsUnitTyped\nopen SwaggerProvider\nopen System\nopen System.Net.Http\n\ntype CallLoggingHandler(messageHandler) =\n    inherit DelegatingHandler(messageHandler)\n\n    override _.SendAsync(request, cancellationToken) =\n        printfn $\"[SendAsync]: %A{request.RequestUri}\"\n        base.SendAsync(request, cancellationToken)\n\ntype WebAPI = OpenApiClientProvider<\"http://localhost:5000/swagger/v1/openapi.json\", IgnoreOperationId=true, SsrfProtection=false>\n\nlet api =\n    let handler = new HttpClientHandler(UseCookies = false)\n\n    let client =\n        new HttpClient(handler, true, BaseAddress = Uri(\"http://localhost:5000\"))\n\n    WebAPI.Client(client)\n\nlet asyncEqual expected actualTask =\n    task {\n        let! actual = actualTask\n        actual |> shouldEqual expected\n    }\n\n[<Fact>]\nlet ``Return Bool GET Test``() =\n    api.GetApiReturnBoolean() |> asyncEqual true\n\n[<Fact>]\nlet ``Return Bool POST Test``() =\n    api.PostApiReturnBoolean() |> asyncEqual true\n\n[<Fact>]\nlet ``Return Int32 GET Test\"``() =\n    api.GetApiReturnInt32() |> asyncEqual 42\n\n[<Fact>]\nlet ``Return Int32 POST Test``() =\n    api.PostApiReturnInt32() |> asyncEqual 42\n\n\n[<Fact>]\nlet ``Return Int64 GET Test``() =\n    api.GetApiReturnInt64() |> asyncEqual 42L\n\n[<Fact>]\nlet ``Return Int64 POST Test``() =\n    api.PostApiReturnInt64() |> asyncEqual 42L\n\n[<Fact>]\nlet ``Return Float GET Test``() =\n    api.GetApiReturnFloat() |> asyncEqual 42.0f\n\n[<Fact>]\nlet ``Return Float POST Test``() =\n    api.PostApiReturnFloat() |> asyncEqual 42.0f\n\n\n[<Fact>]\nlet ``Return Double GET Test``() =\n    api.GetApiReturnDouble() |> asyncEqual 42.0\n\n[<Fact>]\nlet ``Return Double POST Test``() =\n    api.PostApiReturnDouble() |> asyncEqual 42.0\n\n\n[<Fact>]\nlet ``Return String GET Test``() =\n    api.GetApiReturnString() |> asyncEqual \"Hello world\"\n\n[<Fact>]\nlet ``Return String POST Test``() =\n    api.PostApiReturnString() |> asyncEqual \"Hello world\"\n\n\n[<Fact>]\nlet ``Return DateTime GET Test``() =\n    api.GetApiReturnDateTime()\n    |> asyncEqual(DateTimeOffset <| DateTime(2015, 1, 1))\n\n[<Fact>]\nlet ``Return DateTime POST Test``() =\n    api.PostApiReturnDateTime()\n    |> asyncEqual(DateTimeOffset <| DateTime(2015, 1, 1))\n\n[<Fact>]\nlet ``Return Guid GET Test``() =\n    api.GetApiReturnGuid() |> asyncEqual(Guid.Empty)\n\n[<Fact>]\nlet ``Return Guid POST Test``() =\n    api.PostApiReturnGuid() |> asyncEqual(Guid.Empty)\n\n[<Fact>]\nlet ``Return Enum GET Test``() =\n    api.GetApiReturnEnum() |> asyncEqual \"Absolute\"\n\n[<Fact>]\nlet ``Return Enum POST Test``() =\n    api.PostApiReturnEnum() |> asyncEqual \"Absolute\"\n\n\n[<Fact>]\nlet ``Return Array Int GET Test``() =\n    api.GetApiReturnArrayInt() |> asyncEqual [| 1; 2; 3 |]\n\n[<Fact>]\nlet ``Return Array Int POST Test``() =\n    api.PostApiReturnArrayInt() |> asyncEqual [| 1; 2; 3 |]\n\n\n[<Fact>]\nlet ``Return Array Enum GET Test``() =\n    api.GetApiReturnArrayEnum() |> asyncEqual [| \"Absolute\"; \"Relative\" |]\n\n[<Fact>]\nlet ``Return Array Enum POST Test``() =\n    api.PostApiReturnArrayEnum()\n    |> asyncEqual [| \"Absolute\"; \"Relative\" |]\n\n\n[<Fact>]\nlet ``Return List Int GET Test``() =\n    api.GetApiReturnListInt() |> asyncEqual [| 1; 2; 3 |]\n\n[<Fact>]\nlet ``Return List Int POST Test``() =\n    api.PostApiReturnListInt() |> asyncEqual [| 1; 2; 3 |]\n\n\n[<Fact>]\nlet ``Return Seq Int GET Test``() =\n    api.GetApiReturnSeqInt() |> asyncEqual [| 1; 2; 3 |]\n\n[<Fact>]\nlet ``Return Seq Int POST Test``() =\n    api.PostApiReturnSeqInt() |> asyncEqual [| 1; 2; 3 |]\n\n\n[<Fact>]\nlet ``Return Object Point GET Test``() =\n    task {\n        let! point = api.GetApiReturnObjectPointClass()\n        point.X |> shouldEqual(Some 0)\n        point.Y |> shouldEqual(Some 0)\n    }\n\n[<Fact>]\nlet ``Return Object Point POST Test``() =\n    task {\n        let! point = api.PostApiReturnObjectPointClass()\n        point.X |> shouldEqual(Some 0)\n        point.Y |> shouldEqual(Some 0)\n    }\n\n\n[<Fact>]\nlet ``Return FileDescription GET Test``() =\n    task {\n        let! file = api.GetApiReturnFileDescription()\n        file.Name |> shouldEqual(Some \"1.txt\")\n        file.Bytes |> shouldEqual(Some [| 1uy; 2uy; 3uy |])\n    }\n\n[<Fact>]\nlet ``Return FileDescription POST Test``() =\n    task {\n        let! file = api.PostApiReturnFileDescription()\n        file.Name |> shouldEqual(Some \"1.txt\")\n        file.Bytes |> shouldEqual(Some [| 1uy; 2uy; 3uy |])\n    }\n\n[<Fact>]\nlet ``Return String Dictionary GET Test``() =\n    task {\n        let! dict = api.GetApiReturnStringDictionary()\n        dict |> shouldEqual(Map [ \"hello\", \"world\" ])\n    }\n\n[<Fact>]\nlet ``Return Object Point Dictionary GET Test``() =\n    task {\n        let! dict = api.GetApiReturnObjectPointClassDictionary()\n        dict.ContainsKey \"point\" |> shouldEqual true\n        let point = dict.[\"point\"]\n        point.X |> shouldEqual(Some 0)\n        point.Y |> shouldEqual(Some 0)\n    }\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swashbuckle.ReturnTextControllers.Tests.fs",
    "content": "module Swashbuckle.ReturnTextControllersTests\n\nopen Xunit\nopen FsUnitTyped\nopen SwaggerProvider\nopen System\nopen System.Net.Http\n\nopen Swashbuckle.ReturnControllersTests\n\n[<Fact>]\nlet ``Return text/plain GET Test``() =\n    api.GetApiReturnPlain() |> asyncEqual \"Hello world\"\n\n[<Fact>]\nlet ``Return text/csv GET Test``() =\n    api.GetApiReturnCsv() |> asyncEqual \"Hello,world\"\n\n[<Fact>]\nlet ``Send & return text/plain POST Test``() =\n    api.PostApiConsumesText(\"hello\") |> asyncEqual \"hello\"\n\n// Test for https://github.com/fsprojects/SwaggerProvider/pull/290 to check for expected 'Accept' header values\n[<Fact>]\nlet ``Return text/plain Accept header Test``() =\n    api.GetApiCheckAcceptsPlain() |> asyncEqual \"Hello world\"\n\n[<Fact>]\nlet ``Return text/csv Accept header Test``() =\n    api.GetApiCheckAcceptsCsv() |> asyncEqual \"Hello,world\"\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swashbuckle.SpecialCasesControllers.Tests.fs",
    "content": "﻿module Swashbuckle.SpecialCasesControllersTests\n\nopen Xunit\nopen Swashbuckle.ReturnControllersTests\n\n[<Fact>]\nlet ``Request response in JSON format from MultiFormatController``() =\n    task { do! api.GetApiMultiFormat() |> asyncEqual \"0.0\" }\n\n// Regression test for https://github.com/fsprojects/SwaggerProvider/issues/141\n// Path parameter values containing $ (e.g. \"$0something\") must be passed literally.\n[<Fact>]\nlet ``Path parameter containing dollar sign is not treated as regex back-reference``() =\n    task { do! api.GetApiEchoPath(\"$0something\") |> asyncEqual \"$0something\" }\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/Swashbuckle.UpdateControllers.Tests.fs",
    "content": "module Swashbuckle.UpdateControllersTests\n\nopen Xunit\nopen FsUnitTyped\nopen System\nopen Swashbuckle.ReturnControllersTests\n\nlet guid = Guid.NewGuid()\nlet guid2 = Guid.NewGuid()\nlet guid3 = Guid.NewGuid()\n\n\n[<Fact>]\nlet ``Update Bool GET Test``() =\n    api.GetApiUpdateBool(Some true) |> asyncEqual false\n\n[<Fact>]\nlet ``Update Bool POST Test``() =\n    api.PostApiUpdateBool(Some false) |> asyncEqual true\n\n\n[<Fact>]\nlet ``Update Int32 GET Test``() =\n    api.GetApiUpdateInt32(Some 0) |> asyncEqual 1\n\n[<Fact>]\nlet ``Update Int32 POST Test``() =\n    api.PostApiUpdateInt32(Some 0) |> asyncEqual 1\n\n\n[<Fact>]\nlet ``Update Int64 GET Test``() =\n    api.GetApiUpdateInt64(Some 10L) |> asyncEqual 11L\n\n[<Fact>]\nlet ``Update Int64 POST Test``() =\n    api.PostApiUpdateInt64(Some 10L) |> asyncEqual 11L\n\n[<Fact>]\nlet ``Update Float GET Test``() =\n    api.GetApiUpdateFloat(Some 1.0f) |> asyncEqual 2.0f\n\n[<Fact>]\nlet ``Update Float POST Test``() =\n    api.PostApiUpdateFloat(Some 1.0f) |> asyncEqual 2.0f\n\n\n[<Fact>]\nlet ``Update Double GET Test``() =\n    api.GetApiUpdateDouble(Some 2.0) |> asyncEqual 3.0\n\n[<Fact>]\nlet ``Update Double POST Test``() =\n    api.PostApiUpdateDouble(Some 2.0) |> asyncEqual 3.0\n\n\n[<Fact>]\nlet ``Update String GET Test``() =\n    api.GetApiUpdateString(Some \"Serge\") |> asyncEqual \"Hello, Serge\"\n\n[<Fact>]\nlet ``Update String POST Test``() =\n    api.PostApiUpdateString(Some \"Serge\") |> asyncEqual \"Hello, Serge\"\n\n\n[<Fact>]\nlet ``Update DateTime GET Test``() =\n    api.GetApiUpdateDateTime(Some(DateTimeOffset <| DateTime(2015, 1, 1)))\n    |> asyncEqual(DateTimeOffset <| DateTime(2015, 1, 2))\n\n[<Fact>]\nlet ``Update DateTime POST Test``() =\n    api.PostApiUpdateDateTime(Some(DateTimeOffset <| DateTime(2015, 1, 1)))\n    |> asyncEqual(DateTimeOffset <| DateTime(2015, 1, 2))\n\n[<Fact>]\nlet ``Update Guid GET Test``() =\n    api.GetApiUpdateGuid(Some(guid)) |> asyncEqual guid\n\n[<Fact>]\nlet ``Update Guid POST Test``() =\n    api.PostApiUpdateGuid(Some(guid)) |> asyncEqual guid\n\n[<Fact>]\nlet ``Update Enum GET Test``() =\n    api.GetApiUpdateEnum(Some \"Absolute\") |> asyncEqual \"Absolute\"\n\n[<Fact>]\nlet ``Update Enum POST Test``() =\n    api.PostApiUpdateEnum(Some \"Absolute\") |> asyncEqual \"Absolute\"\n\n\n[<Fact>]\nlet ``Update Array Int GET Test``() =\n    api.GetApiUpdateArrayInt([| 3; 2; 1 |]) |> asyncEqual [| 1; 2; 3 |]\n\n[<Fact>]\nlet ``Update Array Int POST Test``() =\n    api.PostApiUpdateArrayInt([| 3; 2; 1 |]) |> asyncEqual [| 1; 2; 3 |]\n\n\n[<Fact>]\nlet ``Update Array Enum GET Test``() =\n    api.GetApiUpdateArrayEnum([| \"Relative\"; \"Absolute\" |])\n    |> asyncEqual [| \"Absolute\"; \"Relative\" |]\n\n[<Fact>]\nlet ``Update Array Enum POST Test``() =\n    api.PostApiUpdateArrayEnum([| \"Relative\"; \"Absolute\" |])\n    |> asyncEqual [| \"Absolute\"; \"Relative\" |]\n\n[<Fact>]\nlet ``Update Array Guid GET Test``() =\n    api.GetApiUpdateArrayGuid([| guid; guid2; guid3 |])\n    |> asyncEqual [| guid3; guid2; guid |]\n\n[<Fact>]\nlet ``Update Array Guid POST Test``() =\n    api.PostApiUpdateArrayGuid([| guid; guid2; guid3 |])\n    |> asyncEqual [| guid3; guid2; guid |]\n\n//TODO: System.InvalidOperationException: Could not create an instance of type 'Microsoft.FSharp.Collections.FSharpList`1[[System.Int32, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'. Model bound complex types must not be abstract or value types and must have a parameterless constructor. Alternatively, give the 'x' parameter a non-null default value.\n// testCaseAsync \"Update List Int GET Test\" <|\n//     (api.GetApiUpdateListInt([|3;2;1|])\n//      |> asyncEqual [|1;2;3|])\n\n[<Fact>]\nlet ``Update List Int POST Test``() =\n    api.PostApiUpdateListInt([| 3; 2; 1 |]) |> asyncEqual [| 1; 2; 3 |]\n\n\n[<Fact>]\nlet ``Update Seq Int GET Test``() =\n    api.GetApiUpdateSeqInt([| 3; 2; 1 |]) |> asyncEqual [| 1; 2; 3 |]\n\n[<Fact>]\nlet ``Update Seq Int POST Test``() =\n    api.PostApiUpdateSeqInt([| 3; 2; 1 |]) |> asyncEqual [| 1; 2; 3 |]\n\n\n// TODO: Server return point (0,0)\n// testCaseAsync \"Update Object Point GET Test\" <| async {\n//     let! point = api.GetApiUpdateObjectPointClass(x = Some 1, y = Some 2)\n//     point.X |> shouldEqual (Some 2)\n//     point.Y |> shouldEqual (Some 1)\n// }\n\n[<Fact>]\nlet ``Update Object Point POST Test``() =\n    task {\n        let p = WebAPI.PointClass()\n        p.X <- Some 1\n        p.Y <- Some 2\n        let! point = api.PostApiUpdateObjectPointClass(p)\n        point.X |> shouldEqual(Some 2)\n        point.Y |> shouldEqual(Some 1)\n    }\n\n[<Fact>]\nlet ``Send and Receive object with byte[]``() =\n    task {\n        let x = WebAPI.FileDescription(Name = Some \"2.txt\", Bytes = Some [| 42uy |])\n        let! y = api.PostApiUpdateObjectFileDescriptionClass(x)\n        x.Name |> shouldEqual y.Name\n        x.Bytes |> shouldEqual y.Bytes\n    }\n\n// System.Net.Http.HttpRequestException: Response status code does not indicate success: 400 (Bad Request).\n[<Fact>]\nlet ``Send byte[] in query``() =\n    task {\n        let bytes = api.Deserialize(\"\\\"NDI0Mg==\\\"\", typeof<byte[]>) :?> byte[] // base64 encoded \"4242\"\n        let! y = api.GetApiUpdateObjectFileDescriptionClass(Some bytes)\n        y.Bytes |> shouldEqual(Some bytes)\n    }\n\n[<Fact>]\nlet ``Use Optional param Int``() =\n    task {\n        do! api.GetApiUpdateWithOptionalInt(Some 1) |> asyncEqual 2\n        do! api.GetApiUpdateWithOptionalInt(Some 1, Some 2) |> asyncEqual 3\n    }\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/paket.references",
    "content": "group Test\n    FSharp.Compiler.Service\n    FSharp.Core\n    Microsoft.NET.Test.Sdk\n    FsUnit.Xunit\n"
  },
  {
    "path": "tests/SwaggerProvider.ProviderTests/thing.fsx",
    "content": "let createQuote(id: string) =\n    printfn \"Creating Quote %A\" id\n\nlet closeQuote(id: string) =\n    printfn \"Closing Quote %A\" id\n\n\nlet tryF before after f input =\n    before input\n\n    try\n        f input\n    finally\n        after input\n\nlet forQuoteVerify = tryF createQuote closeQuote\n\nlet myAction id =\n    printfn \"My action for Quote %A\" id\n    id\n\nforQuoteVerify myAction \"QUOTE_ID\"\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/APIs.guru.fs",
    "content": "module APIsGuru\n\nopen System.Text.Json\nopen System.Net.Http\n\nlet httpClient = new HttpClient()\n\nlet private apisGuruList =\n    lazy\n        (printfn \"Loading APIs.Guru list ...\"\n\n         let list =\n             httpClient.GetStringAsync(\"https://api.apis.guru/v2/list.json\")\n             |> Async.AwaitTask\n             |> Async.RunSynchronously\n\n         JsonDocument.Parse(list).RootElement.EnumerateObject()\n         |> Seq.map(_.Value))\n\nlet private getApisGuruSchemas propertyName =\n    let getProp (prop: string) (obj: JsonElement) =\n        match obj.ValueKind with\n        | JsonValueKind.Object ->\n            match obj.TryGetProperty(prop) with\n            | true, jToken -> Some jToken\n            | _ -> None\n        | _ -> None\n\n    apisGuruList.Value\n    |> Seq.choose(fun schema ->\n        schema\n        |> getProp \"versions\"\n        |> Option.bind(fun v -> v.EnumerateObject() |> Seq.map(_.Value) |> Seq.last |> Some))\n    |> Seq.choose(getProp propertyName)\n    |> Seq.map(_.GetString())\n    |> Seq.toArray\n\nlet Schemas = lazy (getApisGuruSchemas \"swaggerYamlUrl\") // \"swaggerUrl\"\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/PathResolutionTests.fs",
    "content": "namespace SwaggerProvider.Tests.PathResolutionTests\n\nopen System\nopen System.IO\nopen System.Runtime.InteropServices\nopen Xunit\nopen SwaggerProvider.Internal.SchemaReader\n\n/// Tests for path resolution logic\n/// These tests verify that relative file paths are handled correctly across platforms\nmodule PathResolutionTests =\n\n    let isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)\n\n    [<Fact>]\n    let ``getAbsolutePath handles paths with parent directory references after concatenation``() =\n        // Test: When __SOURCE_DIRECTORY__ + \"/../Schemas/...\" is used, the result should be\n        // treated as a valid path, not incorrectly parsed\n        let resolutionFolder =\n            if isWindows then\n                \"C:\\\\Users\\\\test\\\\project\\\\tests\"\n            else\n                \"/home/user/project/tests\"\n        // Simulate what happens when you do: __SOURCE_DIRECTORY__ + \"/../Schemas/...\"\n        let concatenated =\n            resolutionFolder\n            + (if isWindows then\n                   \"\\\\..\\\\Schemas\\\\petstore-v2.json\"\n               else\n                   \"/../Schemas/petstore-v2.json\")\n\n        let result = getAbsolutePath resolutionFolder concatenated\n\n        // Should keep the path as-is (it's already a full path after concatenation)\n        // Path.GetFullPath will normalize it later\n        Assert.Contains(\"Schemas\", result)\n        Assert.Contains(\"petstore-v2.json\", result)\n\n    [<Fact>]\n    let ``getAbsolutePath handles simple relative paths``() =\n        // Test: Simple relative paths should be combined with resolution folder\n        let resolutionFolder =\n            if isWindows then\n                \"C:\\\\Users\\\\test\\\\project\"\n            else\n                \"/home/user/project\"\n\n        let schemaPath = \"../Schemas/petstore-v2.json\"\n\n        let result = getAbsolutePath resolutionFolder schemaPath\n\n        // Should combine with resolution folder\n        Assert.Contains(\"project\", result)\n        Assert.Contains(\"Schemas\", result)\n\n    [<Fact>]\n    let ``getAbsolutePath handles current directory relative paths``() =\n        // Test: Paths starting with ./ should be treated as relative\n        let resolutionFolder =\n            if isWindows then\n                \"C:\\\\Users\\\\test\\\\project\"\n            else\n                \"/home/user/project\"\n\n        let schemaPath = \"./Schemas/petstore-v2.json\"\n\n        let result = getAbsolutePath resolutionFolder schemaPath\n\n        // Should combine with resolution folder\n        Assert.Contains(\"project\", result)\n        Assert.Contains(\"Schemas\", result)\n\n    [<Fact>]\n    let ``getAbsolutePath handles absolute Unix paths``() =\n        if not isWindows then\n            // Test: Absolute Unix paths should be kept as-is\n            let resolutionFolder = \"/home/user/project\"\n            let schemaPath = \"/etc/schemas/petstore.json\"\n\n            let result = getAbsolutePath resolutionFolder schemaPath\n\n            // Should keep the absolute path\n            Assert.Equal(\"/etc/schemas/petstore.json\", result)\n\n    [<Fact>]\n    let ``getAbsolutePath handles absolute Windows paths with drive letter``() =\n        if isWindows then\n            // Test: Absolute Windows paths with drive should be kept as-is\n            let resolutionFolder = \"C:\\\\Users\\\\test\\\\project\"\n            let schemaPath = \"D:\\\\Schemas\\\\petstore.json\"\n\n            let result = getAbsolutePath resolutionFolder schemaPath\n\n            // Should keep the absolute path\n            Assert.Equal(\"D:\\\\Schemas\\\\petstore.json\", result)\n\n    [<Fact>]\n    let ``getAbsolutePath handles HTTP URLs``() =\n        // Test: HTTP URLs should be kept as-is\n        let resolutionFolder =\n            if isWindows then\n                \"C:\\\\Users\\\\test\\\\project\"\n            else\n                \"/home/user/project\"\n\n        let schemaPath = \"https://example.com/schema.json\"\n\n        let result = getAbsolutePath resolutionFolder schemaPath\n\n        // Should keep the URL unchanged\n        Assert.Equal(\"https://example.com/schema.json\", result)\n\n    [<Fact>]\n    let ``getAbsolutePath concatenated with SOURCE_DIRECTORY works correctly``() =\n        // Test: Simulates the common pattern: __SOURCE_DIRECTORY__ + \"/../Schemas/...\"\n        // This should work correctly on both Windows and Unix\n        let sourceDir = __SOURCE_DIRECTORY__\n        let relativePart = \"/../SwaggerProvider.ProviderTests/Schemas/petstore-v2.json\"\n        let combined = sourceDir + relativePart\n\n        // This simulates what happens in test files\n        let result = getAbsolutePath sourceDir combined\n\n        // Should resolve to a path that contains Schemas\n        // The exact result depends on whether the file exists, but it should at least\n        // not throw an exception and should contain \"Schemas\"\n        Assert.Contains(\"Schemas\", result)\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/RuntimeHelpersTests.fs",
    "content": "namespace SwaggerProvider.Tests.RuntimeHelpersTests\n\nopen System\nopen System.IO\nopen System.Net\nopen System.Net.Http\nopen System.Text.Json\nopen System.Text.Json.Serialization\nopen System.Threading\nopen System.Threading.Tasks\nopen Xunit\nopen FsUnitTyped\nopen Swagger.Internal.RuntimeHelpers\n\n/// Unit tests for RuntimeHelpers — the runtime parameter serialization and HTTP utilities.\n/// These functions are used by every generated API client but previously had no dedicated tests.\nmodule ToParamTests =\n\n    [<Fact>]\n    let ``toParam formats DateTime as ISO 8601 round-trip``() =\n        let dt = DateTime(2024, 6, 15, 10, 30, 0, DateTimeKind.Utc)\n        let result = toParam(box dt)\n        result |> shouldEqual(dt.ToString(\"O\"))\n\n    [<Fact>]\n    let ``toParam formats DateTimeOffset as ISO 8601 round-trip``() =\n        let dto = DateTimeOffset(2024, 6, 15, 10, 30, 0, TimeSpan.FromHours(2.0))\n        let result = toParam(box dto)\n        result |> shouldEqual(dto.ToString(\"O\"))\n\n    [<Fact>]\n    let ``toParam returns null for null input``() =\n        let result = toParam null\n        result |> shouldEqual null\n\n    [<Fact>]\n    let ``toParam uses ToString for integers``() =\n        let result = toParam(box 42)\n        result |> shouldEqual \"42\"\n\n    [<Fact>]\n    let ``toParam uses ToString for strings``() =\n        let result = toParam(box \"hello world\")\n        result |> shouldEqual \"hello world\"\n\n    [<Fact>]\n    let ``toParam uses ToString for Guid``() =\n        let g = Guid(\"d3b07384-d9a2-4e3f-9a4b-1234567890ab\")\n        let result = toParam(box g)\n        result |> shouldEqual(g.ToString())\n\n    [<Fact>]\n    let ``toParam unwraps Some(Guid) — fixes issue #140``() =\n        let g = Guid(\"d3b07384-d9a2-4e3f-9a4b-1234567890ab\")\n        let result = toParam(box(Some g))\n        result |> shouldEqual(g.ToString())\n\n    [<Fact>]\n    let ``toParam returns null for None(Guid) — fixes issue #140``() =\n        let result = toParam(box(None: Guid option))\n        result |> shouldEqual null\n\n    [<Fact>]\n    let ``toParam unwraps Some(string)``() =\n        let result = toParam(box(Some \"token-value\"))\n        result |> shouldEqual \"token-value\"\n\n    [<Fact>]\n    let ``toParam returns null for None(string)``() =\n        let result = toParam(box(None: string option))\n        result |> shouldEqual null\n\n    [<Fact>]\n    let ``toParam unwraps Some(DateTimeOffset) and formats as ISO 8601``() =\n        let dto = DateTimeOffset(2024, 1, 15, 12, 0, 0, TimeSpan.Zero)\n        let result = toParam(box(Some dto))\n        result |> shouldEqual(dto.ToString(\"O\"))\n\n    [<Fact>]\n    let ``toParam formats DateOnly as ISO 8601``() =\n        let d = DateOnly(2025, 7, 4)\n        let result = toParam(box d)\n        result |> shouldEqual \"2025-07-04\"\n\n    [<Fact>]\n    let ``toParam unwraps Some(DateOnly) and formats as ISO 8601``() =\n        let d = DateOnly(2025, 1, 31)\n        let result = toParam(box(Some d))\n        result |> shouldEqual \"2025-01-31\"\n\n    [<Fact>]\n    let ``toParam returns null for None(DateOnly)``() =\n        let result = toParam(box(None: DateOnly option))\n        result |> shouldEqual null\n\n    [<Fact>]\n    let ``toParam formats TimeOnly as HH:mm:ss.FFFFFFF``() =\n        let t = TimeOnly(14, 30, 0)\n        let result = toParam(box t)\n        result |> shouldEqual \"14:30:00\"\n\n    [<Fact>]\n    let ``toParam formats TimeOnly with sub-second precision``() =\n        let t = TimeOnly(9, 5, 3, 123)\n        let result = toParam(box t)\n        // \"HH:mm:ss.FFFFFFF\" — trailing zeros stripped by F specifier\n        result |> shouldEqual \"09:05:03.123\"\n\n    [<Fact>]\n    let ``toParam unwraps Some(TimeOnly) and formats correctly``() =\n        let t = TimeOnly(8, 0, 0)\n        let result = toParam(box(Some t))\n        result |> shouldEqual \"08:00:00\"\n\n    [<Fact>]\n    let ``toParam returns null for None(TimeOnly)``() =\n        let result = toParam(box(None: TimeOnly option))\n        result |> shouldEqual null\n\n\nmodule ToQueryParamsTests =\n\n    let private stubClient =\n        { new Swagger.ProvidedApiClientBase(null, JsonSerializerOptions()) with\n            override _.Serialize(v) =\n                JsonSerializer.Serialize v\n\n            override _.Deserialize(s, t) =\n                JsonSerializer.Deserialize(s, t) }\n\n    [<Fact>]\n    let ``toQueryParams handles string array``() =\n        let result = toQueryParams \"tag\" (box [| \"alpha\"; \"beta\"; \"gamma\" |]) stubClient\n\n        result\n        |> shouldEqual [ (\"tag\", \"alpha\"); (\"tag\", \"beta\"); (\"tag\", \"gamma\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles int32 array``() =\n        let result = toQueryParams \"id\" (box [| 1; 2; 3 |]) stubClient\n        result |> shouldEqual [ (\"id\", \"1\"); (\"id\", \"2\"); (\"id\", \"3\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles int64 array``() =\n        let result = toQueryParams \"id\" (box [| 1L; 2L; 3L |]) stubClient\n        result |> shouldEqual [ (\"id\", \"1\"); (\"id\", \"2\"); (\"id\", \"3\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles bool array``() =\n        let result = toQueryParams \"flag\" (box [| true; false |]) stubClient\n        result |> shouldEqual [ (\"flag\", \"True\"); (\"flag\", \"False\") ]\n\n    [<Fact>]\n    let ``toQueryParams formats DateTime array as ISO 8601``() =\n        let dt = DateTime(2024, 1, 15, 12, 0, 0, DateTimeKind.Utc)\n        let result = toQueryParams \"d\" (box [| dt |]) stubClient\n        result |> shouldHaveLength 1\n        fst result[0] |> shouldEqual \"d\"\n        snd result[0] |> shouldEqual(dt.ToString(\"O\"))\n\n    [<Fact>]\n    let ``toQueryParams formats DateTimeOffset array as ISO 8601``() =\n        let dto = DateTimeOffset(2024, 1, 15, 12, 0, 0, TimeSpan.Zero)\n        let result = toQueryParams \"d\" (box [| dto |]) stubClient\n        result |> shouldHaveLength 1\n        snd result[0] |> shouldEqual(dto.ToString(\"O\"))\n\n    [<Fact>]\n    let ``toQueryParams handles Option<string> Some``() =\n        let result = toQueryParams \"q\" (box(Some \"hello\")) stubClient\n        result |> shouldEqual [ (\"q\", \"hello\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<string> None``() =\n        let result = toQueryParams \"q\" (box(Option<string>.None)) stubClient\n        result |> shouldEqual []\n\n    [<Fact>]\n    let ``toQueryParams handles Option<int32> Some``() =\n        let result = toQueryParams \"n\" (box(Some 99)) stubClient\n        result |> shouldEqual [ (\"n\", \"99\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<int32> None``() =\n        let result = toQueryParams \"n\" (box(Option<int>.None)) stubClient\n        result |> shouldEqual []\n\n    [<Fact>]\n    let ``toQueryParams handles Option<DateTime> Some as ISO 8601``() =\n        let dt = DateTime(2024, 3, 1, 0, 0, 0, DateTimeKind.Utc)\n        let result = toQueryParams \"d\" (box(Some dt)) stubClient\n        result |> shouldHaveLength 1\n        snd result[0] |> shouldEqual(dt.ToString(\"O\"))\n\n    [<Fact>]\n    let ``toQueryParams handles Option<DateTime> None``() =\n        let result = toQueryParams \"d\" (box(Option<DateTime>.None)) stubClient\n        result |> shouldEqual []\n\n    [<Fact>]\n    let ``toQueryParams handles Option<Guid> Some``() =\n        let g = Guid.NewGuid()\n        let result = toQueryParams \"id\" (box(Some g)) stubClient\n        result |> shouldEqual [ (\"id\", g.ToString()) ]\n\n    [<Fact>]\n    let ``toQueryParams handles plain DateTime as ISO 8601``() =\n        let dt = DateTime(2024, 6, 1, 8, 0, 0, DateTimeKind.Utc)\n        let result = toQueryParams \"dt\" (box dt) stubClient\n        result |> shouldHaveLength 1\n        snd result[0] |> shouldEqual(dt.ToString(\"O\"))\n\n    [<Fact>]\n    let ``toQueryParams handles plain DateTimeOffset as ISO 8601``() =\n        let dto = DateTimeOffset(2024, 6, 1, 8, 0, 0, TimeSpan.FromHours(-5.0))\n        let result = toQueryParams \"dto\" (box dto) stubClient\n        result |> shouldHaveLength 1\n        snd result[0] |> shouldEqual(dto.ToString(\"O\"))\n\n    [<Fact>]\n    let ``toQueryParams handles plain string``() =\n        let result = toQueryParams \"q\" (box \"search term\") stubClient\n        result |> shouldEqual [ (\"q\", \"search term\") ]\n\n    [<Fact>]\n    let ``toQueryParams returns empty list for null input (treated as Option None)``() =\n        // In F#, None for any option type is compiled as null at the .NET level,\n        // so a null obj is treated as Option None and returns an empty list.\n        let result = toQueryParams \"q\" null stubClient\n        result |> shouldEqual []\n\n    [<Fact>]\n    let ``toQueryParams skips None items in Option array``() =\n        let values: Option<int>[] = [| Some 1; None; Some 3 |]\n        let result = toQueryParams \"n\" (box values) stubClient\n        result |> shouldEqual [ (\"n\", \"1\"); (\"n\", \"3\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Guid array``() =\n        let g1 = Guid(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\")\n        let g2 = Guid(\"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb\")\n        let result = toQueryParams \"id\" (box [| g1; g2 |]) stubClient\n        result |> shouldEqual [ (\"id\", g1.ToString()); (\"id\", g2.ToString()) ]\n\n    [<Fact>]\n    let ``toQueryParams skips None items in Option<Guid> array``() =\n        let g = Guid(\"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\")\n        let values: Option<Guid>[] = [| Some g; None |]\n        let result = toQueryParams \"id\" (box values) stubClient\n        result |> shouldEqual [ (\"id\", g.ToString()) ]\n\n    [<Fact>]\n    let ``toQueryParams handles float32 array``() =\n        let result = toQueryParams \"v\" (box [| 1.5f; 2.5f |]) stubClient\n        result |> shouldEqual [ (\"v\", \"1.5\"); (\"v\", \"2.5\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles double array``() =\n        let result = toQueryParams \"v\" (box [| 1.5; 2.5 |]) stubClient\n        result |> shouldEqual [ (\"v\", \"1.5\"); (\"v\", \"2.5\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles byte array as base64``() =\n        // byte[] is serialized via client.Serialize (JSON base64) with surrounding quotes trimmed\n        let bytes = [| 72uy; 101uy; 108uy; 108uy; 111uy |] // \"Hello\" in ASCII\n        let expected = (JsonSerializer.Serialize bytes).Trim('\"')\n        let result = toQueryParams \"data\" (box bytes) stubClient\n        result |> shouldEqual [ (\"data\", expected) ]\n\n    [<Fact>]\n    let ``toQueryParams skips None items in Option<string> array``() =\n        let values: Option<string>[] = [| Some \"a\"; None; Some \"c\" |]\n        let result = toQueryParams \"q\" (box values) stubClient\n        result |> shouldEqual [ (\"q\", \"a\"); (\"q\", \"c\") ]\n\n    [<Fact>]\n    let ``toQueryParams skips None items in Option<float32> array``() =\n        let values: Option<float32>[] = [| Some 1.5f; None; Some 3.5f |]\n        let result = toQueryParams \"v\" (box values) stubClient\n        result |> shouldEqual [ (\"v\", \"1.5\"); (\"v\", \"3.5\") ]\n\n    [<Fact>]\n    let ``toQueryParams skips None items in Option<double> array``() =\n        let values: Option<double>[] = [| Some 1.5; None; Some 3.5 |]\n        let result = toQueryParams \"v\" (box values) stubClient\n        result |> shouldEqual [ (\"v\", \"1.5\"); (\"v\", \"3.5\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<bool> Some``() =\n        let result = toQueryParams \"flag\" (box(Some true)) stubClient\n        result |> shouldEqual [ (\"flag\", \"True\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<bool> None``() =\n        let result = toQueryParams \"flag\" (box(None: bool option)) stubClient\n        result |> shouldEqual []\n\n    [<Fact>]\n    let ``toQueryParams handles Option<int64> Some``() =\n        let result = toQueryParams \"id\" (box(Some 9876543210L)) stubClient\n        result |> shouldEqual [ (\"id\", \"9876543210\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<int64> None``() =\n        let result = toQueryParams \"id\" (box(None: int64 option)) stubClient\n        result |> shouldEqual []\n\n    [<Fact>]\n    let ``toQueryParams handles Option<float32> Some``() =\n        let result = toQueryParams \"rate\" (box(Some 3.14f)) stubClient\n        result |> shouldEqual [ (\"rate\", \"3.14\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<float32> None``() =\n        let result = toQueryParams \"rate\" (box(None: float32 option)) stubClient\n        result |> shouldEqual []\n\n    [<Fact>]\n    let ``toQueryParams handles Option<double> Some``() =\n        let result = toQueryParams \"rate\" (box(Some 2.718)) stubClient\n        result |> shouldEqual [ (\"rate\", \"2.718\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<double> None``() =\n        let result = toQueryParams \"rate\" (box(None: double option)) stubClient\n        result |> shouldEqual []\n\n    [<Fact>]\n    let ``toQueryParams handles Option<DateTimeOffset> Some``() =\n        let dto = DateTimeOffset(2025, 3, 15, 9, 0, 0, TimeSpan.Zero)\n        let result = toQueryParams \"since\" (box(Some dto)) stubClient\n        result |> shouldEqual [ (\"since\", dto.ToString(\"O\")) ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<DateTimeOffset> None``() =\n        let result = toQueryParams \"since\" (box(None: DateTimeOffset option)) stubClient\n        result |> shouldEqual []\n\n    [<Fact>]\n    let ``toQueryParams skips None items in Option<DateTimeOffset> array``() =\n        let dto = DateTimeOffset(2025, 6, 1, 0, 0, 0, TimeSpan.Zero)\n        let values: Option<DateTimeOffset>[] = [| Some dto; None |]\n        let result = toQueryParams \"ts\" (box values) stubClient\n        result |> shouldEqual [ (\"ts\", dto.ToString(\"O\")) ]\n\n    [<Fact>]\n    let ``toQueryParams handles DateOnly as ISO 8601``() =\n        let d = DateOnly(2025, 7, 4)\n        let result = toQueryParams \"date\" (box d) stubClient\n        result |> shouldEqual [ (\"date\", \"2025-07-04\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles DateOnly array``() =\n        let values: DateOnly[] = [| DateOnly(2025, 1, 1); DateOnly(2025, 12, 31) |]\n        let result = toQueryParams \"dates\" (box values) stubClient\n\n        result\n        |> shouldEqual [ (\"dates\", \"2025-01-01\"); (\"dates\", \"2025-12-31\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<DateOnly> Some``() =\n        let d = DateOnly(2025, 6, 15)\n        let result = toQueryParams \"date\" (box(Some d)) stubClient\n        result |> shouldEqual [ (\"date\", \"2025-06-15\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<DateOnly> None``() =\n        let result = toQueryParams \"date\" (box(None: DateOnly option)) stubClient\n        result |> shouldEqual []\n\n    [<Fact>]\n    let ``toQueryParams skips None items in Option<DateOnly> array``() =\n        let d = DateOnly(2025, 3, 1)\n        let values: Option<DateOnly>[] = [| Some d; None |]\n        let result = toQueryParams \"dates\" (box values) stubClient\n        result |> shouldEqual [ (\"dates\", \"2025-03-01\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles TimeOnly``() =\n        let t = TimeOnly(14, 30, 0)\n        let result = toQueryParams \"time\" (box t) stubClient\n        result |> shouldEqual [ (\"time\", \"14:30:00\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles TimeOnly array``() =\n        let values: TimeOnly[] = [| TimeOnly(9, 0, 0); TimeOnly(17, 30, 0) |]\n        let result = toQueryParams \"times\" (box values) stubClient\n        result |> shouldEqual [ (\"times\", \"09:00:00\"); (\"times\", \"17:30:00\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<TimeOnly> Some``() =\n        let t = TimeOnly(12, 0, 0)\n        let result = toQueryParams \"time\" (box(Some t)) stubClient\n        result |> shouldEqual [ (\"time\", \"12:00:00\") ]\n\n    [<Fact>]\n    let ``toQueryParams handles Option<TimeOnly> None``() =\n        let result = toQueryParams \"time\" (box(None: TimeOnly option)) stubClient\n        result |> shouldEqual []\n\n    [<Fact>]\n    let ``toQueryParams skips None items in Option<TimeOnly> array``() =\n        let t = TimeOnly(8, 0, 0)\n        let values: Option<TimeOnly>[] = [| Some t; None |]\n        let result = toQueryParams \"times\" (box values) stubClient\n        result |> shouldEqual [ (\"times\", \"08:00:00\") ]\n\n\nmodule CombineUrlTests =\n\n    [<Fact>]\n    let ``combineUrl joins paths without extra slashes``() =\n        combineUrl \"http://example.com/api\" \"v1/users\"\n        |> shouldEqual \"http://example.com/api/v1/users\"\n\n    [<Fact>]\n    let ``combineUrl trims trailing slash from left``() =\n        combineUrl \"http://example.com/api/\" \"v1/users\"\n        |> shouldEqual \"http://example.com/api/v1/users\"\n\n    [<Fact>]\n    let ``combineUrl trims leading slash from right``() =\n        combineUrl \"http://example.com/api\" \"/v1/users\"\n        |> shouldEqual \"http://example.com/api/v1/users\"\n\n    [<Fact>]\n    let ``combineUrl trims both slashes``() =\n        combineUrl \"http://example.com/api/\" \"/v1/users\"\n        |> shouldEqual \"http://example.com/api/v1/users\"\n\n    [<Fact>]\n    let ``combineUrl works with empty path segment``() =\n        combineUrl \"http://example.com\" \"\"\n        |> shouldEqual \"http://example.com/\"\n\n\nmodule CreateHttpRequestTests =\n\n    [<Fact>]\n    let ``createHttpRequest creates GET request``() =\n        use req = createHttpRequest \"GET\" \"v1/users\" []\n        req.Method |> shouldEqual HttpMethod.Get\n\n    [<Fact>]\n    let ``createHttpRequest creates POST request``() =\n        use req = createHttpRequest \"POST\" \"v1/users\" []\n        req.Method |> shouldEqual HttpMethod.Post\n\n    [<Fact>]\n    let ``createHttpRequest creates DELETE request``() =\n        use req = createHttpRequest \"DELETE\" \"v1/users/42\" []\n        req.Method |> shouldEqual HttpMethod.Delete\n\n    [<Fact>]\n    let ``createHttpRequest is case-insensitive for method``() =\n        use req = createHttpRequest \"get\" \"v1/users\" []\n        req.Method |> shouldEqual HttpMethod.Get\n\n    [<Fact>]\n    let ``createHttpRequest appends query parameters``() =\n        use req = createHttpRequest \"GET\" \"v1/users\" [ (\"page\", \"2\"); (\"size\", \"10\") ]\n        let uri = req.RequestUri.ToString()\n        uri |> shouldContainText \"page=2\"\n        uri |> shouldContainText \"size=10\"\n\n    [<Fact>]\n    let ``createHttpRequest skips null query parameter values``() =\n        use req = createHttpRequest \"GET\" \"v1/users\" [ (\"q\", null) ]\n        let uri = req.RequestUri.ToString()\n        uri |> shouldNotContainText \"q=\"\n\n    [<Fact>]\n    let ``createHttpRequest includes path in request URI``() =\n        use req = createHttpRequest \"GET\" \"v1/pets/42\" []\n        req.RequestUri.ToString() |> shouldContainText \"v1/pets/42\"\n\n\nmodule FillHeadersTests =\n\n    [<Fact>]\n    let ``fillHeaders adds standard headers``() =\n        use req = new HttpRequestMessage(HttpMethod.Get, \"http://example.com/\")\n        fillHeaders req [ (\"Accept\", \"application/json\"); (\"X-Api-Key\", \"secret\") ]\n        req.Headers.Contains(\"Accept\") |> shouldEqual true\n        req.Headers.Contains(\"X-Api-Key\") |> shouldEqual true\n\n    [<Fact>]\n    let ``fillHeaders skips null-value headers``() =\n        use req = new HttpRequestMessage(HttpMethod.Get, \"http://example.com/\")\n        fillHeaders req [ (\"X-Missing\", null) ]\n        req.Headers.Contains(\"X-Missing\") |> shouldEqual false\n\n    [<Fact>]\n    let ``fillHeaders silently ignores Content-Type header``() =\n        // Content-Type must be set on HttpContent, not on the request; this should not throw\n        use req = new HttpRequestMessage(HttpMethod.Get, \"http://example.com/\")\n        // Should not raise an exception even though Content-Type cannot be added to request headers\n        fillHeaders req [ (\"Content-Type\", \"application/json\") ]\n\n\nmodule ToContentTests =\n\n    [<Fact>]\n    let ``toStringContent returns JSON content type``() =\n        use c = toStringContent \"{\\\"key\\\":\\\"value\\\"}\"\n        c.Headers.ContentType.MediaType |> shouldEqual \"application/json\"\n\n    [<Fact>]\n    let ``toStringContent preserves the body``() =\n        let body = \"{\\\"name\\\":\\\"Alice\\\"}\"\n        use c = toStringContent body\n        let text = c.ReadAsStringAsync() |> Async.AwaitTask |> Async.RunSynchronously\n        text |> shouldEqual body\n\n    [<Fact>]\n    let ``toTextContent returns text/plain content type``() =\n        use c = toTextContent \"hello\"\n        c.Headers.ContentType.MediaType |> shouldEqual \"text/plain\"\n\n    [<Fact>]\n    let ``toStreamContent sets provided content type``() =\n        use stream = new MemoryStream([| 1uy; 2uy; 3uy |])\n        use c = toStreamContent(box stream, \"application/octet-stream\")\n\n        c.Headers.ContentType.MediaType\n        |> shouldEqual \"application/octet-stream\"\n\n    [<Fact>]\n    let ``toStreamContent omits content type when empty``() =\n        use stream = new MemoryStream([| 1uy; 2uy |])\n        use c = toStreamContent(box stream, \"\")\n        c.Headers.ContentType |> shouldEqual null\n\n    [<Fact>]\n    let ``toStreamContent throws for non-stream input``() =\n        Assert.Throws<Exception>(fun () -> toStreamContent(box \"not a stream\", \"application/json\") |> ignore)\n        |> ignore\n\n\n/// A stub HttpMessageHandler that always returns a fixed status code and body.\ntype private StubHttpMessageHandler(statusCode: HttpStatusCode, responseBody: string) =\n    inherit HttpMessageHandler()\n\n    override _.SendAsync(_request: HttpRequestMessage, cancellationToken: CancellationToken) =\n        cancellationToken.ThrowIfCancellationRequested()\n        let response = new HttpResponseMessage(statusCode)\n        response.Content <- new StringContent(responseBody)\n        Task.FromResult(response)\n\n\nmodule OpenApiExceptionTests =\n\n    let private makeClient(handler: HttpMessageHandler) =\n        let httpClient = new HttpClient(handler)\n        httpClient.BaseAddress <- Uri(\"http://stub/\")\n\n        { new Swagger.ProvidedApiClientBase(httpClient, JsonSerializerOptions()) with\n            override _.Serialize(v) =\n                JsonSerializer.Serialize v\n\n            override _.Deserialize(s, t) =\n                JsonSerializer.Deserialize(s, t) }\n\n    [<Fact>]\n    let ``OpenApiException message includes description when no body``() =\n        use content = new StringContent(\"\")\n        use response = new HttpResponseMessage(HttpStatusCode.NotFound)\n        let ex = Swagger.OpenApiException(404, \"Not Found\", response.Headers, content)\n        ex.Message |> shouldEqual \"Not Found\"\n\n    [<Fact>]\n    let ``OpenApiException message includes body when body is provided``() =\n        use content = new StringContent(\"{\\\"error\\\":\\\"missing\\\"}\")\n        use response = new HttpResponseMessage(HttpStatusCode.NotFound)\n\n        let ex =\n            Swagger.OpenApiException(404, \"Not Found\", response.Headers, content, \"{\\\"error\\\":\\\"missing\\\"}\")\n\n        ex.Message |> shouldContainText \"Not Found\"\n        ex.Message |> shouldContainText \"{\\\"error\\\":\\\"missing\\\"}\"\n\n    [<Fact>]\n    let ``OpenApiException ResponseBody is empty string when not provided``() =\n        use content = new StringContent(\"\")\n        use response = new HttpResponseMessage(HttpStatusCode.BadRequest)\n        let ex = Swagger.OpenApiException(400, \"Bad Request\", response.Headers, content)\n        ex.ResponseBody |> shouldEqual \"\"\n\n    [<Fact>]\n    let ``OpenApiException ResponseBody returns the provided body``() =\n        use content = new StringContent(\"error detail\")\n        use response = new HttpResponseMessage(HttpStatusCode.UnprocessableEntity)\n\n        let ex =\n            Swagger.OpenApiException(422, \"Unprocessable Entity\", response.Headers, content, \"error detail\")\n\n        ex.ResponseBody |> shouldEqual \"error detail\"\n\n    [<Fact>]\n    let ``OpenApiException message is only description when body is empty string``() =\n        use content = new StringContent(\"\")\n        use response = new HttpResponseMessage(HttpStatusCode.Forbidden)\n        let ex = Swagger.OpenApiException(403, \"Forbidden\", response.Headers, content, \"\")\n        ex.Message |> shouldEqual \"Forbidden\"\n\n    [<Fact>]\n    let ``CallAsync raises OpenApiException with response body for documented error code``() =\n        task {\n            let expectedBody = \"{\\\"message\\\":\\\"pet not found\\\"}\"\n\n            use handler = new StubHttpMessageHandler(HttpStatusCode.NotFound, expectedBody)\n            let client = makeClient handler\n\n            use request = new HttpRequestMessage(HttpMethod.Get, \"http://stub/pets/1\")\n\n            let! ex =\n                Assert.ThrowsAsync<Swagger.OpenApiException>(fun () ->\n                    task {\n                        let! _ = client.CallAsync(request, [| \"404\" |], [| \"Pet not found\" |], CancellationToken.None)\n                        ()\n                    })\n\n            ex.StatusCode |> shouldEqual 404\n            ex.ResponseBody |> shouldEqual expectedBody\n            ex.Message |> shouldContainText \"Pet not found\"\n            ex.Message |> shouldContainText expectedBody\n        }\n\n    [<Fact>]\n    let ``CallAsync raises OpenApiException without body text when body is empty``() =\n        task {\n            use handler = new StubHttpMessageHandler(HttpStatusCode.NotFound, \"\")\n            let client = makeClient handler\n\n            use request = new HttpRequestMessage(HttpMethod.Get, \"http://stub/pets/1\")\n\n            let! ex =\n                Assert.ThrowsAsync<Swagger.OpenApiException>(fun () ->\n                    task {\n                        let! _ = client.CallAsync(request, [| \"404\" |], [| \"Pet not found\" |], CancellationToken.None)\n                        ()\n                    })\n\n            ex.StatusCode |> shouldEqual 404\n            ex.Message |> shouldEqual \"Pet not found\"\n        }\n\n    [<Fact>]\n    let ``CallAsync raises OpenApiException for undocumented error code``() =\n        task {\n            use handler =\n                new StubHttpMessageHandler(HttpStatusCode.InternalServerError, \"server error\")\n\n            let client = makeClient handler\n\n            use request = new HttpRequestMessage(HttpMethod.Get, \"http://stub/pets/1\")\n\n            // 500 is not in the documented error codes; OpenApiException should be raised with response body\n            let! ex =\n                Assert.ThrowsAsync<Swagger.OpenApiException>(fun () ->\n                    task {\n                        let! _ = client.CallAsync(request, [| \"404\" |], [| \"Pet not found\" |], CancellationToken.None)\n                        ()\n                    })\n\n            ex.StatusCode |> shouldEqual 500\n            ex.ResponseBody |> shouldEqual \"server error\"\n        }\n\n    [<Fact>]\n    let ``CallAsync with CancellationToken returns content on success``() =\n        task {\n            use handler = new StubHttpMessageHandler(HttpStatusCode.OK, \"result\")\n            let client = makeClient handler\n            use request = new HttpRequestMessage(HttpMethod.Get, \"http://stub/pets/1\")\n            use! response = client.CallAsync(request, [||], [||], CancellationToken.None)\n            let! body = response.Content.ReadAsStringAsync()\n            body |> shouldEqual \"result\"\n        }\n\n    [<Fact>]\n    let ``CallAsync with already-cancelled token raises OperationCanceledException``() =\n        task {\n            use cts = new CancellationTokenSource()\n            cts.Cancel()\n\n            use handler = new StubHttpMessageHandler(HttpStatusCode.OK, \"ok\")\n            let client = makeClient handler\n            use request = new HttpRequestMessage(HttpMethod.Get, \"http://stub/pets/1\")\n\n            let! _ =\n                Assert.ThrowsAnyAsync<OperationCanceledException>(fun () ->\n                    task {\n                        let! _ = client.CallAsync(request, [||], [||], cts.Token)\n                        ()\n                    })\n\n            ()\n        }\n\n/// Test types for formatObject tests — must be plain .NET classes with declared public properties.\ntype FmtSingle(name: string) =\n    member _.Name = name\n\ntype FmtInt(count: int) =\n    member _.Count = count\n\ntype FmtNullable(label: string) =\n    member _.Label: string = label\n\ntype FmtMulti(age: int, name: string) =\n    member _.Age = age\n    member _.Name = name\n\ntype FmtArray(tags: string[]) =\n    member _.Tags = tags\n\n\nmodule FormatObjectTests =\n\n    [<Fact>]\n    let ``formatObject formats string property with quotes``() =\n        let obj = FmtSingle(\"Alice\")\n        formatObject obj |> shouldEqual \"{Name=\\\"Alice\\\"}\"\n\n    [<Fact>]\n    let ``formatObject formats integer property without quotes``() =\n        let obj = FmtInt(42)\n        formatObject obj |> shouldEqual \"{Count=42}\"\n\n    [<Fact>]\n    let ``formatObject formats null string property as null``() =\n        let obj = FmtNullable(null)\n        formatObject obj |> shouldEqual \"{Label=null}\"\n\n    [<Fact>]\n    let ``formatObject formats array property as bracketed list``() =\n        let obj = FmtArray([| \"alpha\"; \"beta\" |])\n        formatObject obj |> shouldEqual \"{Tags=[alpha; beta]}\"\n\n    [<Fact>]\n    let ``formatObject formats empty array property as empty brackets``() =\n        let obj = FmtArray([||])\n        formatObject obj |> shouldEqual \"{Tags=[]}\"\n\n    [<Fact>]\n    let ``formatObject sorts properties alphabetically``() =\n        // Age < Name alphabetically\n        let obj = FmtMulti(30, \"Bob\")\n        formatObject obj |> shouldEqual \"{Age=30; Name=\\\"Bob\\\"}\"\n\n\nmodule ToFormUrlEncodedContentTests =\n\n    [<Fact>]\n    let ``toFormUrlEncodedContent encodes key-value pairs``() =\n        task {\n            use content =\n                toFormUrlEncodedContent(\n                    seq {\n                        (\"name\", box \"Alice\")\n                        (\"age\", box \"30\")\n                    }\n                )\n\n            let! body = content.ReadAsStringAsync()\n            body |> shouldContainText \"name=Alice\"\n            body |> shouldContainText \"age=30\"\n        }\n\n    [<Fact>]\n    let ``toFormUrlEncodedContent excludes null values``() =\n        task {\n            use content =\n                toFormUrlEncodedContent(\n                    seq {\n                        (\"present\", box \"yes\")\n                        (\"missing\", null)\n                    }\n                )\n\n            let! body = content.ReadAsStringAsync()\n            body |> shouldContainText \"present=yes\"\n            body |> shouldNotContainText \"missing\"\n        }\n\n    [<Fact>]\n    let ``toFormUrlEncodedContent handles empty sequence``() =\n        task {\n            use content = toFormUrlEncodedContent Seq.empty\n            let! body = content.ReadAsStringAsync()\n            body |> shouldEqual \"\"\n        }\n\n    [<Fact>]\n    let ``toFormUrlEncodedContent formats DateTime as ISO 8601``() =\n        task {\n            let dt = DateTime(2024, 6, 15, 10, 30, 0, DateTimeKind.Utc)\n\n            use content = toFormUrlEncodedContent(seq { (\"ts\", box dt) })\n\n            let! body = content.ReadAsStringAsync()\n            let encodedValue = body.Substring(\"ts=\".Length)\n            let decodedValue = WebUtility.UrlDecode(encodedValue)\n\n            decodedValue |> shouldEqual(dt.ToString(\"O\"))\n        }\n\n    [<Fact>]\n    let ``toFormUrlEncodedContent formats DateTimeOffset as ISO 8601``() =\n        task {\n            let dto = DateTimeOffset(2024, 6, 15, 10, 30, 0, TimeSpan.Zero)\n\n            use content = toFormUrlEncodedContent(seq { (\"ts\", box dto) })\n\n            let! body = content.ReadAsStringAsync()\n            let encodedValue = body.Substring(\"ts=\".Length)\n            let decodedValue = WebUtility.UrlDecode(encodedValue)\n\n            decodedValue |> shouldEqual(dto.ToString(\"O\"))\n        }\n\n    [<Fact>]\n    let ``toFormUrlEncodedContent formats DateOnly as ISO 8601``() =\n        task {\n            let d = DateOnly(2025, 7, 4)\n            use content = toFormUrlEncodedContent(seq { (\"date\", box d) })\n\n            let! body = content.ReadAsStringAsync()\n            let encodedValue = body.Substring(\"date=\".Length)\n            let decodedValue = WebUtility.UrlDecode(encodedValue)\n\n            decodedValue |> shouldEqual \"2025-07-04\"\n        }\n\n    [<Fact>]\n    let ``toFormUrlEncodedContent formats TimeOnly as HH:mm:ss.FFFFFFF``() =\n        task {\n            let t = TimeOnly(9, 5, 3, 123)\n            use content = toFormUrlEncodedContent(seq { (\"time\", box t) })\n\n            let! body = content.ReadAsStringAsync()\n            let encodedValue = body.Substring(\"time=\".Length)\n            let decodedValue = WebUtility.UrlDecode(encodedValue)\n\n            decodedValue |> shouldEqual \"09:05:03.123\"\n        }\n\n    [<Fact>]\n    let ``toFormUrlEncodedContent skips values when toParam returns null``() =\n        task {\n            let nestedNone = box(Some(None: string option))\n\n            use content =\n                toFormUrlEncodedContent(\n                    seq {\n                        (\"present\", box \"yes\")\n                        (\"nestedNone\", nestedNone)\n                    }\n                )\n\n            let! body = content.ReadAsStringAsync()\n            body |> shouldContainText \"present=yes\"\n            body |> shouldNotContainText \"nestedNone\"\n        }\n\n\nmodule ToMultipartFormDataContentTests =\n\n    [<Fact>]\n    let ``toMultipartFormDataContent skips null values``() =\n        use content =\n            toMultipartFormDataContent(\n                seq {\n                    (\"field\", box \"value\")\n                    (\"empty\", null)\n                }\n            )\n\n        // Non-null value is present; null value is skipped (content has exactly 1 child part)\n        content |> Seq.length |> shouldEqual 1\n\n    [<Fact>]\n    let ``toMultipartFormDataContent adds string values as StringContent``() =\n        use content = toMultipartFormDataContent(seq { (\"greeting\", box \"hello\") })\n        let part = content |> Seq.exactlyOne\n        Assert.IsType<StringContent>(part) |> ignore\n\n    [<Fact>]\n    let ``toMultipartFormDataContent adds stream values with filename``() =\n        use stream = new MemoryStream([| 1uy; 2uy; 3uy |])\n        use content = toMultipartFormDataContent(seq { (\"file\", box stream) })\n        content |> Seq.length |> shouldEqual 1\n\n        let part = content |> Seq.exactlyOne\n        let disposition = part.Headers.ContentDisposition\n\n        isNull disposition |> shouldEqual false\n        disposition.Name.Trim('\"') |> shouldEqual \"file\"\n\n        let hasFileName =\n            not(String.IsNullOrWhiteSpace disposition.FileName)\n            || not(String.IsNullOrWhiteSpace disposition.FileNameStar)\n\n        hasFileName |> shouldEqual true\n\n    [<Fact>]\n    let ``toMultipartFormDataContent formats DateTime as ISO 8601``() =\n        task {\n            let dt = DateTime(2024, 6, 15, 10, 30, 0, DateTimeKind.Utc)\n            use content = toMultipartFormDataContent(seq { (\"ts\", box dt) })\n            let part = content |> Seq.exactlyOne\n            let! body = part.ReadAsStringAsync()\n            body |> shouldEqual(dt.ToString(\"O\"))\n        }\n\n    [<Fact>]\n    let ``toMultipartFormDataContent formats DateTimeOffset as ISO 8601``() =\n        task {\n            let dto = DateTimeOffset(2024, 6, 15, 10, 30, 0, TimeSpan.Zero)\n            use content = toMultipartFormDataContent(seq { (\"ts\", box dto) })\n            let part = content |> Seq.exactlyOne\n            let! body = part.ReadAsStringAsync()\n            body |> shouldEqual(dto.ToString(\"O\"))\n        }\n\n    [<Fact>]\n    let ``toMultipartFormDataContent formats DateOnly as ISO 8601``() =\n        task {\n            let d = DateOnly(2025, 7, 4)\n            use content = toMultipartFormDataContent(seq { (\"date\", box d) })\n            let part = content |> Seq.exactlyOne\n            let! body = part.ReadAsStringAsync()\n            body |> shouldEqual \"2025-07-04\"\n        }\n\n    [<Fact>]\n    let ``toMultipartFormDataContent formats TimeOnly as HH:mm:ss.FFFFFFF``() =\n        task {\n            let t = TimeOnly(9, 5, 3, 123)\n            use content = toMultipartFormDataContent(seq { (\"time\", box t) })\n            let part = content |> Seq.exactlyOne\n            let! body = part.ReadAsStringAsync()\n            body |> shouldEqual \"09:05:03.123\"\n        }\n\n    [<Fact>]\n    let ``toMultipartFormDataContent skips values when toParam returns null``() =\n        task {\n            let nestedNone = box(Some(None: string option))\n\n            use content =\n                toMultipartFormDataContent(\n                    seq {\n                        (\"present\", box \"yes\")\n                        (\"nestedNone\", nestedNone)\n                    }\n                )\n\n            content |> Seq.length |> shouldEqual 1\n            let part = content |> Seq.exactlyOne\n            let! body = part.ReadAsStringAsync()\n\n            part.Headers.ContentDisposition.Name.Trim('\"')\n            |> shouldEqual \"present\"\n\n            body |> shouldEqual \"yes\"\n        }\n\n\n/// Test types for getPropertyValues tests.\ntype PropValWithAttr(value: string) =\n    [<JsonPropertyName(\"custom_name\")>]\n    member _.Value = value\n\ntype PropValWithOption(optVal: string option, required: string) =\n    member _.OptVal = optVal\n    member _.Required = required\n\n\nmodule GetPropertyValuesTests =\n\n    [<Fact>]\n    let ``getPropertyValues uses JsonPropertyName attribute as serialized key``() =\n        let obj = PropValWithAttr(\"hello\")\n        let result = getPropertyValues(box obj) |> Seq.toArray\n        result |> Array.length |> shouldEqual 1\n        let name, value = result.[0]\n        name |> shouldEqual \"custom_name\"\n        value |> shouldEqual(box \"hello\")\n\n    [<Fact>]\n    let ``getPropertyValues uses property name when no attribute``() =\n        let obj = FmtSingle(\"Alice\")\n        let result = getPropertyValues(box obj) |> Seq.toArray\n        result |> Array.length |> shouldEqual 1\n        let name, _ = result.[0]\n        name |> shouldEqual \"Name\"\n\n    [<Fact>]\n    let ``getPropertyValues unwraps Some option to inner value``() =\n        let obj = PropValWithOption(Some \"present\", \"required\")\n        let result = getPropertyValues(box obj) |> Seq.toArray\n        let names = result |> Array.map fst\n        names |> shouldContain \"OptVal\"\n        let _, optValue = result |> Array.find(fun (n, _) -> n = \"OptVal\")\n        optValue |> shouldEqual(box \"present\")\n\n    [<Fact>]\n    let ``getPropertyValues excludes None option values``() =\n        let obj = PropValWithOption(None, \"required\")\n        let result = getPropertyValues(box obj) |> Seq.toArray\n        let names = result |> Array.map fst\n        names |> shouldNotContain \"OptVal\"\n        names |> shouldContain \"Required\"\n\n    [<Fact>]\n    let ``getPropertyValues returns empty sequence for null object``() =\n        let result = getPropertyValues null |> Seq.toArray\n        result |> shouldBeEmpty\n\n    [<Fact>]\n    let ``getPropertyValues cache path: second call on different instance uses cached metadata``() =\n        // First call populates propNameCache for PropValWithAttr; second call reads from it.\n        // Using two instances with distinct values ensures the keys still come from cached reflection.\n        let first = getPropertyValues(box(PropValWithAttr(\"value1\"))) |> Seq.toArray\n        let second = getPropertyValues(box(PropValWithAttr(\"value2\"))) |> Seq.toArray\n        first |> Array.length |> shouldEqual(second |> Array.length)\n        let firstName, firstValue = first.[0]\n        let secondName, secondValue = second.[0]\n        firstName |> shouldEqual \"custom_name\"\n        secondName |> shouldEqual \"custom_name\"\n        firstValue |> shouldEqual(box \"value1\")\n        secondValue |> shouldEqual(box \"value2\")\n\n/// Test type for JSON deserialization tests — a plain .NET class mirroring the generated provider types.\n/// The DefinitionCompiler now wraps all non-required reference types in Option<T>.\n/// This class validates that System.Text.Json correctly round-trips Option<string>.\ntype StringOptionClass() =\n    let mutable _value: string option = None\n\n    member _.Value\n        with get () = _value\n        and set (v) = _value <- v\n\n/// Test type mirroring a generated provider type with an optional byte-array property.\ntype ByteArrayOptionClass() =\n    let mutable _data: byte array option = None\n\n    member _.Data\n        with get () = _data\n        and set (v) = _data <- v\n\n/// Verify that the JSON serializers used by SwaggerProvider correctly map a JSON null to None\n/// (and not Some(null)) for optional reference-type properties — confirming that no extra\n/// sanitization is needed in the generated property setter.\nmodule OptionDeserializationTests =\n    let private optionsWithFSharpConverter =\n        let opts = JsonSerializerOptions()\n        opts.Converters.Add(JsonFSharpConverter())\n        opts\n\n    [<Fact>]\n    let ``FSharpConverter: JSON null on string option property becomes None``() =\n        let r =\n            JsonSerializer.Deserialize<StringOptionClass>(\"\"\"{\"Value\":null}\"\"\", optionsWithFSharpConverter)\n\n        r.Value |> shouldEqual None\n\n    [<Fact>]\n    let ``FSharpConverter: JSON string on string option property becomes Some value``() =\n        let r =\n            JsonSerializer.Deserialize<StringOptionClass>(\"\"\"{\"Value\":\"hello\"}\"\"\", optionsWithFSharpConverter)\n\n        r.Value |> shouldEqual(Some \"hello\")\n\n    [<Fact>]\n    let ``FSharpConverter: missing field on string option property becomes None``() =\n        let r =\n            JsonSerializer.Deserialize<StringOptionClass>(\"\"\"{}\"\"\", optionsWithFSharpConverter)\n\n        r.Value |> shouldEqual None\n\n    [<Fact>]\n    let ``plain STJ: JSON null on string option property becomes None``() =\n        let r = JsonSerializer.Deserialize<StringOptionClass>(\"\"\"{\"Value\":null}\"\"\")\n        r.Value |> shouldEqual None\n\n    [<Fact>]\n    let ``plain STJ: JSON string on string option property becomes Some value``() =\n        let r = JsonSerializer.Deserialize<StringOptionClass>(\"\"\"{\"Value\":\"hello\"}\"\"\")\n        r.Value |> shouldEqual(Some \"hello\")\n\n    [<Fact>]\n    let ``FSharpConverter: JSON null on byte array option property becomes None``() =\n        let r =\n            JsonSerializer.Deserialize<ByteArrayOptionClass>(\"\"\"{\"Data\":null}\"\"\", optionsWithFSharpConverter)\n\n        r.Data |> shouldEqual None\n\n    [<Fact>]\n    let ``FSharpConverter: JSON base64 on byte array option property becomes Some value``() =\n        let r =\n            JsonSerializer.Deserialize<ByteArrayOptionClass>(\"\"\"{\"Data\":\"AQID\"}\"\"\", optionsWithFSharpConverter)\n\n        r.Data |> shouldEqual(Some [| 1uy; 2uy; 3uy |])\n\n    [<Fact>]\n    let ``FSharpConverter: missing field on byte array option property becomes None``() =\n        let r =\n            JsonSerializer.Deserialize<ByteArrayOptionClass>(\"\"\"{}\"\"\", optionsWithFSharpConverter)\n\n        r.Data |> shouldEqual None\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/Schema.ArrayAndMapTypeMappingTests.fs",
    "content": "module SwaggerProvider.Tests.Schema_ArrayAndMapTypeMappingTests\n\nopen System\nopen Xunit\nopen FsUnitTyped\n\n// ── Required array types ──────────────────────────────────────────────────────\n\n[<Fact>]\nlet ``required array of string maps to string array``() =\n    let ty =\n        compilePropertyType \"          type: array\\n          items:\\n            type: string\\n\" true\n\n    ty |> shouldEqual(typeof<string>.MakeArrayType 1)\n\n[<Fact>]\nlet ``required array of integer maps to int32 array``() =\n    let ty =\n        compilePropertyType \"          type: array\\n          items:\\n            type: integer\\n\" true\n\n    ty |> shouldEqual(typeof<int32>.MakeArrayType 1)\n\n[<Fact>]\nlet ``required array of boolean maps to bool array``() =\n    let ty =\n        compilePropertyType \"          type: array\\n          items:\\n            type: boolean\\n\" true\n\n    ty |> shouldEqual(typeof<bool>.MakeArrayType 1)\n\n[<Fact>]\nlet ``required array of number (double) maps to double array``() =\n    let ty =\n        compilePropertyType \"          type: array\\n          items:\\n            type: number\\n            format: double\\n\" true\n\n    ty |> shouldEqual(typeof<double>.MakeArrayType 1)\n\n// ── Optional array types are NOT wrapped in Option (arrays are reference types) ─\n\n[<Fact>]\nlet ``optional array of string is not wrapped in Option``() =\n    // string[] is a reference type — not wrapped in Option<T> even when non-required\n    let ty =\n        compilePropertyType \"          type: array\\n          items:\\n            type: string\\n\" false\n\n    ty |> shouldEqual(typeof<string>.MakeArrayType 1)\n\n[<Fact>]\nlet ``optional array of integer is not wrapped in Option``() =\n    // int32[] is a reference type — not wrapped in Option<T>\n    let ty =\n        compilePropertyType \"          type: array\\n          items:\\n            type: integer\\n\" false\n\n    ty |> shouldEqual(typeof<int32>.MakeArrayType 1)\n\n// ── additionalProperties maps to Map<string, T> ──────────────────────────────\n\nlet private compileAdditionalPropertiesType(valuePropYaml: string) : Type =\n    let schemaStr =\n        sprintf\n            \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: MapMappingTest\n  version: \"1.0.0\"\npaths: {}\ncomponents:\n  schemas:\n    TestType:\n      type: object\n      properties:\n        Value:\n          type: object\n          additionalProperties:\n%s\"\"\"\n            valuePropYaml\n\n    compileSchemaAndGetValueType schemaStr\n\n[<Fact>]\nlet ``additionalProperties string maps to Map<string, string>``() =\n    let ty = compileAdditionalPropertiesType \"            type: string\\n\"\n\n    ty\n    |> shouldEqual(typedefof<Map<string, obj>>.MakeGenericType(typeof<string>, typeof<string>))\n\n[<Fact>]\nlet ``additionalProperties integer maps to Map<string, int32>``() =\n    let ty = compileAdditionalPropertiesType \"            type: integer\\n\"\n\n    ty\n    |> shouldEqual(typedefof<Map<string, obj>>.MakeGenericType(typeof<string>, typeof<int32>))\n\n[<Fact>]\nlet ``additionalProperties boolean maps to Map<string, bool>``() =\n    let ty = compileAdditionalPropertiesType \"            type: boolean\\n\"\n\n    ty\n    |> shouldEqual(typedefof<Map<string, obj>>.MakeGenericType(typeof<string>, typeof<bool>))\n\n// ── Object with both properties and additionalProperties is not a Map ─────────\n// When a schema has explicit `properties` alongside `additionalProperties`, the\n// type should be compiled as an object (preserving the declared properties), not\n// silently reduced to a Map that discards them.\n\n[<Fact>]\nlet ``object with properties and additionalProperties compiles to object type not Map``() =\n    let schemaStr =\n        \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: MixedAdditionalPropsTest\n  version: \"1.0.0\"\npaths: {}\ncomponents:\n  schemas:\n    TestType:\n      type: object\n      properties:\n        Value:\n          type: object\n          properties:\n            Name:\n              type: string\n          additionalProperties:\n            type: integer\n\"\"\"\n\n    let ty = compileSchemaAndGetValueType schemaStr\n    // Should be an object type (not a generic Map)\n    ty.IsGenericType |> shouldEqual false\n\n    ty.GetProperties()\n    |> Array.exists(fun p -> p.Name = \"Name\")\n    |> shouldEqual true\n\n// ── Array of $ref objects ─────────────────────────────────────────────────────\n\n[<Fact>]\nlet ``required array of ref object maps to ProvidedType array``() =\n    let schemaStr =\n        \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: ArrayOfRefTest\n  version: \"1.0.0\"\npaths: {}\ncomponents:\n  schemas:\n    Item:\n      type: object\n      properties:\n        Id:\n          type: integer\n    TestType:\n      type: object\n      properties:\n        Value:\n          type: array\n          items:\n            $ref: '#/components/schemas/Item'\n\"\"\"\n\n    let ty = compileSchemaAndGetValueType schemaStr\n    // Should be an array type (Item[])\n    ty.IsArray |> shouldEqual true\n    ty.GetElementType().Name |> shouldEqual \"Item\"\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/Schema.DefinitionPathTests.fs",
    "content": "module SwaggerProvider.Tests.Schema_DefinitionPathTests\n\n/// Unit tests for DefinitionPath.Parse — the function that splits a JSON Reference\n/// path (e.g. \"#/components/schemas/My.Namespace.TypeName\") into its namespace list,\n/// requested type name, and PascalCase candidate name.\n\nopen SwaggerProvider.Internal.Compilers\nopen Xunit\nopen FsUnitTyped\n\n// ── Prefix constant ───────────────────────────────────────────────────────────\n\n[<Fact>]\nlet ``DefinitionPrefix is the OpenAPI component schema reference prefix``() =\n    DefinitionPath.DefinitionPrefix |> shouldEqual \"#/components/schemas/\"\n\n// ── Simple (un-namespaced) names ──────────────────────────────────────────────\n\n[<Fact>]\nlet ``simple name has empty namespace``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/Pet\"\n    result.Namespace |> shouldEqual []\n\n[<Fact>]\nlet ``simple name preserves RequestedTypeName exactly``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/Pet\"\n    result.RequestedTypeName |> shouldEqual \"Pet\"\n\n[<Fact>]\nlet ``simple PascalCase name has matching ProvidedTypeNameCandidate``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/Pet\"\n    result.ProvidedTypeNameCandidate |> shouldEqual \"Pet\"\n\n[<Fact>]\nlet ``simple camelCase name is PascalCased in ProvidedTypeNameCandidate``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/petModel\"\n    result.ProvidedTypeNameCandidate |> shouldEqual \"PetModel\"\n\n[<Fact>]\nlet ``simple camelCase name preserves original casing in RequestedTypeName``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/petModel\"\n    result.RequestedTypeName |> shouldEqual \"petModel\"\n\n// ── One-level namespaced names ────────────────────────────────────────────────\n\n[<Fact>]\nlet ``one-level namespace is extracted``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/My.Pet\"\n    result.Namespace |> shouldEqual [ \"My\" ]\n\n[<Fact>]\nlet ``one-level namespace leaves type name after the dot``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/My.Pet\"\n    result.RequestedTypeName |> shouldEqual \"Pet\"\n\n[<Fact>]\nlet ``one-level namespace applies PascalCase to ProvidedTypeNameCandidate``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/my.petModel\"\n    result.ProvidedTypeNameCandidate |> shouldEqual \"PetModel\"\n\n// ── Multi-level namespaced names ──────────────────────────────────────────────\n\n[<Fact>]\nlet ``two-level namespace is fully extracted``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/A.B.TypeName\"\n    result.Namespace |> shouldEqual [ \"A\"; \"B\" ]\n    result.RequestedTypeName |> shouldEqual \"TypeName\"\n\n[<Fact>]\nlet ``three-level namespace is fully extracted``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/A.B.C.TypeName\"\n    result.Namespace |> shouldEqual [ \"A\"; \"B\"; \"C\" ]\n    result.RequestedTypeName |> shouldEqual \"TypeName\"\n\n[<Fact>]\nlet ``deep namespace preserves all namespace segments``() =\n    let result =\n        DefinitionPath.Parse \"#/components/schemas/Com.Example.Api.Models.Response\"\n\n    result.Namespace |> shouldEqual [ \"Com\"; \"Example\"; \"Api\"; \"Models\" ]\n    result.RequestedTypeName |> shouldEqual \"Response\"\n\n// ── Names containing non-alphanumeric / non-dot characters ───────────────────\n// Hyphens and underscores are valid in JSON schema names but are NOT dot-separators,\n// so the function should find no namespace when no dot precedes them.\n\n[<Fact>]\nlet ``name containing only a hyphen has no namespace``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/my-type\"\n    result.Namespace |> shouldEqual []\n\n[<Fact>]\nlet ``name with hyphen does not extract a spurious namespace``() =\n    let result = DefinitionPath.Parse \"#/components/schemas/Api.my-type\"\n    // The dot before \"my-type\" is in the scanned definition-name segment after\n    // the prefix; the hyphen stops the scan, so LastIndexOf('.') finds that dot.\n    result.Namespace |> shouldEqual [ \"Api\" ]\n\n// ── Error handling ────────────────────────────────────────────────────────────\n\n[<Fact>]\nlet ``definition not starting with prefix throws``() =\n    let act = fun () -> DefinitionPath.Parse \"notADefinitionPath\" |> ignore\n    act |> shouldFail\n\n[<Fact>]\nlet ``swagger 2 definitions path does not start with v3 prefix and throws``() =\n    let act = fun () -> DefinitionPath.Parse \"#/definitions/Pet\" |> ignore\n    act |> shouldFail\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/Schema.OperationCompilationTests.fs",
    "content": "module SwaggerProvider.Tests.Schema_OperationCompilationTests\n\n/// Unit tests for the v3 OperationCompiler — verifying generated method signatures,\n/// parameter ordering, CancellationToken injection, return-type resolution,\n/// and async vs task mode.\n\nopen System\nopen System.Reflection\nopen System.Threading\nopen System.Threading.Tasks\nopen Xunit\nopen FsUnitTyped\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nlet private compileTaskSchema schemaStr =\n    compileV3Schema schemaStr false\n\nlet private compileAsyncSchema schemaStr =\n    compileV3Schema schemaStr true\n\nlet private findMethod (types: ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition list) (methodName: string) =\n    types\n    |> List.collect(fun t -> t.GetMethods() |> Array.toList)\n    |> List.tryFind(fun m -> m.Name = methodName)\n\n// ── Simple GET with no parameters ─────────────────────────────────────────────\n\nlet private simpleGetSchema =\n    \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: SimpleGetTest\n  version: \"1.0.0\"\npaths:\n  /status:\n    get:\n      operationId: getStatus\n      summary: Get server status\n      responses:\n        \"200\":\n          description: OK\n          content:\n            application/json:\n              schema:\n                type: string\ncomponents:\n  schemas: {}\n\"\"\"\n\n[<Fact>]\nlet ``GET endpoint generates a method with the operation name``() =\n    let types = compileTaskSchema simpleGetSchema\n    let method = findMethod types \"GetStatus\"\n    method.IsSome |> shouldEqual true\n\n[<Fact>]\nlet ``GET endpoint with no parameters has CancellationToken as its only parameter``() =\n    let types = compileTaskSchema simpleGetSchema\n    let method = (findMethod types \"GetStatus\").Value\n    let parameters = method.GetParameters()\n    parameters.Length |> shouldEqual 1\n    parameters[0].ParameterType |> shouldEqual typeof<CancellationToken>\n\n[<Fact>]\nlet ``GET endpoint returning JSON string has Task<string> return type``() =\n    let types = compileTaskSchema simpleGetSchema\n    let method = (findMethod types \"GetStatus\").Value\n\n    method.ReturnType.IsGenericType |> shouldEqual true\n\n    method.ReturnType.GetGenericTypeDefinition()\n    |> shouldEqual typedefof<Task<_>>\n\n    method.ReturnType.GetGenericArguments()[0]\n    |> shouldEqual typeof<string>\n\n// ── GET with required and optional path/query parameters ──────────────────────\n\nlet private parametrisedGetSchema =\n    \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: ParameterisedGetTest\n  version: \"1.0.0\"\npaths:\n  /items/{id}:\n    get:\n      operationId: getItem\n      summary: Get item by ID\n      parameters:\n        - name: id\n          in: path\n          required: true\n          schema:\n            type: integer\n            format: int64\n        - name: tag\n          in: query\n          required: false\n          schema:\n            type: string\n      responses:\n        \"200\":\n          description: OK\ncomponents:\n  schemas: {}\n\"\"\"\n\n[<Fact>]\nlet ``GET with required + optional params orders required before optional``() =\n    let types = compileTaskSchema parametrisedGetSchema\n    let method = (findMethod types \"GetItem\").Value\n    let parameters = method.GetParameters()\n    // Expected: id (required int64), tag (optional string), cancellationToken (CT)\n    parameters.Length |> shouldEqual 3\n\n    let idParam = parameters[0]\n    let tagParam = parameters[1]\n    let ctParam = parameters[2]\n\n    idParam.Name |> shouldEqual \"id\"\n    idParam.ParameterType |> shouldEqual typeof<int64>\n    // optional — marked as optional via ParameterAttributes\n    tagParam.Name |> shouldEqual \"tag\"\n    tagParam.IsOptional |> shouldEqual true\n    ctParam.ParameterType |> shouldEqual typeof<CancellationToken>\n\n[<Fact>]\nlet ``CancellationToken is always the last parameter``() =\n    let types = compileTaskSchema parametrisedGetSchema\n    let method = (findMethod types \"GetItem\").Value\n    let parameters = method.GetParameters()\n    let last = parameters |> Array.last\n    last.ParameterType |> shouldEqual typeof<CancellationToken>\n\n// ── POST with JSON request body ───────────────────────────────────────────────\n\nlet private postWithBodySchema =\n    \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: PostBodyTest\n  version: \"1.0.0\"\npaths:\n  /items:\n    post:\n      operationId: createItem\n      summary: Create a new item\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/NewItem'\n      responses:\n        \"201\":\n          description: Created\ncomponents:\n  schemas:\n    NewItem:\n      type: object\n      required:\n        - name\n      properties:\n        name:\n          type: string\n\"\"\"\n\n[<Fact>]\nlet ``POST with body generates method with body parameter before CancellationToken``() =\n    let types = compileTaskSchema postWithBodySchema\n    let method = (findMethod types \"CreateItem\").Value\n    let parameters = method.GetParameters()\n    // Expected: body (required NewItem), cancellationToken (CT)\n    parameters.Length |> shouldEqual 2\n    let bodyParam = parameters[0]\n    let ctParam = parameters[1]\n    // Body parameter is a provided type, so just verify it is not CancellationToken\n    bodyParam.ParameterType |> shouldNotEqual typeof<CancellationToken>\n    ctParam.ParameterType |> shouldEqual typeof<CancellationToken>\n\n[<Fact>]\nlet ``POST with no response body has Task<unit> return type``() =\n    let types = compileTaskSchema postWithBodySchema\n    let method = (findMethod types \"CreateItem\").Value\n\n    method.ReturnType.IsGenericType |> shouldEqual true\n\n    method.ReturnType.GetGenericTypeDefinition()\n    |> shouldEqual typedefof<Task<_>>\n\n    method.ReturnType.GetGenericArguments()[0] |> shouldEqual typeof<unit>\n\n// ── CancellationToken naming collision avoidance ──────────────────────────────\n\nlet private ctCollisionSchema =\n    \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: CTCollisionTest\n  version: \"1.0.0\"\npaths:\n  /search:\n    get:\n      operationId: search\n      parameters:\n        - name: cancellationToken\n          in: query\n          required: false\n          schema:\n            type: string\n      responses:\n        \"200\":\n          description: OK\ncomponents:\n  schemas: {}\n\"\"\"\n\n[<Fact>]\nlet ``when a query param is named cancellationToken the injected CT param gets a unique name``() =\n    let types = compileTaskSchema ctCollisionSchema\n    let method = (findMethod types \"Search\").Value\n    let parameters = method.GetParameters()\n    // There should be two parameters: the query param + the CT param\n    parameters.Length |> shouldEqual 2\n    let ctParam = parameters |> Array.last\n    // The injected CT param must not collide with the API param name\n    ctParam.ParameterType |> shouldEqual typeof<CancellationToken>\n    ctParam.Name |> shouldNotEqual parameters[0].Name\n\n// ── Multiple operations — each gets its own CT parameter ─────────────────────\n\nlet private multiOpSchema =\n    \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: MultiOpTest\n  version: \"1.0.0\"\npaths:\n  /pets:\n    get:\n      operationId: listPets\n      responses:\n        \"200\":\n          description: OK\n    post:\n      operationId: createPet\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              type: object\n              properties:\n                name:\n                  type: string\n      responses:\n        \"201\":\n          description: Created\ncomponents:\n  schemas: {}\n\"\"\"\n\n[<Fact>]\nlet ``multiple operations each generate a method with CancellationToken``() =\n    let types = compileTaskSchema multiOpSchema\n\n    let listPets = findMethod types \"ListPets\"\n    let createPet = findMethod types \"CreatePet\"\n\n    listPets.IsSome |> shouldEqual true\n    createPet.IsSome |> shouldEqual true\n\n    let listPetsParams = listPets.Value.GetParameters()\n    let createPetParams = createPet.Value.GetParameters()\n\n    (listPetsParams |> Array.last).ParameterType\n    |> shouldEqual typeof<CancellationToken>\n\n    (createPetParams |> Array.last).ParameterType\n    |> shouldEqual typeof<CancellationToken>\n\n// ── Async mode: asAsync=true returns Async<T> instead of Task<T> ──────────────\n\n[<Fact>]\nlet ``asAsync=true: GET returning string produces Async<string> return type``() =\n    let types = compileAsyncSchema simpleGetSchema\n    let method = (findMethod types \"GetStatus\").Value\n\n    method.ReturnType.IsGenericType |> shouldEqual true\n\n    method.ReturnType.GetGenericTypeDefinition()\n    |> shouldEqual typedefof<Async<_>>\n\n    method.ReturnType.GetGenericArguments()[0]\n    |> shouldEqual typeof<string>\n\n[<Fact>]\nlet ``asAsync=true: POST with no response body produces Async<unit> return type``() =\n    let types = compileAsyncSchema postWithBodySchema\n    let method = (findMethod types \"CreateItem\").Value\n\n    method.ReturnType.IsGenericType |> shouldEqual true\n\n    method.ReturnType.GetGenericTypeDefinition()\n    |> shouldEqual typedefof<Async<_>>\n\n    method.ReturnType.GetGenericArguments()[0] |> shouldEqual typeof<unit>\n\n[<Fact>]\nlet ``asAsync=true: method is still generated with correct name``() =\n    let types = compileAsyncSchema simpleGetSchema\n    let method = findMethod types \"GetStatus\"\n    method.IsSome |> shouldEqual true\n\n[<Fact>]\nlet ``asAsync=true: CancellationToken is still the last parameter``() =\n    let types = compileAsyncSchema parametrisedGetSchema\n    let method = (findMethod types \"GetItem\").Value\n    let parameters = method.GetParameters()\n\n    (parameters |> Array.last).ParameterType\n    |> shouldEqual typeof<CancellationToken>\n\n// ── DELETE / PUT operations ──────────────────────────────────────────────────\n\nlet private deleteEndpointSchema =\n    \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: DeleteTest\n  version: \"1.0.0\"\npaths:\n  /items/{id}:\n    delete:\n      operationId: deleteItem\n      summary: Delete an item\n      parameters:\n        - name: id\n          in: path\n          required: true\n          schema:\n            type: integer\n      responses:\n        \"204\":\n          description: No Content\ncomponents:\n  schemas: {}\n\"\"\"\n\n[<Fact>]\nlet ``DELETE endpoint generates a method``() =\n    let types = compileTaskSchema deleteEndpointSchema\n    let method = findMethod types \"DeleteItem\"\n    method.IsSome |> shouldEqual true\n\n[<Fact>]\nlet ``DELETE endpoint with 204 response produces Task<unit> return type``() =\n    let types = compileTaskSchema deleteEndpointSchema\n    let method = (findMethod types \"DeleteItem\").Value\n\n    method.ReturnType.IsGenericType |> shouldEqual true\n\n    method.ReturnType.GetGenericTypeDefinition()\n    |> shouldEqual typedefof<Task<_>>\n\n    method.ReturnType.GetGenericArguments()[0] |> shouldEqual typeof<unit>\n\n[<Fact>]\nlet ``DELETE endpoint path parameter is included before CancellationToken``() =\n    let types = compileTaskSchema deleteEndpointSchema\n    let method = (findMethod types \"DeleteItem\").Value\n    let parameters = method.GetParameters()\n    // id (required int32) + cancellationToken\n    parameters.Length |> shouldEqual 2\n    parameters[0].Name |> shouldEqual \"id\"\n    parameters[0].ParameterType |> shouldEqual typeof<int32>\n\n    (parameters |> Array.last).ParameterType\n    |> shouldEqual typeof<CancellationToken>\n\nlet private putEndpointSchema =\n    \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: PutTest\n  version: \"1.0.0\"\npaths:\n  /items/{id}:\n    put:\n      operationId: updateItem\n      summary: Update an item\n      parameters:\n        - name: id\n          in: path\n          required: true\n          schema:\n            type: integer\n            format: int64\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/UpdateItem'\n      responses:\n        \"200\":\n          description: Updated\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/UpdateItem'\ncomponents:\n  schemas:\n    UpdateItem:\n      type: object\n      required:\n        - name\n      properties:\n        name:\n          type: string\n\"\"\"\n\n[<Fact>]\nlet ``PUT endpoint generates a method``() =\n    let types = compileTaskSchema putEndpointSchema\n    let method = findMethod types \"UpdateItem\"\n    method.IsSome |> shouldEqual true\n\n[<Fact>]\nlet ``PUT endpoint has path param and body param before CancellationToken``() =\n    let types = compileTaskSchema putEndpointSchema\n    let method = (findMethod types \"UpdateItem\").Value\n    let parameters = method.GetParameters()\n    // id (int64) + body (UpdateItem) + cancellationToken — 3 params total\n    parameters.Length |> shouldEqual 3\n    parameters[0].Name |> shouldEqual \"id\"\n    parameters[0].ParameterType |> shouldEqual typeof<int64>\n    // body param is a provided type (not CancellationToken)\n    parameters[1].ParameterType\n    |> shouldNotEqual typeof<CancellationToken>\n\n    (parameters |> Array.last).ParameterType\n    |> shouldEqual typeof<CancellationToken>\n\n[<Fact>]\nlet ``PUT endpoint with JSON response produces Task<T> return type``() =\n    let types = compileTaskSchema putEndpointSchema\n    let method = (findMethod types \"UpdateItem\").Value\n\n    method.ReturnType.IsGenericType |> shouldEqual true\n\n    method.ReturnType.GetGenericTypeDefinition()\n    |> shouldEqual typedefof<Task<_>>\n\n    // Return type must not be unit — should be the UpdateItem provided type\n    method.ReturnType.GetGenericArguments()[0]\n    |> shouldNotEqual typeof<unit>\n\n// ── Header parameters ─────────────────────────────────────────────────────────\n\nlet private headerParamSchema =\n    \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: HeaderParamTest\n  version: \"1.0.0\"\npaths:\n  /items:\n    get:\n      operationId: listItems\n      parameters:\n        - name: X-Api-Version\n          in: header\n          required: true\n          schema:\n            type: string\n        - name: limit\n          in: query\n          required: false\n          schema:\n            type: integer\n      responses:\n        \"200\":\n          description: OK\ncomponents:\n  schemas: {}\n\"\"\"\n\n[<Fact>]\nlet ``header parameter is included as a method parameter``() =\n    let types = compileTaskSchema headerParamSchema\n    let method = (findMethod types \"ListItems\").Value\n    let parameters = method.GetParameters()\n    // xApiVersion (required string) + limit (optional int) + cancellationToken\n    parameters.Length |> shouldEqual 3\n    // Header param names are camelCased\n    let paramNames = parameters |> Array.map(fun p -> p.Name)\n    paramNames |> shouldContain \"xApiVersion\"\n\n[<Fact>]\nlet ``required header parameter is not optional``() =\n    let types = compileTaskSchema headerParamSchema\n    let method = (findMethod types \"ListItems\").Value\n    let parameters = method.GetParameters()\n    let headerParam = parameters |> Array.find(fun p -> p.Name = \"xApiVersion\")\n    headerParam.IsOptional |> shouldEqual false\n    headerParam.ParameterType |> shouldEqual typeof<string>\n\n// ── Cookie parameters ──────────────────────────────────────────────────────────\n\nlet private cookieParamSchema =\n    \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: CookieParamTest\n  version: \"1.0.0\"\npaths:\n  /session:\n    get:\n      operationId: getSession\n      parameters:\n        - name: sessionId\n          in: cookie\n          required: true\n          schema:\n            type: string\n        - name: theme\n          in: cookie\n          required: false\n          schema:\n            type: string\n      responses:\n        \"200\":\n          description: OK\n          content:\n            application/json:\n              schema:\n                type: string\ncomponents:\n  schemas: {}\n\"\"\"\n\n[<Fact>]\nlet ``cookie parameter is included as a method parameter``() =\n    let types = compileTaskSchema cookieParamSchema\n    let method = (findMethod types \"GetSession\").Value\n    let parameters = method.GetParameters()\n    // sessionId (required string) + theme (optional string) + cancellationToken\n    parameters.Length |> shouldEqual 3\n    let paramNames = parameters |> Array.map(fun p -> p.Name)\n    paramNames |> shouldContain \"sessionId\"\n    paramNames |> shouldContain \"theme\"\n\n[<Fact>]\nlet ``required cookie parameter is not optional``() =\n    let types = compileTaskSchema cookieParamSchema\n    let method = (findMethod types \"GetSession\").Value\n    let parameters = method.GetParameters()\n    let cookieParam = parameters |> Array.find(fun p -> p.Name = \"sessionId\")\n    cookieParam.IsOptional |> shouldEqual false\n    cookieParam.ParameterType |> shouldEqual typeof<string>\n\n[<Fact>]\nlet ``optional cookie parameter is optional``() =\n    let types = compileTaskSchema cookieParamSchema\n    let method = (findMethod types \"GetSession\").Value\n    let parameters = method.GetParameters()\n    let themeParam = parameters |> Array.find(fun p -> p.Name = \"theme\")\n    themeParam.IsOptional |> shouldEqual true\n\n// ── text/plain response ────────────────────────────────────────────────────────\n\nlet private textPlainResponseSchema =\n    \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: TextPlainTest\n  version: \"1.0.0\"\npaths:\n  /health:\n    get:\n      operationId: getHealth\n      responses:\n        \"200\":\n          description: OK\n          content:\n            text/plain:\n              schema:\n                type: string\ncomponents:\n  schemas: {}\n\"\"\"\n\n[<Fact>]\nlet ``text/plain response produces Task<string> return type``() =\n    let types = compileTaskSchema textPlainResponseSchema\n    let method = (findMethod types \"GetHealth\").Value\n    method.ReturnType.IsGenericType |> shouldEqual true\n\n    method.ReturnType.GetGenericTypeDefinition()\n    |> shouldEqual typedefof<Task<_>>\n\n    method.ReturnType.GetGenericArguments()[0]\n    |> shouldEqual typeof<string>\n\n[<Fact>]\nlet ``text/plain response in async mode produces Async<string> return type``() =\n    let types = compileAsyncSchema textPlainResponseSchema\n    let method = (findMethod types \"GetHealth\").Value\n    method.ReturnType.IsGenericType |> shouldEqual true\n\n    method.ReturnType.GetGenericTypeDefinition()\n    |> shouldEqual typedefof<Async<_>>\n\n    method.ReturnType.GetGenericArguments()[0]\n    |> shouldEqual typeof<string>\n\n// ── default response ───────────────────────────────────────────────────────────\n\nlet private defaultResponseSchema =\n    \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: DefaultResponseTest\n  version: \"1.0.0\"\npaths:\n  /data:\n    get:\n      operationId: getData\n      responses:\n        default:\n          description: Default response\n          content:\n            application/json:\n              schema:\n                type: string\ncomponents:\n  schemas: {}\n\"\"\"\n\n[<Fact>]\nlet ``default response is used as return type when no 2xx response is defined``() =\n    let types = compileTaskSchema defaultResponseSchema\n    let method = (findMethod types \"GetData\").Value\n    method.ReturnType.IsGenericType |> shouldEqual true\n\n    method.ReturnType.GetGenericTypeDefinition()\n    |> shouldEqual typedefof<Task<_>>\n    // The string schema from the default response should produce Task<string>\n    method.ReturnType.GetGenericArguments()[0]\n    |> shouldEqual typeof<string>\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/Schema.Parser.Tests.fs",
    "content": "module SwaggerProvider.Tests.Schema_ParserTests\n\nopen Microsoft.OpenApi.Reader\nopen Xunit\nopen FsUnitTyped\nopen System\nopen System.IO\n\nmodule V3 =\n    open SwaggerProvider.Internal.Compilers\n\n    let testSchema schemaStr =\n        let settings = OpenApiReaderSettings()\n        settings.AddYamlReader()\n\n        let readResult =\n            Microsoft.OpenApi.OpenApiDocument.Parse(schemaStr, settings = settings)\n\n        let schema = readResult.Document\n\n        try\n            let defCompiler = DefinitionCompiler(schema, false, Environment.Version.Major >= 6)\n            let opCompiler = OperationCompiler(schema, defCompiler, true, false, true)\n            opCompiler.CompileProvidedClients(defCompiler.Namespace)\n            defCompiler.Namespace.GetProvidedTypes()\n        with e when e.Message.IndexOf(\"not supported yet\") >= 0 ->\n            List.Empty\n\nlet parserTestBody(path: string) =\n    task {\n        let! schemaStr =\n            match Uri.TryCreate(path, UriKind.Absolute) with\n            | true, uri when path.IndexOf(\"http\") >= 0 -> APIsGuru.httpClient.GetStringAsync(uri)\n            | _ when File.Exists(path) -> File.ReadAllTextAsync path\n            | _ -> failwithf $\"Cannot find schema '%s{path}'\"\n\n        if not <| String.IsNullOrEmpty(schemaStr) then\n            V3.testSchema schemaStr |> ignore\n    }\n\nlet rootFolder =\n    Path.Combine(__SOURCE_DIRECTORY__, \"../SwaggerProvider.ProviderTests/Schemas\")\n    |> Path.GetFullPath\n\nlet allSchemas =\n    Directory.GetFiles(rootFolder, \"*.*\", SearchOption.AllDirectories)\n    |> List.ofArray\n    |> List.map(fun s -> Path.GetRelativePath(rootFolder, s))\n\nlet knownSchemaPaths =\n    allSchemas\n    |> List.filter(fun s -> s.IndexOf(\"unsupported\") < 0)\n    |> List.map(fun s -> [| box s |])\n\n[<Theory; MemberData(nameof(knownSchemaPaths))>]\nlet Parse file =\n    let file = Path.Combine(rootFolder, file)\n    parserTestBody file\n\nlet unsupportedSchemaPaths =\n    allSchemas\n    |> List.filter(fun s -> s.IndexOf(\"unsupported\") > 0)\n    |> List.map(fun s -> [| box s |])\n\n[<Theory(Skip = \"no samples\"); MemberData(nameof(unsupportedSchemaPaths))>]\nlet ``Fail to parse`` file =\n    let file = Path.Combine(rootFolder, file)\n    shouldFail(fun () -> parserTestBody file |> Async.AwaitTask |> Async.RunSynchronously)\n\n\n[<Fact>]\nlet ``Parse PetStore``() =\n    parserTestBody(\n        __SOURCE_DIRECTORY__\n        + \"/../SwaggerProvider.ProviderTests/Schemas/petstore-v2.json\"\n    )\n\n[<Fact>]\nlet ``Add definition for schema with only allOf properties``() =\n    let definitions =\n        __SOURCE_DIRECTORY__\n        + \"/../SwaggerProvider.ProviderTests/Schemas/issue255.yaml\"\n        |> File.ReadAllText\n        |> V3.testSchema\n\n    definitions |> shouldHaveLength 1\n    definitions[0].GetDeclaredProperty(\"FirstName\") |> shouldNotEqual null\n\n[<Fact>]\nlet ``Schema with nullable parameter-level property triggers parse errors``() =\n    let schemaPath =\n        __SOURCE_DIRECTORY__\n        + \"/../SwaggerProvider.ProviderTests/Schemas/nullable-parameter-issue261.json\"\n\n    let settings = OpenApiReaderSettings()\n    settings.AddYamlReader()\n\n    let readResult =\n        Microsoft.OpenApi.OpenApiDocument.Parse(File.ReadAllText schemaPath, settings = settings)\n    // Microsoft.OpenApi reports 'nullable' at the parameter level as an error in OpenAPI 3.0\n    // When this is true, IgnoreParseErrors=true allows the provider to proceed instead of failing\n    if readResult.Diagnostic.Errors.Count > 0 then\n        readResult.Diagnostic.Errors\n        |> Seq.exists(fun e -> e.Message.Contains(\"nullable\"))\n        |> shouldEqual true\n\n[<Fact>]\nlet ``Schema with nullable parameter is still parseable despite errors``() =\n    let schemaPath =\n        __SOURCE_DIRECTORY__\n        + \"/../SwaggerProvider.ProviderTests/Schemas/nullable-parameter-issue261.json\"\n\n    // Even with diagnostic errors, the schema should still compile without throwing an exception\n    File.ReadAllText schemaPath |> V3.testSchema |> ignore\n\n(*\n[<Tests>]\nlet parseJsonSchemaTests =\n    APIsGuru.Schemas.Value\n    |> List.ofArray\n    |> List.map (fun url ->\n        testCaseAsync\n            (sprintf \"Parse %s\" url)\n            (parserTestBody url)\n       )\n    |> testList \"Integration/Schema\"\n*)\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/Schema.TestHelpers.fs",
    "content": "[<AutoOpen>]\nmodule SwaggerProvider.Tests.Schema_TestHelpers\n\nopen System\nopen Microsoft.OpenApi.Reader\nopen SwaggerProvider.Internal.Compilers\n\n/// Core: parse, validate, and compile an OpenAPI v3 schema string.\n/// `provideNullable` controls whether optional value-type properties use Nullable<T>.\n/// `useDateOnly` controls whether `date` and `time` formats map to DateOnly and TimeOnly types.\n/// `asAsync` controls whether operation return types are Async<'T> or Task<'T>.\nlet private compileV3SchemaCoreWithOptions (schemaStr: string) (provideNullable: bool) (useDateOnly: bool) (asAsync: bool) =\n    let settings = OpenApiReaderSettings()\n    settings.AddYamlReader()\n\n    let readResult =\n        Microsoft.OpenApi.OpenApiDocument.Parse(schemaStr, settings = settings)\n\n    match readResult.Diagnostic with\n    | null -> ()\n    | diagnostic when diagnostic.Errors |> Seq.isEmpty |> not ->\n        let errorText =\n            diagnostic.Errors\n            |> Seq.map string\n            |> String.concat Environment.NewLine\n\n        failwithf \"Failed to parse OpenAPI schema:%s%s\" Environment.NewLine errorText\n    | _ -> ()\n\n    let schema =\n        match readResult.Document with\n        | null -> failwith \"Failed to parse OpenAPI schema: Document is null.\"\n        | doc -> doc\n\n    let defCompiler = DefinitionCompiler(schema, provideNullable, useDateOnly)\n    let opCompiler = OperationCompiler(schema, defCompiler, true, false, asAsync)\n    opCompiler.CompileProvidedClients(defCompiler.Namespace)\n    defCompiler.Namespace.GetProvidedTypes()\n\nlet private compileV3SchemaCore (schemaStr: string) (provideNullable: bool) (asAsync: bool) =\n    compileV3SchemaCoreWithOptions schemaStr provideNullable false asAsync\n\n/// Parse and compile a full OpenAPI v3 schema string, then return all provided types.\n/// Pass asAsync=true to generate Async<'T> operation return types, or false for Task<'T>.\nlet compileV3Schema (schemaStr: string) (asAsync: bool) =\n    compileV3SchemaCore schemaStr false asAsync\n\n/// Parse and compile a full OpenAPI v3 schema string, then return the .NET type of\n/// the `Value` property on the `TestType` component schema.\nlet compileSchemaAndGetValueType(schemaStr: string) : Type =\n    let types = compileV3Schema schemaStr false\n    let testType = types |> List.find(fun t -> t.Name = \"TestType\")\n\n    match testType.GetDeclaredProperty(\"Value\") with\n    | null -> failwith \"Property 'Value' not found on TestType\"\n    | prop -> prop.PropertyType\n\n/// Build the minimal v3 schema string for a TestType.Value property.\nlet private buildPropertySchema (propYaml: string) (required: bool) =\n    let requiredBlock =\n        if required then\n            \"      required:\\n        - Value\\n\"\n        else\n            \"\"\n\n    sprintf\n        \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: TypeMappingTest\n  version: \"1.0.0\"\npaths: {}\ncomponents:\n  schemas:\n    TestType:\n      type: object\n%s      properties:\n        Value:\n%s\"\"\"\n        requiredBlock\n        propYaml\n\nlet private compilePropertyTypeWithOptions (provideNullable: bool) (useDateOnly: bool) (propYaml: string) (required: bool) : Type =\n    let types =\n        compileV3SchemaCoreWithOptions (buildPropertySchema propYaml required) provideNullable useDateOnly false\n\n    let testType = types |> List.find(fun t -> t.Name = \"TestType\")\n\n    match testType.GetDeclaredProperty(\"Value\") with\n    | null -> failwith \"Property 'Value' not found on TestType\"\n    | prop -> prop.PropertyType\n\n/// Compile a minimal v3 schema where TestType.Value is defined by `propYaml`.\nlet compilePropertyType (propYaml: string) (required: bool) : Type =\n    compilePropertyTypeWithOptions false false propYaml required\n\n/// Compile a minimal v3 schema with configurable DefinitionCompiler options.\n/// Returns the .NET type of the `Value` property on `TestType`.\nlet compilePropertyTypeWith (provideNullable: bool) (propYaml: string) (required: bool) : Type =\n    compilePropertyTypeWithOptions provideNullable false propYaml required\n\n/// Compile a minimal v3 schema where date/time formats map to DateOnly/TimeOnly types.\nlet compilePropertyTypeWithDateOnly (propYaml: string) (required: bool) : Type =\n    compilePropertyTypeWithOptions false true propYaml required\n\n/// Compile a minimal v3 schema with both PreferNullable and useDateOnly options enabled.\nlet compilePropertyTypeWithNullableAndDateOnly (propYaml: string) (required: bool) : Type =\n    compilePropertyTypeWithOptions true true propYaml required\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/Schema.TypeMappingTests.fs",
    "content": "module SwaggerProvider.Tests.Schema_TypeMappingTests\n\nopen System\nopen Xunit\nopen FsUnitTyped\n\n// ── Required primitive types ─────────────────────────────────────────────────\n\n[<Fact>]\nlet ``required boolean maps to bool``() =\n    let ty = compilePropertyType \"          type: boolean\\n\" true\n\n    ty |> shouldEqual typeof<bool>\n\n[<Fact>]\nlet ``required integer (no format) maps to int32``() =\n    let ty = compilePropertyType \"          type: integer\\n\" true\n\n    ty |> shouldEqual typeof<int32>\n\n[<Fact>]\nlet ``required integer int64 format maps to int64``() =\n    let ty =\n        compilePropertyType \"          type: integer\\n          format: int64\\n\" true\n\n    ty |> shouldEqual typeof<int64>\n\n[<Fact>]\nlet ``required number (no format) maps to float32``() =\n    let ty = compilePropertyType \"          type: number\\n\" true\n\n    ty |> shouldEqual typeof<float32>\n\n[<Fact>]\nlet ``required number double format maps to double``() =\n    let ty =\n        compilePropertyType \"          type: number\\n          format: double\\n\" true\n\n    ty |> shouldEqual typeof<double>\n\n// ── Required string formats ───────────────────────────────────────────────────\n\n[<Fact>]\nlet ``required string (no format) maps to string``() =\n    let ty = compilePropertyType \"          type: string\\n\" true\n\n    ty |> shouldEqual typeof<string>\n\n[<Fact>]\nlet ``required string date-time format maps to DateTimeOffset``() =\n    let ty =\n        compilePropertyType \"          type: string\\n          format: date-time\\n\" true\n\n    ty |> shouldEqual typeof<DateTimeOffset>\n\n[<Fact>]\nlet ``required string date format maps to DateTimeOffset when useDateOnly is false``() =\n    let ty = compilePropertyType \"          type: string\\n          format: date\\n\" true\n\n    ty |> shouldEqual typeof<DateTimeOffset>\n\n[<Fact>]\nlet ``required string date format maps to DateOnly when useDateOnly is true``() =\n    let ty =\n        compilePropertyTypeWithDateOnly \"          type: string\\n          format: date\\n\" true\n\n    ty |> shouldEqual typeof<DateOnly>\n\n[<Fact>]\nlet ``required string time format falls back to string when useDateOnly is false``() =\n    // The test helper compiles with useDateOnly=false, so TimeOnly is not used\n    let ty = compilePropertyType \"          type: string\\n          format: time\\n\" true\n    ty |> shouldEqual typeof<string>\n\n[<Fact>]\nlet ``required string time format maps to TimeOnly when useDateOnly is true``() =\n    let ty =\n        compilePropertyTypeWithDateOnly \"          type: string\\n          format: time\\n\" true\n\n    ty |> shouldEqual typeof<TimeOnly>\n\n[<Fact>]\nlet ``required string uuid format maps to Guid``() =\n    let ty = compilePropertyType \"          type: string\\n          format: uuid\\n\" true\n\n    ty |> shouldEqual typeof<Guid>\n\n[<Fact>]\nlet ``required string byte format maps to byte array``() =\n    let ty = compilePropertyType \"          type: string\\n          format: byte\\n\" true\n\n    // DefinitionCompiler creates a rank-1 explicit array via MakeArrayType(1)\n    ty |> shouldEqual(typeof<byte>.MakeArrayType(1))\n\n[<Fact>]\nlet ``required string binary format maps to Stream``() =\n    let ty =\n        compilePropertyType \"          type: string\\n          format: binary\\n\" true\n\n    ty |> shouldEqual typeof<IO.Stream>\n\n// ── Optional (non-required) value types are wrapped in Option<T> ─────────────\n\n[<Fact>]\nlet ``optional boolean maps to Option<bool>``() =\n    let ty = compilePropertyType \"          type: boolean\\n\" false\n\n    ty |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<bool>))\n\n[<Fact>]\nlet ``optional integer maps to Option<int32>``() =\n    let ty = compilePropertyType \"          type: integer\\n\" false\n\n    ty |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<int32>))\n\n[<Fact>]\nlet ``optional integer int64 maps to Option<int64>``() =\n    let ty =\n        compilePropertyType \"          type: integer\\n          format: int64\\n\" false\n\n    ty |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<int64>))\n\n[<Fact>]\nlet ``optional number maps to Option<float32>``() =\n    let ty = compilePropertyType \"          type: number\\n\" false\n\n    ty\n    |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<float32>))\n\n[<Fact>]\nlet ``optional number double maps to Option<double>``() =\n    let ty =\n        compilePropertyType \"          type: number\\n          format: double\\n\" false\n\n    ty\n    |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<double>))\n\n[<Fact>]\nlet ``optional DateTimeOffset maps to Option<DateTimeOffset>``() =\n    let ty =\n        compilePropertyType \"          type: string\\n          format: date-time\\n\" false\n\n    ty\n    |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<DateTimeOffset>))\n\n[<Fact>]\nlet ``optional DateOnly maps to Option<DateOnly> when useDateOnly is true``() =\n    let ty =\n        compilePropertyTypeWithDateOnly \"          type: string\\n          format: date\\n\" false\n\n    ty\n    |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<DateOnly>))\n\n[<Fact>]\nlet ``optional TimeOnly maps to Option<TimeOnly> when useDateOnly is true``() =\n    let ty =\n        compilePropertyTypeWithDateOnly \"          type: string\\n          format: time\\n\" false\n\n    ty\n    |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<TimeOnly>))\n\n[<Fact>]\nlet ``optional Guid maps to Option<Guid>``() =\n    let ty =\n        compilePropertyType \"          type: string\\n          format: uuid\\n\" false\n\n    ty |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<Guid>))\n\n// ── Optional reference types are wrapped in Option<T> ────────────────────────\n\n[<Fact>]\nlet ``optional string maps to Option<string>``() =\n    let ty = compilePropertyType \"          type: string\\n\" false\n\n    ty\n    |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<string>))\n\n[<Fact>]\nlet ``optional byte array maps to Option<byte[]>``() =\n    let ty =\n        compilePropertyType \"          type: string\\n          format: byte\\n\" false\n\n    // byte[*] is a reference type — wrapped in Option<T> when non-required\n    ty\n    |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<byte>.MakeArrayType(1)))\n\n[<Fact>]\nlet ``optional binary maps to Option<Stream>``() =\n    let ty =\n        compilePropertyType \"          type: string\\n          format: binary\\n\" false\n\n    ty\n    |> shouldEqual(typedefof<Option<_>>.MakeGenericType(typeof<IO.Stream>))\n\n// ── $ref primitive-type alias helpers ────────────────────────────────────────\n\n/// Compile a schema where `TestType.Value` directly references a component alias schema\n/// (e.g., `$ref: '#/components/schemas/AliasType'`) and return the resolved .NET type.\nlet private compileDirectRefType (aliasYaml: string) (required: bool) : Type =\n    let requiredBlock =\n        if required then\n            \"      required:\\n        - Value\\n\"\n        else\n            \"\"\n\n    let schemaStr =\n        sprintf\n            \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: RefAliasTest\n  version: \"1.0.0\"\npaths: {}\ncomponents:\n  schemas:\n    AliasType:\n%s    TestType:\n      type: object\n%s      properties:\n        Value:\n          $ref: '#/components/schemas/AliasType'\n\"\"\"\n            (aliasYaml.TrimEnd() + \"\\n\")\n            requiredBlock\n\n    compileSchemaAndGetValueType schemaStr\n\n/// Compile a schema where `TestType.Value` uses `allOf: [$ref]` to reference a component alias\n/// (the standard OpenAPI 3.0 pattern for annotating a reference) and return the resolved .NET type.\nlet private compileAllOfRefType (aliasYaml: string) (required: bool) : Type =\n    let requiredBlock =\n        if required then\n            \"      required:\\n        - Value\\n\"\n        else\n            \"\"\n\n    let schemaStr =\n        sprintf\n            \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: AllOfRefAliasTest\n  version: \"1.0.0\"\npaths: {}\ncomponents:\n  schemas:\n    AliasType:\n%s    TestType:\n      type: object\n%s      properties:\n        Value:\n          allOf:\n            - $ref: '#/components/schemas/AliasType'\n\"\"\"\n            (aliasYaml.TrimEnd() + \"\\n\")\n            requiredBlock\n\n    compileSchemaAndGetValueType schemaStr\n\n// ── $ref to primitive-type alias (direct $ref) ───────────────────────────────\n\n[<Fact>]\nlet ``direct $ref to string alias resolves to string``() =\n    let ty = compileDirectRefType \"      type: string\\n\" true\n    ty |> shouldEqual typeof<string>\n\n[<Fact>]\nlet ``direct $ref to integer alias resolves to int32``() =\n    let ty = compileDirectRefType \"      type: integer\\n\" true\n    ty |> shouldEqual typeof<int32>\n\n[<Fact>]\nlet ``direct $ref to int64 alias resolves to int64``() =\n    let ty = compileDirectRefType \"      type: integer\\n      format: int64\\n\" true\n    ty |> shouldEqual typeof<int64>\n\n[<Fact>]\nlet ``direct $ref to number alias resolves to float32``() =\n    let ty = compileDirectRefType \"      type: number\\n\" true\n    ty |> shouldEqual typeof<float32>\n\n[<Fact>]\nlet ``direct $ref to boolean alias resolves to bool``() =\n    let ty = compileDirectRefType \"      type: boolean\\n\" true\n    ty |> shouldEqual typeof<bool>\n\n[<Fact>]\nlet ``direct $ref to uuid string alias resolves to Guid``() =\n    let ty = compileDirectRefType \"      type: string\\n      format: uuid\\n\" true\n    ty |> shouldEqual typeof<Guid>\n\n// ── $ref to primitive-type alias (via allOf wrapper) ─────────────────────────\n// allOf: [$ref] is the standard OpenAPI 3.0 pattern for annotating a $ref with\n// additional constraints (e.g. description, nullable) without repeating the schema.\n\n[<Fact>]\nlet ``allOf $ref to string alias resolves to string``() =\n    let ty = compileAllOfRefType \"      type: string\\n\" true\n    ty |> shouldEqual typeof<string>\n\n[<Fact>]\nlet ``allOf $ref to integer alias resolves to int32``() =\n    let ty = compileAllOfRefType \"      type: integer\\n\" true\n    ty |> shouldEqual typeof<int32>\n\n// ── $ref to primitive-type alias (via oneOf wrapper) ─────────────────────────\n// oneOf: [$ref] with a single entry is semantically equivalent to a direct $ref.\n// Some code generators (e.g., NSwag, Kiota) emit this form.\n\n/// Compile a schema where `TestType.Value` uses `oneOf: [$ref]` to reference a component alias.\nlet private compileOneOfRefType (aliasYaml: string) (required: bool) : Type =\n    let requiredBlock =\n        if required then\n            \"      required:\\n        - Value\\n\"\n        else\n            \"\"\n\n    let schemaStr =\n        sprintf\n            \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: OneOfRefAliasTest\n  version: \"1.0.0\"\npaths: {}\ncomponents:\n  schemas:\n    AliasType:\n%s    TestType:\n      type: object\n%s      properties:\n        Value:\n          oneOf:\n            - $ref: '#/components/schemas/AliasType'\n\"\"\"\n            (aliasYaml.TrimEnd() + \"\\n\")\n            requiredBlock\n\n    compileSchemaAndGetValueType schemaStr\n\n/// Compile a schema where `TestType.Value` uses `anyOf: [$ref]` to reference a component alias.\nlet private compileAnyOfRefType (aliasYaml: string) (required: bool) : Type =\n    let requiredBlock =\n        if required then\n            \"      required:\\n        - Value\\n\"\n        else\n            \"\"\n\n    let schemaStr =\n        sprintf\n            \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: AnyOfRefAliasTest\n  version: \"1.0.0\"\npaths: {}\ncomponents:\n  schemas:\n    AliasType:\n%s    TestType:\n      type: object\n%s      properties:\n        Value:\n          anyOf:\n            - $ref: '#/components/schemas/AliasType'\n\"\"\"\n            (aliasYaml.TrimEnd() + \"\\n\")\n            requiredBlock\n\n    compileSchemaAndGetValueType schemaStr\n\n[<Fact>]\nlet ``oneOf $ref to string alias resolves to string``() =\n    let ty = compileOneOfRefType \"      type: string\\n\" true\n    ty |> shouldEqual typeof<string>\n\n[<Fact>]\nlet ``oneOf $ref to integer alias resolves to int32``() =\n    let ty = compileOneOfRefType \"      type: integer\\n\" true\n    ty |> shouldEqual typeof<int32>\n\n[<Fact>]\nlet ``anyOf $ref to string alias resolves to string``() =\n    let ty = compileAnyOfRefType \"      type: string\\n\" true\n    ty |> shouldEqual typeof<string>\n\n[<Fact>]\nlet ``anyOf $ref to integer alias resolves to int32``() =\n    let ty = compileAnyOfRefType \"      type: integer\\n\" true\n    ty |> shouldEqual typeof<int32>\n\n[<Fact>]\nlet ``optional oneOf $ref to integer alias resolves to Option<int32>``() =\n    let ty = compileOneOfRefType \"      type: integer\\n\" false\n    ty |> shouldEqual typeof<int32 option>\n\n[<Fact>]\nlet ``optional anyOf $ref to integer alias resolves to Option<int32>``() =\n    let ty = compileAnyOfRefType \"      type: integer\\n\" false\n    ty |> shouldEqual typeof<int32 option>\n\n// ── Optional $ref to primitive-type alias ─────────────────────────────────────\n// When a $ref/allOf alias property is non-required, value types must be wrapped\n// in Option<T> consistent with the behaviour of ordinary optional primitive properties.\n\n[<Fact>]\nlet ``optional direct $ref to integer alias resolves to Option<int32>``() =\n    let ty = compileDirectRefType \"      type: integer\\n\" false\n    ty |> shouldEqual typeof<int32 option>\n\n[<Fact>]\nlet ``optional direct $ref to int64 alias resolves to Option<int64>``() =\n    let ty = compileDirectRefType \"      type: integer\\n      format: int64\\n\" false\n    ty |> shouldEqual typeof<int64 option>\n\n[<Fact>]\nlet ``optional allOf $ref to integer alias resolves to Option<int32>``() =\n    let ty = compileAllOfRefType \"      type: integer\\n\" false\n    ty |> shouldEqual typeof<int32 option>\n\n[<Fact>]\nlet ``optional allOf $ref to int64 alias resolves to Option<int64>``() =\n    let ty = compileAllOfRefType \"      type: integer\\n      format: int64\\n\" false\n    ty |> shouldEqual typeof<int64 option>\n\n// ── PreferNullable=true: optional value types use Nullable<T> ─────────────────\n// When provideNullable=true, the DefinitionCompiler wraps optional value types\n// in Nullable<T> instead of Option<T>.\n\n[<Fact>]\nlet ``PreferNullable: optional boolean maps to Nullable<bool>``() =\n    let ty = compilePropertyTypeWith true \"          type: boolean\\n\" false\n\n    ty |> shouldEqual typeof<System.Nullable<bool>>\n\n[<Fact>]\nlet ``PreferNullable: optional integer maps to Nullable<int32>``() =\n    let ty = compilePropertyTypeWith true \"          type: integer\\n\" false\n\n    ty |> shouldEqual typeof<System.Nullable<int32>>\n\n[<Fact>]\nlet ``PreferNullable: optional int64 maps to Nullable<int64>``() =\n    let ty =\n        compilePropertyTypeWith true \"          type: integer\\n          format: int64\\n\" false\n\n    ty |> shouldEqual typeof<System.Nullable<int64>>\n\n[<Fact>]\nlet ``PreferNullable: required integer is not wrapped (Nullable only for optional)``() =\n    let ty = compilePropertyTypeWith true \"          type: integer\\n\" true\n    ty |> shouldEqual typeof<int32>\n\n[<Fact>]\nlet ``PreferNullable: optional string stays as plain string``() =\n    // With provideNullable=true, reference types are left as plain CLR-nullable types\n    // (Nullable<T> is not valid for reference types).\n    let ty = compilePropertyTypeWith true \"          type: string\\n\" false\n    ty |> shouldEqual typeof<string>\n\n[<Fact>]\nlet ``PreferNullable: optional binary stays as plain byte array``() =\n    let ty =\n        compilePropertyTypeWith true \"          type: string\\n          format: byte\\n\" false\n\n    ty |> shouldEqual(typeof<byte>.MakeArrayType(1))\n\n[<Fact>]\nlet ``PreferNullable: optional binary (base64) stays as plain Stream``() =\n    let ty =\n        compilePropertyTypeWith true \"          type: string\\n          format: binary\\n\" false\n\n    ty |> shouldEqual typeof<IO.Stream>\n\n// ── PreferNullable + useDateOnly: value-type date/time formats use Nullable<T> ──────────────\n// When both provideNullable=true and useDateOnly=true, optional DateOnly/TimeOnly properties\n// should be wrapped in Nullable<T> (not Option<T>), consistent with other value types.\n\n[<Fact>]\nlet ``PreferNullable: optional DateOnly maps to Nullable<DateOnly> when useDateOnly is true``() =\n    let ty =\n        compilePropertyTypeWithNullableAndDateOnly \"          type: string\\n          format: date\\n\" false\n\n    ty |> shouldEqual typeof<System.Nullable<DateOnly>>\n\n[<Fact>]\nlet ``PreferNullable: required DateOnly is not wrapped when useDateOnly is true``() =\n    let ty =\n        compilePropertyTypeWithNullableAndDateOnly \"          type: string\\n          format: date\\n\" true\n\n    ty |> shouldEqual typeof<DateOnly>\n\n[<Fact>]\nlet ``PreferNullable: optional TimeOnly maps to Nullable<TimeOnly> when useDateOnly is true``() =\n    let ty =\n        compilePropertyTypeWithNullableAndDateOnly \"          type: string\\n          format: time\\n\" false\n\n    ty |> shouldEqual typeof<System.Nullable<TimeOnly>>\n\n[<Fact>]\nlet ``PreferNullable: required TimeOnly is not wrapped when useDateOnly is true``() =\n    let ty =\n        compilePropertyTypeWithNullableAndDateOnly \"          type: string\\n          format: time\\n\" true\n\n    ty |> shouldEqual typeof<TimeOnly>\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/Schema.V2SchemaCompilationTests.fs",
    "content": "module SwaggerProvider.Tests.Schema_V2SchemaCompilationTests\n\n/// Tests that verify Swagger 2.0 schemas can be parsed and compiled by the\n/// v3 DefinitionCompiler and OperationCompiler pipeline via Microsoft.OpenApi.\n/// Microsoft.OpenApi normalises both v2 and v3 documents into the same\n/// OpenApiDocument representation, so the v3 compiler pipeline works for both.\n/// These tests document and protect this behaviour as the maintainer intends\n/// OpenApiClientProvider to become the single supported provider for v2 and v3.\n\nopen System\nopen System.Reflection\nopen Microsoft.FSharp.Quotations\nopen Microsoft.OpenApi.Reader\nopen SwaggerProvider.Internal.Compilers\nopen Xunit\nopen FsUnitTyped\n\n/// Parse a Swagger 2.0 JSON schema and compile it with the v3 compiler pipeline.\n/// Returns the compiled provided types as a ProvidedTypeDefinition list.\nlet private compileV2Schema(jsonSchema: string) : ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition list =\n    let settings = OpenApiReaderSettings()\n    settings.AddYamlReader()\n\n    let readResult =\n        Microsoft.OpenApi.OpenApiDocument.Parse(jsonSchema, settings = settings)\n\n    match readResult.Diagnostic with\n    | null -> ()\n    | diagnostic when diagnostic.Errors |> Seq.isEmpty |> not ->\n        let errorText =\n            diagnostic.Errors\n            |> Seq.map string\n            |> String.concat Environment.NewLine\n\n        failwithf \"Failed to parse v2 schema:%s%s\" Environment.NewLine errorText\n    | _ -> ()\n\n    let schema =\n        match readResult.Document with\n        | null -> failwith \"Failed to parse v2 schema: Document is null.\"\n        | doc -> doc\n\n    let defCompiler = DefinitionCompiler(schema, false, false)\n    let opCompiler = OperationCompiler(schema, defCompiler, true, false, false)\n    opCompiler.CompileProvidedClients(defCompiler.Namespace)\n    defCompiler.Namespace.GetProvidedTypes()\n\nlet private getProp (t: ProviderImplementation.ProvidedTypes.ProvidedTypeDefinition) (name: string) =\n    match t.GetDeclaredProperty(name) with\n    | null -> failwithf \"Property '%s' not found on type '%s'\" name t.Name\n    | prop -> prop\n\nlet private minimalPetstoreV2 =\n    \"\"\"{\n  \"swagger\": \"2.0\",\n  \"info\": { \"title\": \"Petstore\", \"version\": \"1.0.0\" },\n  \"basePath\": \"/api\",\n  \"host\": \"example.com\",\n  \"paths\": {\n    \"/pets\": {\n      \"get\": {\n        \"operationId\": \"listPets\",\n        \"summary\": \"List all pets\",\n        \"produces\": [\"application/json\"],\n        \"parameters\": [],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"A list of pets\",\n            \"schema\": { \"type\": \"array\", \"items\": { \"$ref\": \"#/definitions/Pet\" } }\n          }\n        }\n      },\n      \"post\": {\n        \"operationId\": \"createPet\",\n        \"summary\": \"Create a pet\",\n        \"consumes\": [\"application/json\"],\n        \"parameters\": [\n          {\n            \"in\": \"body\",\n            \"name\": \"body\",\n            \"schema\": { \"$ref\": \"#/definitions/NewPet\" }\n          }\n        ],\n        \"responses\": { \"201\": { \"description\": \"Pet created\" } }\n      }\n    },\n    \"/pets/{id}\": {\n      \"get\": {\n        \"operationId\": \"getPet\",\n        \"summary\": \"Get a pet by ID\",\n        \"parameters\": [\n          { \"in\": \"path\", \"name\": \"id\", \"required\": true, \"type\": \"integer\", \"format\": \"int64\" }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"The pet\",\n            \"schema\": { \"$ref\": \"#/definitions/Pet\" }\n          }\n        }\n      }\n    }\n  },\n  \"definitions\": {\n    \"Pet\": {\n      \"type\": \"object\",\n      \"required\": [\"id\", \"name\"],\n      \"properties\": {\n        \"id\": { \"type\": \"integer\", \"format\": \"int64\" },\n        \"name\": { \"type\": \"string\" },\n        \"tag\": { \"type\": \"string\" }\n      }\n    },\n    \"NewPet\": {\n      \"type\": \"object\",\n      \"required\": [\"name\"],\n      \"properties\": {\n        \"name\": { \"type\": \"string\" },\n        \"tag\": { \"type\": \"string\" }\n      }\n    }\n  }\n}\"\"\"\n\n[<Fact>]\nlet ``v2 petstore schema compiles without exception``() =\n    let types = compileV2Schema minimalPetstoreV2\n    types |> List.isEmpty |> shouldEqual false\n\n[<Fact>]\nlet ``v2 petstore schema generates Pet definition type``() =\n    let types = compileV2Schema minimalPetstoreV2\n    let typeNames = types |> List.map(fun t -> t.Name)\n    typeNames |> shouldContain \"Pet\"\n\n[<Fact>]\nlet ``v2 petstore Pet type has correct property types``() =\n    let types = compileV2Schema minimalPetstoreV2\n    let petType = types |> List.find(fun t -> t.Name = \"Pet\")\n    let idProp = getProp petType \"Id\"\n    let nameProp = getProp petType \"Name\"\n    let tagProp = getProp petType \"Tag\"\n    // required int64\n    idProp.PropertyType |> shouldEqual typeof<int64>\n    // required string\n    nameProp.PropertyType |> shouldEqual typeof<string>\n    // optional string — now wrapped in Option<string>\n    tagProp.PropertyType |> shouldEqual typeof<string option>\n\n[<Fact>]\nlet ``v2 petstore schema generates API client types with operations``() =\n    let types = compileV2Schema minimalPetstoreV2\n    // OperationCompiler generates at least one client class with methods\n    let hasOperations =\n        types\n        |> List.exists(fun t ->\n            let methods = t.GetMethods()\n\n            methods\n            |> Array.exists(fun m -> m.Name = \"ListPets\" || m.Name = \"GetPet\" || m.Name = \"CreatePet\"))\n\n    hasOperations |> shouldEqual true\n\n[<Fact>]\nlet ``v2 schema with integer enum property compiles``() =\n    let schema =\n        \"\"\"{\n  \"swagger\": \"2.0\",\n  \"info\": { \"title\": \"EnumTest\", \"version\": \"1.0.0\" },\n  \"basePath\": \"/\",\n  \"paths\": {},\n  \"definitions\": {\n    \"Status\": {\n      \"type\": \"object\",\n      \"required\": [\"code\"],\n      \"properties\": {\n        \"code\": { \"type\": \"integer\", \"enum\": [1, 2, 3] }\n      }\n    }\n  }\n}\"\"\"\n\n    let types = compileV2Schema schema\n    let statusType = types |> List.find(fun t -> t.Name = \"Status\")\n    let codeProp = getProp statusType \"Code\"\n    // integer enum — Microsoft.OpenApi maps this to the integer base type\n    codeProp.PropertyType |> shouldEqual typeof<int32>\n\n// ── ToString tests ───────────────────────────────────────────────────────────\n\n[<Fact>]\nlet ``v2 compiled object type declares ToString override``() =\n    let types = compileV2Schema minimalPetstoreV2\n    let petType = types |> List.find(fun t -> t.Name = \"Pet\")\n\n    let toStr =\n        petType.GetMethods(\n            BindingFlags.Public\n            ||| BindingFlags.Instance\n            ||| BindingFlags.DeclaredOnly\n        )\n        |> Array.tryFind(fun m -> m.Name = \"ToString\" && m.GetParameters().Length = 0)\n\n    toStr.IsSome |> shouldEqual true\n    toStr.Value.ReturnType |> shouldEqual typeof<string>\n\n[<Fact>]\nlet ``v2 compiled object type ToString invokeCode does not throw for concrete provided type``() =\n    // This test guards against the FS3033 regression where splicing a concrete provided-type\n    // expression into a quotation expecting obj caused \"Type mismatch when splicing expression\".\n    let types = compileV2Schema minimalPetstoreV2\n    let petType = types |> List.find(fun t -> t.Name = \"Pet\")\n\n    let toStr =\n        petType.GetMethods(\n            BindingFlags.Public\n            ||| BindingFlags.Instance\n            ||| BindingFlags.DeclaredOnly\n        )\n        |> Array.find(fun m -> m.Name = \"ToString\" && m.GetParameters().Length = 0)\n\n    let providedMethod = toStr :?> ProviderImplementation.ProvidedTypes.ProvidedMethod\n\n    // Access GetInvokeCode via reflection to work around internal accessibility\n    let invokeCodeProp =\n        providedMethod.GetType().GetProperty(\"GetInvokeCode\", BindingFlags.Instance ||| BindingFlags.NonPublic)\n\n    if isNull invokeCodeProp then\n        failwith \"GetInvokeCode property not found on ProvidedMethod\"\n\n    let invokeCodeOpt =\n        invokeCodeProp.GetValue(providedMethod) :?> (Expr list -> Expr) option\n\n    match invokeCodeOpt with\n    | None -> failwith \"ToString has no invoke code\"\n    | Some invokeCode ->\n        let thisVar = Var(\"this\", petType)\n        let thisExpr = Expr.Var thisVar\n        // Must not throw; original bug threw FS3033 here because %%this was\n        // typed as FileDescription/Pet rather than obj inside the quotation body\n        let body = invokeCode [ thisExpr ]\n        // Expr is a value type; just verifying invokeCode did not throw is sufficient\n        body.Type |> shouldEqual typeof<string>\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/Schema.XmlDocTests.fs",
    "content": "module SwaggerProvider.Tests.Schema_XmlDocTests\n\nopen System\nopen Microsoft.OpenApi.Reader\nopen SwaggerProvider.Internal.Compilers\nopen Xunit\nopen FsUnitTyped\n\nlet private parseSchema(schemaStr: string) =\n    let settings = OpenApiReaderSettings()\n    settings.AddYamlReader()\n\n    let readResult =\n        Microsoft.OpenApi.OpenApiDocument.Parse(schemaStr, settings = settings)\n\n    match readResult.Diagnostic with\n    | null -> ()\n    | diagnostic when diagnostic.Errors |> Seq.isEmpty |> not ->\n        let errorText =\n            diagnostic.Errors\n            |> Seq.map string\n            |> String.concat Environment.NewLine\n\n        failwithf \"Failed to parse OpenAPI schema:%s%s\" Environment.NewLine errorText\n    | _ -> ()\n\n    match readResult.Document with\n    | null -> failwith \"Failed to parse OpenAPI schema: Document is null.\"\n    | doc -> doc\n\nlet private getXmlDocAttr(m: System.Reflection.MemberInfo) =\n    m.GetCustomAttributesData()\n    |> Seq.tryFind(fun a -> a.AttributeType.Name = \"TypeProviderXmlDocAttribute\")\n    |> Option.map(fun a -> a.ConstructorArguments.[0].Value :?> string)\n\n/// Compile a minimal OpenAPI v3 schema and return the XmlDoc string for the \"Value\" property\n/// of \"TestType\", or None if no XmlDoc was added.\nlet private getPropertyXmlDoc(propYaml: string) : string option =\n    let schemaStr =\n        sprintf\n            \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: XmlDocTest\n  version: \"1.0.0\"\npaths: {}\ncomponents:\n  schemas:\n    TestType:\n      type: object\n      properties:\n        Value:\n%s\"\"\"\n            propYaml\n\n    let schema = parseSchema schemaStr\n\n    let defCompiler = DefinitionCompiler(schema, false, false)\n    let opCompiler = OperationCompiler(schema, defCompiler, true, false, true)\n    opCompiler.CompileProvidedClients(defCompiler.Namespace)\n\n    let types = defCompiler.Namespace.GetProvidedTypes()\n    let testType = types |> List.find(fun t -> t.Name = \"TestType\")\n\n    match testType.GetDeclaredProperty(\"Value\") with\n    | null -> failwith \"Property 'Value' not found on TestType\"\n    | prop -> getXmlDocAttr prop\n\n/// Compile a minimal OpenAPI v3 schema and return the XmlDoc string for the generated\n/// operation method, or None if no XmlDoc was added.\nlet private getMethodXmlDoc (pathsYaml: string) (operationId: string) : string option =\n    let schemaStr =\n        sprintf\n            \"\"\"openapi: \"3.0.0\"\ninfo:\n  title: XmlDocMethodTest\n  version: \"1.0.0\"\npaths:\n%s\ncomponents:\n  schemas: {}\n\"\"\"\n            pathsYaml\n\n    let schema = parseSchema schemaStr\n\n    let defCompiler = DefinitionCompiler(schema, false, false)\n    let opCompiler = OperationCompiler(schema, defCompiler, true, false, true)\n    opCompiler.CompileProvidedClients(defCompiler.Namespace)\n\n    let types = defCompiler.Namespace.GetProvidedTypes()\n\n    types\n    |> List.collect(fun t -> t.GetMethods() |> Array.toList)\n    |> List.tryFind(fun m -> m.Name.Equals(operationId, StringComparison.OrdinalIgnoreCase))\n    |> Option.bind getXmlDocAttr\n\n// ── Property description ─────────────────────────────────────────────────────\n\n[<Fact>]\nlet ``description without enum is preserved``() =\n    let doc =\n        getPropertyXmlDoc \"          type: string\\n          description: \\\"My description\\\"\\n\"\n\n    doc |> shouldEqual(Some \"My description\")\n\n[<Fact>]\nlet ``no XmlDoc added when no description and no enum``() =\n    let doc = getPropertyXmlDoc \"          type: string\\n\"\n    doc |> shouldEqual None\n\n// ── Enum values in property XmlDoc ────────────────────────────────────────────\n\n[<Fact>]\nlet ``string enum values appear in property XmlDoc``() =\n    let propYaml =\n        \"          type: string\\n          enum:\\n            - active\\n            - inactive\\n            - pending\\n\"\n\n    let doc = getPropertyXmlDoc propYaml\n    doc.IsSome |> shouldEqual true\n    doc.Value |> shouldContainText \"Allowed values:\"\n    doc.Value |> shouldContainText \"active\"\n    doc.Value |> shouldContainText \"inactive\"\n    doc.Value |> shouldContainText \"pending\"\n\n[<Fact>]\nlet ``integer enum values appear in property XmlDoc``() =\n    let propYaml =\n        \"          type: integer\\n          enum:\\n            - 1\\n            - 2\\n            - 3\\n\"\n\n    let doc = getPropertyXmlDoc propYaml\n    doc.IsSome |> shouldEqual true\n    doc.Value |> shouldContainText \"Allowed values:\"\n    doc.Value |> shouldContainText \"1\"\n\n[<Fact>]\nlet ``description is preserved alongside enum values``() =\n    let propYaml =\n        \"          type: string\\n          description: \\\"The status field\\\"\\n          enum:\\n            - active\\n            - inactive\\n\"\n\n    let doc = getPropertyXmlDoc propYaml\n    doc.IsSome |> shouldEqual true\n    doc.Value |> shouldContainText \"The status field\"\n    doc.Value |> shouldContainText \"Allowed values:\"\n    doc.Value |> shouldContainText \"active\"\n    doc.Value |> shouldContainText \"inactive\"\n\n// ── Enum values in operation parameter XmlDoc ─────────────────────────────────\n\nlet private statusEnumParamSchema =\n    \"\"\"  /items:\n    get:\n      operationId: listItems\n      summary: List items\n      parameters:\n        - name: status\n          in: query\n          description: \"Filter by status\"\n          schema:\n            type: string\n            enum:\n              - active\n              - inactive\n              - pending\n      responses:\n        \"200\":\n          description: OK\n          content:\n            application/json:\n              schema:\n                type: string\n\"\"\"\n\n[<Fact>]\nlet ``enum query parameter values appear in method XmlDoc param tag``() =\n    let doc = getMethodXmlDoc statusEnumParamSchema \"ListItems\"\n    doc.IsSome |> shouldEqual true\n    doc.Value |> shouldContainText \"Allowed values:\"\n    doc.Value |> shouldContainText \"active\"\n    doc.Value |> shouldContainText \"inactive\"\n    doc.Value |> shouldContainText \"pending\"\n\n[<Fact>]\nlet ``enum parameter description and allowed values are both preserved in method XmlDoc``() =\n    let doc = getMethodXmlDoc statusEnumParamSchema \"ListItems\"\n    doc.IsSome |> shouldEqual true\n    doc.Value |> shouldContainText \"Filter by status\"\n    doc.Value |> shouldContainText \"Allowed values:\"\n\nlet private noEnumParamSchema =\n    \"\"\"  /health:\n    get:\n      operationId: getHealth\n      summary: Health check\n      parameters:\n        - name: verbose\n          in: query\n          description: \"Verbose output\"\n          schema:\n            type: boolean\n      responses:\n        \"200\":\n          description: OK\n\"\"\"\n\n[<Fact>]\nlet ``non-enum query parameter does not add Allowed values to XmlDoc``() =\n    let doc = getMethodXmlDoc noEnumParamSchema \"GetHealth\"\n    doc.IsSome |> shouldEqual true\n    doc.Value |> shouldContainText \"Health check\"\n    doc.Value |> shouldNotContainText \"Allowed values:\"\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/SsrfSecurityTests.fs",
    "content": "namespace SwaggerProvider.Tests.SsrfSecurityTests\n\nopen System\nopen Xunit\nopen SwaggerProvider.Internal.SchemaReader\n\n/// Tests for SSRF protection - Critical: Unknown URL schemes\n/// These tests verify that only safe URL schemes are allowed\nmodule UnknownSchemeTests =\n\n    [<Fact>]\n    let ``Reject file protocol to prevent local file access``() =\n        task {\n            // Test: file:// protocol should be rejected to prevent SSRF via local file access\n            let fileUrl = \"file:///etc/passwd\"\n\n            let! ex =\n                Assert.ThrowsAsync<Exception>(fun () ->\n                    task {\n                        let! _ = readSchemaPath false \"\" \"\" fileUrl\n                        return ()\n                    })\n\n\n            Assert.Contains(\"Unsupported URL scheme\", ex.Message)\n            Assert.Contains(\"file://\", ex.Message)\n        }\n\n    [<Fact>]\n    let ``Reject FTP protocol to prevent remote protocol access``() =\n        task {\n            // Test: ftp:// protocol should be rejected to prevent SSRF via FTP\n            let ftp_url = \"ftp://internal-server/schema.json\"\n\n            let! ex =\n                Assert.ThrowsAsync<Exception>(fun () ->\n                    task {\n                        let! _ = readSchemaPath false \"\" \"\" ftp_url\n                        return ()\n                    })\n\n            Assert.Contains(\"Unsupported URL scheme\", ex.Message)\n        }\n\n    [<Fact>]\n    let ``Reject Gopher protocol to prevent remote protocol access``() =\n        task {\n            // Test: gopher:// protocol should be rejected to prevent SSRF via Gopher\n            let gopher_url = \"gopher://internal-server/schema.json\"\n\n            let! ex =\n                Assert.ThrowsAsync<Exception>(fun () ->\n                    task {\n                        let! _ = readSchemaPath false \"\" \"\" gopher_url\n                        return ()\n                    })\n\n            Assert.Contains(\"Unsupported URL scheme\", ex.Message)\n        }\n\n    [<Fact>]\n    let ``Reject DICT protocol to prevent remote protocol access``() =\n        task {\n            // Test: dict:// protocol should be rejected to prevent SSRF via DICT\n            let dict_url = \"dict://internal-server/schema.json\"\n\n            let! ex =\n                Assert.ThrowsAsync<Exception>(fun () ->\n                    task {\n                        let! _ = readSchemaPath false \"\" \"\" dict_url\n                        return ()\n                    })\n\n            Assert.Contains(\"Unsupported URL scheme\", ex.Message)\n        }\n\n\n/// Tests for SSRF protection - High: IPv6 private ranges\n/// These tests verify that IPv6 loopback, link-local, ULA, multicast addresses are rejected\nmodule IPv6SecurityTests =\n\n    [<Fact>]\n    let ``Reject IPv6 loopback address ::1``() =\n        // Test: IPv6 loopback ::1 should be rejected to prevent access to localhost services\n        let ipv6_loopback_uri = Uri(\"https://[::1]/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false ipv6_loopback_uri)\n\n        Assert.Contains(\"private or loopback IPv6 addresses\", thrown_exception.Message)\n        Assert.Contains(\"::1\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Reject IPv6 link-local address fe80::1``() =\n        // Test: IPv6 link-local fe80::1 should be rejected to prevent access to link-local services\n        let ipv6_link_local_uri = Uri(\"https://[fe80::1]/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false ipv6_link_local_uri)\n\n        Assert.Contains(\"private or loopback IPv6 addresses\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Reject IPv6 unique local address fd00::1``() =\n        // Test: IPv6 ULA fd00::1 should be rejected to prevent access to private network ranges\n        let ipv6_ula_uri = Uri(\"https://[fd00::1]/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false ipv6_ula_uri)\n\n        Assert.Contains(\"private or loopback IPv6 addresses\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Reject IPv6 unique local address fc00::1``() =\n        // Test: IPv6 ULA fc00::1 should be rejected to prevent access to private network ranges\n        let ipv6_ula_fc_uri = Uri(\"https://[fc00::1]/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false ipv6_ula_fc_uri)\n\n        Assert.Contains(\"private or loopback IPv6 addresses\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Reject IPv6 unspecified address ::``() =\n        // Test: IPv6 unspecified address :: should be rejected to prevent access to localhost services\n        let ipv6_unspecified_uri = Uri(\"https://[::]/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false ipv6_unspecified_uri)\n\n        Assert.Contains(\"private or loopback IPv6 addresses\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Reject IPv6 multicast address ff02::1``() =\n        // Test: IPv6 multicast ff02::1 should be rejected to prevent access to multicast addresses\n        let ipv6_multicast_uri = Uri(\"https://[ff02::1]/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false ipv6_multicast_uri)\n\n        Assert.Contains(\"private or loopback IPv6 addresses\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Reject IPv6 multicast address ff00::1``() =\n        // Test: IPv6 multicast ff00::1 should be rejected to prevent access to multicast addresses\n        let ipv6_multicast_ff00_uri = Uri(\"https://[ff00::1]/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false ipv6_multicast_ff00_uri)\n\n        Assert.Contains(\"private or loopback IPv6 addresses\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Allow public IPv6 documentation address 2001:db8::1``() =\n        // Test: Public IPv6 documentation range 2001:db8::1 should pass SSRF validation\n        // (Note: May fail due to network access, but SSRF validation should pass)\n        let public_ipv6_uri = Uri(\"https://[2001:db8::1]/schema.json\")\n\n        try\n            validateSchemaUrl false public_ipv6_uri\n        with\n        | ex when ex.Message.Contains(\"private or loopback\") ->\n            // SSRF validation failed incorrectly\n            Assert.True(false, $\"Public IPv6 should not be blocked by SSRF validation: {ex.Message}\")\n        | _ ->\n            // Other errors are also acceptable (network, etc.)\n            ()\n\n\n\n/// Tests for IPv4 private ranges\n/// These tests verify that IPv4 loopback and private ranges are rejected\nmodule IPv4PrivateRangeTests =\n\n    [<Fact>]\n    let ``Reject IPv4 loopback address 127.0.0.1``() =\n        // Test: IPv4 loopback 127.0.0.1 should be rejected to prevent access to localhost services\n        let loopback_uri = Uri(\"https://127.0.0.1/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false loopback_uri)\n\n        Assert.Contains(\"localhost/loopback\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Reject IPv4 private range 10.0.0.0/8``() =\n        // Test: IPv4 private range 10.0.0.1 should be rejected to prevent access to private networks\n        let private_10_uri = Uri(\"https://10.0.0.1/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false private_10_uri)\n\n        Assert.Contains(\"private or link-local\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Reject IPv4 private range 172.16.0.0/12``() =\n        // Test: IPv4 private range 172.16.0.1 should be rejected to prevent access to private networks\n        let private_172_uri = Uri(\"https://172.16.0.1/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false private_172_uri)\n\n        Assert.Contains(\"private or link-local\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Reject IPv4 private range 172.31.255.255``() =\n        // Test: IPv4 private range upper bound 172.31.255.255 should be rejected\n        let private_172_upper_uri = Uri(\"https://172.31.255.255/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false private_172_upper_uri)\n\n        Assert.Contains(\"private or link-local\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Reject IPv4 private range 192.168.0.0/16``() =\n        // Test: IPv4 private range 192.168.1.1 should be rejected to prevent access to private networks\n        let private_192_uri = Uri(\"https://192.168.1.1/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false private_192_uri)\n\n        Assert.Contains(\"private or link-local\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Reject IPv4 link-local address 169.254.0.0/16``() =\n        // Test: IPv4 link-local 169.254.0.1 should be rejected to prevent access to link-local services\n        let link_local_uri = Uri(\"https://169.254.0.1/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false link_local_uri)\n\n        Assert.Contains(\"private or link-local\", thrown_exception.Message)\n\n\n/// Tests for hostname validation\n/// These tests verify that localhost hostname and public hostnames are handled correctly\nmodule HostnameValidationTests =\n\n    [<Fact>]\n    let ``Reject localhost hostname``() =\n        // Test: localhost hostname should be rejected to prevent access to localhost services\n        let localhost_uri = Uri(\"https://localhost/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false localhost_uri)\n\n        Assert.Contains(\"localhost/loopback\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Allow valid public hostname api.example.com``() =\n        // Test: Valid public hostname should pass SSRF validation\n        // (Note: May fail due to network access, but SSRF validation should pass)\n        let public_uri = Uri(\"https://api.example.com/schema.json\")\n\n        try\n            validateSchemaUrl false public_uri\n        with\n        | ex when ex.Message.Contains(\"localhost\") || ex.Message.Contains(\"private\") ->\n            Assert.Fail($\"Public hostname should not be blocked by SSRF validation: {ex.Message}\")\n        | _ -> ()\n\n\n/// Tests for relative file paths\n/// These tests verify that relative file paths with __SOURCE_DIRECTORY__ work correctly\nmodule RelativeFilePathTests =\n\n    [<Fact>]\n    let ``Allow relative file paths with __SOURCE_DIRECTORY__``() =\n        task {\n            // Test: Relative file paths using __SOURCE_DIRECTORY__ should work correctly\n            // This ensures that development-time file references like:\n            // let Schema = __SOURCE_DIRECTORY__ + \"/../SwaggerProvider.ProviderTests/Schemas/petstore-v2.json\"\n            // are properly handled (not rejected by SSRF validation)\n            let schemaPath =\n                __SOURCE_DIRECTORY__\n                + \"/../SwaggerProvider.ProviderTests/Schemas/petstore-v2.json\"\n\n            try\n                let! _ = readSchemaPath false \"\" \"\" schemaPath\n                () // If file exists, that's fine\n            with\n            | :? Swagger.OpenApiException ->\n                // Swagger parsing errors are okay - means file was read\n                ()\n            | ex when ex.Message.Contains(\"Schema file not found\") ->\n                // File not found is okay - path was resolved correctly\n                ()\n            | ex when\n                ex.Message.Contains(\"Unsupported URL scheme\")\n                || ex.Message.Contains(\"localhost\")\n                || ex.Message.Contains(\"private\")\n                ->\n                // SSRF validation errors mean relative paths are being blocked - this is the bug we're checking for\n                Assert.Fail($\"Relative file paths should not be rejected by SSRF validation: {ex.Message}\")\n            | _ ->\n                // Other errors (file reading issues, etc.) are acceptable\n                ()\n        }\n\n\n/// Tests for disabled SSRF protection (development mode)\n/// These tests verify that when SSRF protection is disabled, all addresses are allowed\nmodule SsrfBypassTests =\n\n    [<Fact>]\n    let ``Allow IPv4 loopback when ignoreSsrfProtection is true``() =\n        // Test: IPv4 loopback should be allowed when SSRF protection is disabled\n        let loopback_uri = Uri(\"https://127.0.0.1/schema.json\")\n        // Should not throw when ignoreSsrfProtection=true\n        validateSchemaUrl true loopback_uri\n\n    [<Fact>]\n    let ``Allow IPv6 loopback when ignoreSsrfProtection is true``() =\n        // Test: IPv6 loopback should be allowed when SSRF protection is disabled\n        let ipv6_loopback_uri = Uri(\"https://[::1]/schema.json\")\n        // Should not throw when ignoreSsrfProtection=true\n        validateSchemaUrl true ipv6_loopback_uri\n\n    [<Fact>]\n    let ``Allow IPv4 private range when ignoreSsrfProtection is true``() =\n        // Test: IPv4 private range should be allowed when SSRF protection is disabled\n        let private_uri = Uri(\"https://192.168.1.1/schema.json\")\n        // Should not throw when ignoreSsrfProtection=true\n        validateSchemaUrl true private_uri\n\n    [<Fact>]\n    let ``Allow IPv6 private range when ignoreSsrfProtection is true``() =\n        // Test: IPv6 private range should be allowed when SSRF protection is disabled\n        let ipv6_private_uri = Uri(\"https://[fd00::1]/schema.json\")\n        // Should not throw when ignoreSsrfProtection=true\n        validateSchemaUrl true ipv6_private_uri\n\n    [<Fact>]\n    let ``Reject HTTP in production mode``() =\n        // Test: HTTP should be rejected in production mode (HTTPS only)\n        let http_url = Uri(\"http://api.example.com/schema.json\")\n\n        let thrown_exception =\n            Assert.Throws<Exception>(fun () -> validateSchemaUrl false http_url)\n\n        Assert.Contains(\"Only HTTPS URLs are allowed\", thrown_exception.Message)\n\n    [<Fact>]\n    let ``Allow HTTP when ignoreSsrfProtection is true``() =\n        // Test: HTTP should be allowed when SSRF protection is disabled (development mode)\n        let http_url = Uri(\"http://localhost/schema.json\")\n\n        try\n            validateSchemaUrl true http_url\n        with\n        | ex when ex.Message.Contains(\"Only HTTPS\") ->\n            Assert.True(false, $\"HTTP should not be rejected by SSRF validation when disabled: {ex.Message}\")\n        | _ -> ()\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/SwaggerProvider.Tests.fsproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFrameworks>net10.0</TargetFrameworks>\n    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>\n  </PropertyGroup>\n  <PropertyGroup>\n    <AssemblyName>SwaggerProvider.Tests</AssemblyName>\n    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"APIs.guru.fs\" />\n    <Compile Include=\"Schema.Parser.Tests.fs\" />\n    <Compile Include=\"Schema.TestHelpers.fs\" />\n    <Compile Include=\"Schema.TypeMappingTests.fs\" />\n    <Compile Include=\"Schema.ArrayAndMapTypeMappingTests.fs\" />\n    <Compile Include=\"Schema.V2SchemaCompilationTests.fs\" />\n    <Compile Include=\"Schema.DefinitionPathTests.fs\" />\n    <Compile Include=\"Schema.OperationCompilationTests.fs\" />\n    <Compile Include=\"Schema.XmlDocTests.fs\" />\n    <Compile Include=\"PathResolutionTests.fs\" />\n    <Compile Include=\"SsrfSecurityTests.fs\" />\n    <Compile Include=\"RuntimeHelpersTests.fs\" />\n    <Compile Include=\"UtilsTests.fs\" />\n    <None Include=\"paket.references\" />\n    <ProjectReference Include=\"..\\..\\src\\SwaggerProvider.DesignTime\\SwaggerProvider.DesignTime.fsproj\" />\n  </ItemGroup>\n  <Import Project=\"..\\..\\.paket\\Paket.Restore.targets\" />\n</Project>\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/UtilsTests.fs",
    "content": "namespace SwaggerProvider.Tests.UtilsTests\n\nopen Xunit\nopen FsUnitTyped\nopen SwaggerProvider.Internal\n\n/// Unit tests for UniqueNameGenerator — used by all DefinitionCompilers and OperationCompilers\n/// to de-duplicate property and method names within a given type scope.\nmodule UniqueNameGeneratorTests =\n\n    [<Fact>]\n    let ``first use of a name is returned unchanged``() =\n        let gen = UniqueNameGenerator()\n        gen.MakeUnique \"Foo\" |> shouldEqual \"Foo\"\n\n    [<Fact>]\n    let ``second use of same name gets numeric suffix 1``() =\n        let gen = UniqueNameGenerator()\n        gen.MakeUnique \"Bar\" |> ignore\n        gen.MakeUnique \"Bar\" |> shouldEqual \"Bar1\"\n\n    [<Fact>]\n    let ``third use of same name gets numeric suffix 2``() =\n        let gen = UniqueNameGenerator()\n        gen.MakeUnique \"Bar\" |> ignore\n        gen.MakeUnique \"Bar\" |> ignore\n        gen.MakeUnique \"Bar\" |> shouldEqual \"Bar2\"\n\n    [<Fact>]\n    let ``collision detection is case-insensitive``() =\n        let gen = UniqueNameGenerator()\n        gen.MakeUnique \"Foo\" |> ignore\n        // \"foo\" collides with \"Foo\" because comparison is case-insensitive\n        gen.MakeUnique \"foo\" |> shouldEqual \"foo1\"\n\n    [<Fact>]\n    let ``original casing of the returned name is preserved``() =\n        let gen = UniqueNameGenerator()\n        gen.MakeUnique \"MyProperty\" |> shouldEqual \"MyProperty\"\n\n    [<Fact>]\n    let ``suffix casing follows the input not the stored key``() =\n        let gen = UniqueNameGenerator()\n        gen.MakeUnique \"myMethod\" |> ignore\n        // Suffix is appended to the original input, preserving its casing\n        gen.MakeUnique \"myMethod\" |> shouldEqual \"myMethod1\"\n\n    [<Fact>]\n    let ``different names do not collide``() =\n        let gen = UniqueNameGenerator()\n        gen.MakeUnique \"Alpha\" |> shouldEqual \"Alpha\"\n        gen.MakeUnique \"Beta\" |> shouldEqual \"Beta\"\n        gen.MakeUnique \"Gamma\" |> shouldEqual \"Gamma\"\n\n    [<Fact>]\n    let ``numeric suffixes increment sequentially``() =\n        let gen = UniqueNameGenerator()\n        let names = [ for _ in 0..4 -> gen.MakeUnique \"X\" ]\n        names |> shouldEqual [ \"X\"; \"X1\"; \"X2\"; \"X3\"; \"X4\" ]\n\n    [<Fact>]\n    let ``name equal to a previously suffixed name is also de-duplicated``() =\n        // After generating \"Op\" and \"Op1\", adding \"Op1\" should produce \"Op11\"\n        let gen = UniqueNameGenerator()\n        gen.MakeUnique \"Op\" |> ignore // reserves \"op\"\n        gen.MakeUnique \"Op\" |> ignore // reserves \"op1\"\n        gen.MakeUnique \"Op1\" |> shouldEqual \"Op11\" // \"op1\" is taken → try \"op11\"\n\n    [<Fact>]\n    let ``empty string is accepted as input``() =\n        let gen = UniqueNameGenerator()\n        gen.MakeUnique \"\" |> shouldEqual \"\"\n        gen.MakeUnique \"\" |> shouldEqual \"1\"\n\n    [<Fact>]\n    let ``occupied names seed prevents first-use from returning the reserved name unchanged``() =\n        let gen = UniqueNameGenerator(occupiedNames = [ \"Foo\" ])\n        gen.MakeUnique \"Foo\" |> shouldEqual \"Foo1\"\n\n    [<Fact>]\n    let ``occupied names seed is case-insensitive``() =\n        let gen = UniqueNameGenerator(occupiedNames = [ \"foo\" ])\n        gen.MakeUnique \"Foo\" |> shouldEqual \"Foo1\"\n\n    [<Fact>]\n    let ``multiple occupied names are all reserved``() =\n        let gen = UniqueNameGenerator(occupiedNames = [ \"Alpha\"; \"Beta\" ])\n        gen.MakeUnique \"Alpha\" |> shouldEqual \"Alpha1\"\n        gen.MakeUnique \"Beta\" |> shouldEqual \"Beta1\"\n        gen.MakeUnique \"Gamma\" |> shouldEqual \"Gamma\"\n\n    [<Fact>]\n    let ``empty occupied names sequence behaves like default constructor``() =\n        let gen = UniqueNameGenerator(occupiedNames = [])\n        gen.MakeUnique \"Foo\" |> shouldEqual \"Foo\"\n"
  },
  {
    "path": "tests/SwaggerProvider.Tests/paket.references",
    "content": "group Test\n    FSharp.Core\n    FSharp.SystemTextJson\n    FsUnit.xUnit\n    Microsoft.NET.Test.Sdk\n    Microsoft.OpenApi\n    System.Text.Json\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Controllers/FileController.fs",
    "content": "namespace Swashbuckle.WebApi.Server.Controllers\n\nopen System\nopen System.IO\nopen Microsoft.AspNetCore.Mvc\nopen Microsoft.AspNetCore.Http\nopen Microsoft.OpenApi\nopen Swashbuckle.AspNetCore.SwaggerGen\n\nmodule MediaTypes =\n\n    open System.Net.Mime\n\n    [<Literal>]\n    let ApplicationOctetStream = MediaTypeNames.Application.Octet\n\n    [<Literal>]\n    let ApplicationJson = MediaTypeNames.Application.Json\n\ntype FormWithFile() =\n    member val Name: string = \"\" with get, set\n    member val File: IFormFile = null with get, set\n\n// https://stackoverflow.com/questions/41141137/how-can-i-tell-swashbuckle-that-the-body-content-is-required\ntype BinaryContentAttribute() =\n    inherit Attribute()\n\ntype BinaryContentFilter() =\n    interface IOperationFilter with\n        member _.Apply(op, ctx) =\n            let att = ctx.MethodInfo.GetCustomAttributes(typeof<BinaryContentAttribute>, false)\n\n            if att.Length > 0 then\n                op.RequestBody <- OpenApiRequestBody(Required = true, Content = System.Collections.Generic.Dictionary<string, OpenApiMediaType>())\n\n                op.RequestBody.Content.Add(\n                    MediaTypes.ApplicationOctetStream,\n                    OpenApiMediaType(Schema = OpenApiSchema(Type = JsonSchemaType.String, Format = \"binary\"))\n                )\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype ReturnFileController() =\n    inherit ControllerBase()\n\n    [<HttpGet; Produces(MediaTypes.ApplicationOctetStream, Type = typeof<FileResult>)>]\n    member this.Get() =\n        let bytes = System.Text.Encoding.UTF8.GetBytes(\"I am totally a file's\\ncontent\")\n        let stream = new MemoryStream(bytes)\n        this.File(stream, MediaTypes.ApplicationOctetStream, \"hello.txt\") :> FileResult\n\n    [<HttpPost(\"stream\"); BinaryContent>]\n    member this.GetFileLength() =\n        task {\n\n            if this.Request.ContentType <> \"application/octet-stream\" then\n                return ActionResult<int>(UnsupportedMediaTypeResult())\n            else\n                use reader = new StreamReader(this.Request.Body)\n                let! content = reader.ReadToEndAsync()\n                return ActionResult<int>(this.Ok(content.Length))\n        }\n\n    [<HttpPost(\"single\"); Produces(MediaTypes.ApplicationOctetStream, Type = typeof<FileResult>)>]\n    member this.PostFile(file: IFormFile) : FileResult =\n        this.File(file.OpenReadStream(), MediaTypes.ApplicationOctetStream, file.FileName) :> FileResult\n\n    [<HttpPost(\"multiple\"); Produces(MediaTypes.ApplicationJson, Type = typeof<int>)>]\n    member this.PostFiles(files: IFormFileCollection) =\n        files.Count // return 0 when you call from Swagger UI\n\n    [<HttpPost(\"form-with-file\"); Produces(MediaTypes.ApplicationOctetStream, Type = typeof<FileResult>)>]\n    member this.PostFormWithFile([<FromForm>] formWithFile: FormWithFile) : FileResult =\n        this.File(formWithFile.File.OpenReadStream(), MediaTypes.ApplicationOctetStream, formWithFile.Name) :> FileResult\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Controllers/NoContentControllers.fs",
    "content": "namespace Swashbuckle.WebApi.Server.Controllers\n\nopen Microsoft.AspNetCore.Mvc\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype NoContentController() =\n    inherit ControllerBase()\n\n    [<HttpGet>]\n    [<Produces(\"application/json\")>]\n    [<ProducesResponseType(204)>]\n    member x.Get() =\n        x.NoContent()\n\n    [<HttpPost>]\n    [<Produces(\"application/json\")>]\n    [<ProducesResponseType(204)>]\n    member x.Post() =\n        x.NoContent()\n\n    [<HttpPut>]\n    [<Produces(\"application/json\")>]\n    [<ProducesResponseType(204)>]\n    member x.Put() =\n        x.NoContent()\n\n    [<HttpDelete>]\n    [<Produces(\"application/json\")>]\n    [<ProducesResponseType(204)>]\n    member x.Delete() =\n        x.NoContent()\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype AcceptedController() =\n    inherit ControllerBase()\n\n    [<HttpGet>]\n    [<Produces(\"application/json\")>]\n    [<ProducesResponseType(typeof<string>, 202)>]\n    member x.Get() : ActionResult<string> =\n        x.StatusCode(202, \"accepted-value\") |> ActionResult<string>\n\n    [<HttpPost>]\n    [<Produces(\"application/json\")>]\n    [<ProducesResponseType(typeof<string>, 202)>]\n    member x.Post() : ActionResult<string> =\n        x.StatusCode(202, \"accepted-value\") |> ActionResult<string>\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Controllers/ResourceControllers.fs",
    "content": "﻿namespace Swashbuckle.WebApi.Server.Controllers\n\nopen System.Collections.Generic\nopen Microsoft.AspNetCore.Mvc\nopen Swagger.Internal\n\n[<ApiController>]\ntype ResourceController<'a, 'b when 'a: equality>(dict: System.Collections.Generic.Dictionary<'a, 'b>) =\n    inherit ControllerBase()\n\n    [<HttpGet; Consumes(MediaTypes.ApplicationJson); Produces(MediaTypes.ApplicationJson)>]\n    member _.Get key =\n        dict.[key] |> ActionResult<'b>\n\n    [<HttpDelete>]\n    member _.Delete key =\n        dict.Remove(key) |> ignore\n\n    [<HttpPut>]\n    member _.Put (key) ([<FromBody>] value) =\n        dict.Add(key, value)\n\n    [<HttpPost>]\n    member _.Post (key) ([<FromBody>] value) =\n        dict.[key] <- value\n\nmodule StaticResources =\n    let storage = Dictionary<_, _>()\n\n[<Route(\"api/ResourceStringString/{key}\")>]\ntype ResourceStringStringController() =\n    inherit ResourceController<string, string>(StaticResources.storage)\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Controllers/ReturnControllers.fs",
    "content": "namespace Swashbuckle.WebApi.Server.Controllers\n\nopen System\nopen Microsoft.AspNetCore.Mvc\nopen Swagger.Internal\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype ReturnController<'a>(value: 'a) =\n    inherit ControllerBase()\n\n    [<HttpGet; Consumes(MediaTypes.ApplicationJson); Produces(MediaTypes.ApplicationJson)>]\n    member this.Get() =\n        value |> ActionResult<'a>\n\n    [<HttpPost; Consumes(MediaTypes.ApplicationJson); Produces(MediaTypes.ApplicationJson)>]\n    member this.Post() =\n        value |> ActionResult<'a>\n\n\ntype ReturnBooleanController() =\n    inherit ReturnController<bool>(true)\n\ntype ReturnInt32Controller() =\n    inherit ReturnController<int>(42)\n\ntype ReturnInt64Controller() =\n    inherit ReturnController<int64>(42L)\n\ntype ReturnFloatController() =\n    inherit ReturnController<float32>(42.0f)\n\ntype ReturnDoubleController() =\n    inherit ReturnController<float>(42.0)\n\ntype ReturnStringController() =\n    inherit ReturnController<string>(\"Hello world\")\n\ntype ReturnDateTimeController() =\n    inherit ReturnController<DateTime>(DateTime(2015, 1, 1))\n\ntype ReturnGuidController() =\n    inherit ReturnController<Guid>(Guid.Empty)\n\ntype ReturnEnumController() =\n    inherit ReturnController<UriKind>(UriKind.Absolute)\n\ntype ReturnArrayIntController() =\n    inherit ReturnController<int array>([| 1; 2; 3 |])\n\ntype ReturnArrayEnumController() =\n    inherit ReturnController<UriKind array>([| System.UriKind.Absolute; System.UriKind.Relative |])\n\ntype ReturnListIntController() =\n    inherit ReturnController<int list>([ 1; 2; 3 ])\n\ntype ReturnSeqIntController() =\n    inherit ReturnController<int seq>([ 1; 2; 3 ] |> List.toSeq)\n\ntype ReturnObjectPointClassController() =\n    inherit ReturnController<Types.PointClass>(Types.PointClass(0, 0))\n\ntype ReturnFileDescriptionController() =\n    inherit ReturnController<Types.FileDescription>(Types.FileDescription(\"1.txt\", [| 1uy; 2uy; 3uy |]))\n\ntype ReturnStringDictionaryController() =\n    inherit ReturnController<Map<string, string>>(Map [ \"hello\", \"world\" ])\n\ntype ReturnObjectPointClassDictionaryController() =\n    inherit ReturnController<Map<string, Types.PointClass>>(Map [ \"point\", Types.PointClass(0, 0) ])\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Controllers/ReturnTextControllers.fs",
    "content": "namespace Swashbuckle.WebApi.Server.Controllers\n\nopen System.IO\nopen System.Text\nopen System.Threading.Tasks\nopen Microsoft.AspNetCore.Mvc\nopen Microsoft.AspNetCore.Mvc.Formatters\nopen Swagger.Internal\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype ReturnPlainController() =\n    [<HttpGet; Produces(\"text/plain\")>]\n    member this.Get() =\n        \"Hello world\" |> ActionResult<string>\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype ReturnCsvController() =\n    [<HttpGet; Produces(\"text/csv\")>]\n    member this.Get() =\n        \"Hello,world\" |> ActionResult<string>\n\n// CheckAcceptsPlainController and CheckAcceptsCsvController are tests for https://github.com/fsprojects/SwaggerProvider/pull/290\n//    to test that the generated 'Accept' headers contain the expected values\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype CheckAcceptsPlainController() =\n    inherit ControllerBase()\n\n    [<HttpGet; Produces(\"text/plain\")>]\n    member this.Get() =\n        if this.Request.Headers.Accept.Equals(\"text/plain\") then\n            \"Hello world\" |> ActionResult<string>\n        else\n            ActionResult<string>(UnsupportedMediaTypeResult())\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype CheckAcceptsCsvController() =\n    inherit ControllerBase()\n\n    [<HttpGet; Produces(\"text/csv\")>]\n    member this.Get() =\n        if this.Request.Headers.Accept.Equals(\"text/csv\") then\n            \"Hello,world\" |> ActionResult<string>\n        else\n            ActionResult<string>(UnsupportedMediaTypeResult())\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype ConsumesTextController() =\n    [<HttpPost; Consumes(\"text/plain\"); Produces(\"text/plain\")>]\n    member this.Post([<FromBody>] request: string) =\n        request |> ActionResult<string>\n\n// Simple CSV output formatter\n// This formatter assumes the controller returns a string (already CSV-formatted)\ntype CsvOutputFormatter() as this =\n    inherit TextOutputFormatter()\n\n    do\n        this.SupportedMediaTypes.Add(\"text/csv\")\n        this.SupportedEncodings.Add(Encoding.UTF8)\n        this.SupportedEncodings.Add(Encoding.Unicode)\n\n    override _.CanWriteType(t) =\n        // Accept string type only (for simplicity)\n        t = typeof<string>\n\n    override _.WriteResponseBodyAsync(context, encoding) =\n        let response = context.HttpContext.Response\n        let value = context.Object :?> string\n        let bytes = encoding.GetBytes(value)\n        response.Body.WriteAsync(bytes, 0, bytes.Length)\n\n// Text/plain input formatter for reading plain text request bodies\ntype TextPlainInputFormatter() as this =\n    inherit TextInputFormatter()\n\n    do\n        this.SupportedMediaTypes.Add(\"text/plain\")\n        this.SupportedEncodings.Add(Encoding.UTF8)\n        this.SupportedEncodings.Add(Encoding.Unicode)\n\n    override this.CanRead(context) =\n        base.CanRead(context) && context.ModelType = typeof<string>\n\n    override _.ReadRequestBodyAsync(context, encoding) =\n        task {\n            use reader = new StreamReader(context.HttpContext.Request.Body, encoding)\n            let! content = reader.ReadToEndAsync()\n            return InputFormatterResult.Success(content)\n        }\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Controllers/SpecialCasesControllers.fs",
    "content": "namespace Swashbuckle.WebApi.Server.Controllers\n\nopen Microsoft.AspNetCore.Mvc\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype MultiFormatController() =\n    inherit ControllerBase()\n\n    [<HttpGet>]\n    member _.Get() = \"0.0\"\n\n/// Controller that echoes a string path parameter, used to test that special\n/// characters (e.g. `$0`) in path parameter values are passed through correctly.\n[<Route(\"api/[controller]/{value}\")>]\n[<ApiController>]\ntype EchoPathController() =\n    inherit ControllerBase()\n\n    [<HttpGet; Produces(\"text/plain\")>]\n    member _.Get(value: string) = value\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Controllers/Types.fs",
    "content": "﻿module Types\n\nopen System.Runtime.Serialization\n\n[<DataContract>]\ntype PointClass(x: int, y: int) =\n    new() = PointClass(0, 0)\n\n    [<DataMember>]\n    member val X = x with get, set\n\n    [<DataMember>]\n    member val Y = y with get, set\n\n[<DataContract>]\ntype FileDescription(name: string, bytes: byte[]) =\n    new() = FileDescription(\"\", [||])\n\n    [<DataMember>]\n    member val Name = name with get, set\n\n    [<DataMember>]\n    member val Bytes = bytes with get, set\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Controllers/UpdateControllers.fs",
    "content": "﻿namespace Swashbuckle.WebApi.Server.Controllers\n\nopen System\nopen Microsoft.AspNetCore.Mvc\nopen System.Runtime.InteropServices\nopen Swagger.Internal\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype UpdateController<'a>(f: 'a -> 'a) =\n    inherit ControllerBase()\n\n    [<HttpGet; Consumes(MediaTypes.ApplicationJson); Produces(MediaTypes.ApplicationJson)>]\n    member this.Get([<FromQuery>] x) =\n        f x |> ActionResult<'a>\n\n    [<HttpPost; Consumes(MediaTypes.ApplicationJson); Produces(MediaTypes.ApplicationJson)>]\n    member this.Post x =\n        f x |> ActionResult<'a>\n\ntype UpdateBoolController() =\n    inherit UpdateController<bool>(not)\n\ntype UpdateInt32Controller() =\n    inherit UpdateController<int>((+) 1)\n\ntype UpdateInt64Controller() =\n    inherit UpdateController<int64>((+) 1L)\n\ntype UpdateFloatController() =\n    inherit UpdateController<float32>((+) 1.0f)\n\ntype UpdateDoubleController() =\n    inherit UpdateController<float>((+) 1.0)\n\ntype UpdateStringController() =\n    inherit UpdateController<string>((+) \"Hello, \")\n\ntype UpdateDateTimeController() =\n    inherit UpdateController<DateTime>(_.AddDays(1.0))\n\ntype UpdateGuidController() =\n    inherit UpdateController<Guid>(id)\n\ntype UpdateEnumController() =\n    inherit UpdateController<UriKind>(id)\n\ntype UpdateArrayIntController() =\n    inherit UpdateController<int[]>(Array.rev)\n\ntype UpdateArrayEnumController() =\n    inherit UpdateController<UriKind[]>(Array.rev)\n\ntype UpdateArrayGuidController() =\n    inherit UpdateController<Guid[]>(Array.rev)\n\ntype UpdateListIntController() =\n    inherit UpdateController<int list>(List.rev)\n\ntype UpdateSeqIntController() =\n    inherit UpdateController<int seq>(Seq.toList >> List.rev >> Seq.ofList)\n\ntype UpdateObjectPointClassController() =\n    inherit UpdateController<Types.PointClass>(fun p -> Types.PointClass(p.Y, p.X))\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype UpdateObjectFileDescriptionClassController() =\n    inherit ControllerBase()\n\n    [<HttpGet>]\n    member this.Get([<FromQuery>] x) =\n        Types.FileDescription(\"1.txt\", x) |> ActionResult<_>\n\n    [<HttpPost>]\n    member this.Post(x: Types.FileDescription) =\n        ActionResult<_>(x)\n\n[<Route(\"api/[controller]\")>]\n[<ApiController>]\ntype UpdateWithOptionalIntController() =\n    inherit ControllerBase()\n\n    [<HttpGet>]\n    member this.Get([<FromQuery>] x, [<FromQuery; Optional; DefaultParameterValue(1)>] y: int) =\n        x + y |> ActionResult<_>\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Controllers/ValuesController.fs",
    "content": "﻿namespace Swashbuckle.WebApi.Server.Controllers\n\n\n\n(*\n//[<Route(\"api/[controller]\")>]\n//[<ApiController>]\ntype ValuesController () =\n    inherit ControllerBase()\n\n    [<HttpGet>]\n    member this.Get() =\n        let values = [|\"value1\"; \"value2\"|]\n        ActionResult<string[]>(values)\n\n    [<HttpGet(\"{id}\")>]\n    member this.Get(id:int) =\n        let value = \"value\"\n        ActionResult<string>(value)\n\n    [<HttpPost>]\n    member this.Post([<FromBody>] value:string) =\n        ()\n\n    [<HttpPut(\"{id}\")>]\n    member this.Put(id:int, [<FromBody>] value:string ) =\n        ()\n\n    [<HttpDelete(\"{id}\")>]\n    member this.Delete(id:int) =\n        ()\n*)\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Program.fs",
    "content": "namespace Swashbuckle.WebApi.Server\n\nopen System\nopen Microsoft.AspNetCore\nopen Microsoft.AspNetCore.Hosting\n\nmodule Program =\n    let exitCode = 0\n\n    let CreateWebHostBuilder args =\n        WebHost.CreateDefaultBuilder(args).UseStartup<Startup>()\n\n    [<EntryPoint>]\n    let main args =\n        let webHost = CreateWebHostBuilder(args).Build()\n        let _ = webHost.RunAsync()\n\n        printfn \"Swagger UI is running on /swagger\"\n        printfn \"Send <something> to input stream to shut down.\"\n        Console.Read() |> ignore\n\n        printfn \"Stopping WebApi ...\"\n        webHost.StopAsync() |> Async.AwaitTask |> Async.RunSynchronously\n\n        exitCode\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Properties/launchSettings.json",
    "content": "{\n  \"$schema\": \"http://json.schemastore.org/launchsettings.json\",\n  \"iisSettings\": {\n    \"windowsAuthentication\": false,\n    \"anonymousAuthentication\": true,\n    \"iisExpress\": {\n      \"applicationUrl\": \"http://localhost:39524\",\n      \"sslPort\": 44359\n    }\n  },\n  \"profiles\": {\n    \"IIS Express\": {\n      \"commandName\": \"IISExpress\",\n      \"launchBrowser\": true,\n      \"launchUrl\": \"swagger\",\n      \"environmentVariables\": {\n        \"ASPNETCORE_ENVIRONMENT\": \"Development\"\n      }\n    },\n    \"Swashbuckle.WebApi.Server\": {\n      \"commandName\": \"Project\",\n      \"launchBrowser\": true,\n      \"applicationUrl\": \"https://localhost:5001;http://localhost:5000\",\n      \"environmentVariables\": {\n        \"ASPNETCORE_ENVIRONMENT\": \"Development\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Startup.fs",
    "content": "namespace Swashbuckle.WebApi.Server\n\n\nopen Microsoft.AspNetCore.Builder\nopen Microsoft.AspNetCore.Hosting\nopen Microsoft.Extensions.Configuration\nopen Microsoft.Extensions.DependencyInjection\nopen Microsoft.OpenApi\nopen System.Text.Json.Serialization\nopen Swashbuckle.WebApi.Server.Controllers\n\ntype Startup private () =\n    new(configuration: IConfiguration) as this =\n        Startup()\n        then this.Configuration <- configuration\n\n    // This method gets called by the runtime. Use this method to add services to the container.\n    member this.ConfigureServices(services: IServiceCollection) =\n        // Add framework services.\n\n        services\n            .AddControllersWithViews()\n            .AddJsonOptions(fun options ->\n                let converters = options.JsonSerializerOptions.Converters\n                converters.Add(JsonFSharpConverter())\n                converters.Add(JsonStringEnumConverter()))\n            .AddMvcOptions(fun options ->\n                options.OutputFormatters.Add(CsvOutputFormatter())\n                options.InputFormatters.Add(TextPlainInputFormatter()))\n        |> ignore\n\n        // Register the Swagger & OpenApi services\n        services.AddSwaggerGen(fun c ->\n            c.SwaggerDoc(\"v1\", OpenApiInfo(Title = \"My API\", Version = \"v1\"))\n            c.OperationFilter<BinaryContentFilter>())\n        |> ignore\n\n    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.\n    member this.Configure(app: IApplicationBuilder, _: IWebHostEnvironment) =\n        app.UseDeveloperExceptionPage() |> ignore\n        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.\n        //app.UseHsts() |> ignore\n\n        // Register the Swagger generator and the Swagger UI middlewares\n        app.UseSwagger(fun c ->\n            c.RouteTemplate <- \"/swagger/{documentName}/swagger.json\"\n            c.OpenApiVersion <- OpenApiSpecVersion.OpenApi2_0)\n        |> ignore\n\n        app.UseSwagger(fun c ->\n            c.RouteTemplate <- \"/swagger/{documentName}/openapi.json\"\n            c.OpenApiVersion <- OpenApiSpecVersion.OpenApi3_0)\n        |> ignore\n\n        app.UseSwaggerUI(fun c ->\n            c.SwaggerEndpoint(\"/swagger/v1/swagger.json\", \"My Swagger API v1\")\n            c.SwaggerEndpoint(\"/swagger/v1/openapi.json\", \"My OpenAPI API v1\"))\n        |> ignore\n\n        //app.UseHttpsRedirection() |> ignore\n        app.UseRouting() |> ignore\n\n        app.UseEndpoints(fun endpoints -> endpoints.MapControllers() |> ignore)\n        |> ignore\n\n    member val Configuration: IConfiguration = null with get, set\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/Swashbuckle.WebApi.Server.fsproj",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n  <PropertyGroup>\n    <TargetFramework>net10.0</TargetFramework>\n    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>\n    <GenerateDocumentationFile>true</GenerateDocumentationFile>\n    <RootNamespace>Swashbuckle.WebApi.Server</RootNamespace>\n    <AllowMissingPrunePackageData>true</AllowMissingPrunePackageData>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"Controllers\\Types.fs\" />\n    <Compile Include=\"Controllers\\ReturnControllers.fs\" />\n    <Compile Include=\"Controllers\\ReturnTextControllers.fs\" />\n    <Compile Include=\"Controllers\\UpdateControllers.fs\" />\n    <Compile Include=\"Controllers\\ResourceControllers.fs\" />\n    <Compile Include=\"Controllers\\ValuesController.fs\" />\n    <Compile Include=\"Controllers\\FileController.fs\" />\n    <Compile Include=\"Controllers\\NoContentControllers.fs\" />\n    <Compile Include=\"Controllers\\SpecialCasesControllers.fs\" />\n    <Compile Include=\"Startup.fs\" />\n    <Compile Include=\"Program.fs\" />\n    <None Include=\"paket.references\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\src\\SwaggerProvider.Runtime\\SwaggerProvider.Runtime.fsproj\" />\n  </ItemGroup>\n  <Import Project=\"..\\..\\.paket\\Paket.Restore.targets\" />\n</Project>\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<configuration>\n  <runtime>\n    <gcServer enabled=\"true\"/>\n  </runtime>\n</configuration>"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/appsettings.Development.json",
    "content": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Debug\",\n      \"System\": \"Information\",\n      \"Microsoft\": \"Information\"\n    }\n  }\n}\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/appsettings.json",
    "content": "{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Warning\"\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n"
  },
  {
    "path": "tests/Swashbuckle.WebApi.Server/paket.references",
    "content": "group Server\n    FSharp.Core\n    Microsoft.AspNetCore\n    Microsoft.AspNetCore.Mvc\n    Microsoft.AspNetCore.HttpsPolicy\n    Microsoft.OpenApi\n    Swashbuckle.AspNetCore\n    System.Text.Json\n"
  },
  {
    "path": "tests/test.fsx",
    "content": "#I \"../src/SwaggerProvider.Runtime/bin/Release/netstandard2.0\"\n#I \"../src/SwaggerProvider.Runtime/bin/Release/typeproviders/fsharp41/netstandard2.0\"\n#r \"SwaggerProvider.Runtime.dll\"\n#r \"SwaggerProvider.DesignTime.dll\"\n\nopen SwaggerProvider\n\n[<Literal>]\nlet Schema = \"https://petstore.swagger.io/v2/swagger.json\"\n\ntype TP = SwaggerClientProvider<Schema>\n\n//let client = TP.Client()\n"
  }
]