pax_global_header00006660000000000000000000000064147345274040014524gustar00rootroot0000000000000052 comment=f3a70292cf8c52a4f36366c48bbd94a97d20f5e8 joostlek-python-mealie-f3a7029/000077500000000000000000000000001473452740400164645ustar00rootroot00000000000000joostlek-python-mealie-f3a7029/.editorconfig000066400000000000000000000002741473452740400211440ustar00rootroot00000000000000root = true [*] charset = utf-8 end_of_line = lf indent_style = space insert_final_newline = true trim_trailing_whitespace = true indent_size = 4 [*.md] trim_trailing_whitespace = false joostlek-python-mealie-f3a7029/.gitattributes000066400000000000000000000000511473452740400213530ustar00rootroot00000000000000* text eol=lf *.py whitespace=error joostlek-python-mealie-f3a7029/.github/000077500000000000000000000000001473452740400200245ustar00rootroot00000000000000joostlek-python-mealie-f3a7029/.github/CODEOWNERS000066400000000000000000000000241473452740400214130ustar00rootroot00000000000000.github/* @joostlek joostlek-python-mealie-f3a7029/.github/CODE_OF_CONDUCT.md000066400000000000000000000062141473452740400226260ustar00rootroot00000000000000# Code of conduct ## Our pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our standards Examples of behavior that contributes to creating a positive environment include: - Using welcoming and inclusive language - Being respectful of differing viewpoints and experiences - Gracefully accepting constructive criticism - Focusing on what is best for the community - Showing empathy towards other community members Examples of unacceptable behavior by participants include: - The use of sexualized language or imagery and unwelcome sexual attention or advances - Trolling, insulting/derogatory comments, and personal or political attacks - Public or private harassment - Publishing others' private information, such as a physical or electronic address, without explicit permission - Other conduct which could reasonably be considered inappropriate in a professional setting ## Our responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project lead at frenck@addons.community. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project lead is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] [homepage]: http://contributor-covenant.org [version]: http://contributor-covenant.org/version/1/4/ joostlek-python-mealie-f3a7029/.github/CONTRIBUTING.md000066400000000000000000000022151473452740400222550ustar00rootroot00000000000000# Contributing When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change. Please note we have a code of conduct, please follow it in all your interactions with the project. ## Issues and feature requests You've found a bug in the source code, a mistake in the documentation or maybe you'd like a new feature? You can help us by submitting an issue to our [GitHub Repository][github]. Before you create an issue, make sure you search the archive, maybe your question was already answered. Even better: You could submit a pull request with a fix / new feature! ## Pull request process 1. Search our repository for open or closed [pull requests][prs] that relates to your submission. You don't want to duplicate effort. 2. You may merge the pull request in once you have the sign-off of two other developers, or if you do not have permission to do that, you may request the second reviewer to merge it for you. [github]: https://github.com/joostlek/python-mealie/issues [prs]: https://github.com/joostlek/python-mealie/pulls joostlek-python-mealie-f3a7029/.github/FUNDING.yaml000066400000000000000000000000311473452740400217740ustar00rootroot00000000000000--- github: - joostlek joostlek-python-mealie-f3a7029/.github/ISSUE_TEMPLATE.md000066400000000000000000000005141473452740400225310ustar00rootroot00000000000000# Problem/Motivation > (Why the issue was filed) ## Expected behavior > (What you expected to happen) ## Actual behavior > (What actually happened) ## Steps to reproduce > (How can someone else make/see it happen) ## Proposed changes > (If you have a proposed change, workaround or fix, > describe the rationale behind it) joostlek-python-mealie-f3a7029/.github/LICENSE.md000066400000000000000000000020651473452740400214330ustar00rootroot00000000000000# MIT License Copyright (c) 2024 Joost Lekkerkerker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. joostlek-python-mealie-f3a7029/.github/PULL_REQUEST_TEMPLATE.md000066400000000000000000000003761473452740400236330ustar00rootroot00000000000000# Proposed Changes > (Describe the changes and rationale behind them) ## Related Issues > ([Github link][autolink-references] to related issues or pull requests) [autolink-references]: https://help.github.com/articles/autolinked-references-and-urls/ joostlek-python-mealie-f3a7029/.github/labels.yml000066400000000000000000000054331473452740400220160ustar00rootroot00000000000000--- - name: "breaking-change" color: ee0701 description: "A breaking change for existing users." - name: "bugfix" color: ee0701 description: "Inconsistencies or issues which will cause a problem for users or implementers." - name: "documentation" color: 0052cc description: "Solely about the documentation of the project." - name: "enhancement" color: 1d76db description: "Enhancement of the code, not introducing new features." - name: "refactor" color: 1d76db description: "Improvement of existing code, not introducing new features." - name: "performance" color: 1d76db description: "Improving performance, not introducing new features." - name: "new-feature" color: 0e8a16 description: "New features or options." - name: "maintenance" color: 2af79e description: "Generic maintenance tasks." - name: "ci" color: 1d76db description: "Work that improves the continue integration." - name: "dependencies" color: 1d76db description: "Upgrade or downgrade of project dependencies." - name: "in-progress" color: fbca04 description: "Issue is currently being resolved by a developer." - name: "stale" color: fef2c0 description: "There has not been activity on this issue or PR for quite some time." - name: "no-stale" color: fef2c0 description: "This issue or PR is exempted from the stable bot." - name: "security" color: ee0701 description: "Marks a security issue that needs to be resolved asap." - name: "incomplete" color: fef2c0 description: "Marks a PR or issue that is missing information." - name: "invalid" color: fef2c0 description: "Marks a PR or issue that is missing information." - name: "beginner-friendly" color: 0e8a16 description: "Good first issue for people wanting to contribute to the project." - name: "help-wanted" color: 0e8a16 description: "We need some extra helping hands or expertise in order to resolve this." - name: "hacktoberfest" description: "Issues/PRs are participating in the Hacktoberfest." color: fbca04 - name: "hacktoberfest-accepted" description: "Issues/PRs are participating in the Hacktoberfest." color: fbca04 - name: "priority-critical" color: ee0701 description: "This should be dealt with ASAP. Not fixing this issue would be a serious error." - name: "priority-high" color: b60205 description: "After critical issues are fixed, these should be dealt with before any further issues." - name: "priority-medium" color: 0e8a16 description: "This issue may be useful, and needs some attention." - name: "priority-low" color: e4ea8a description: "Nice addition, maybe... someday..." - name: "major" color: b60205 description: "This PR causes a major version bump in the version number." - name: "minor" color: 0e8a16 description: "This PR causes a minor version bump in the version number." joostlek-python-mealie-f3a7029/.github/release-drafter.yml000066400000000000000000000020471473452740400236170ustar00rootroot00000000000000--- name-template: "v$RESOLVED_VERSION" tag-template: "v$RESOLVED_VERSION" change-template: "- $TITLE @$AUTHOR (#$NUMBER)" sort-direction: ascending categories: - title: "๐Ÿšจ Breaking changes" labels: - "breaking-change" - title: "โœจ New features" labels: - "new-feature" - title: "๐Ÿ› Bug fixes" labels: - "bugfix" - title: "๐Ÿš€ Enhancements" labels: - "enhancement" - "refactor" - "performance" - title: "๐Ÿงฐ Maintenance" labels: - "maintenance" - "ci" - title: "๐Ÿ“š Documentation" labels: - "documentation" - title: "โฌ†๏ธ Dependency updates" labels: - "dependencies" version-resolver: major: labels: - "major" - "breaking-change" minor: labels: - "minor" - "new-feature" patch: labels: - "bugfix" - "chore" - "ci" - "dependencies" - "documentation" - "enhancement" - "performance" - "refactor" default: patch template: | ## Whatโ€™s changed $CHANGES joostlek-python-mealie-f3a7029/.github/renovate.json000066400000000000000000000021611473452740400225420ustar00rootroot00000000000000{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "schedule": ["before 2am"], "rebaseWhen": "behind-base-branch", "dependencyDashboard": true, "labels": ["dependencies", "no-stale"], "lockFileMaintenance": { "enabled": true, "automerge": true }, "commitMessagePrefix": "โฌ†๏ธ", "packageRules": [ { "matchManagers": ["poetry"], "addLabels": ["python"] }, { "matchManagers": ["poetry"], "matchDepTypes": ["dev"], "rangeStrategy": "pin" }, { "matchManagers": ["poetry"], "matchUpdateTypes": ["minor", "patch"], "automerge": true }, { "matchManagers": ["npm", "nvm"], "addLabels": ["javascript"], "rangeStrategy": "pin" }, { "matchManagers": ["npm", "nvm"], "matchUpdateTypes": ["minor", "patch"], "automerge": true }, { "matchManagers": ["github-actions"], "addLabels": ["github_actions"], "rangeStrategy": "pin" }, { "matchManagers": ["github-actions"], "matchUpdateTypes": ["minor", "patch"], "automerge": true } ] } joostlek-python-mealie-f3a7029/.github/workflows/000077500000000000000000000000001473452740400220615ustar00rootroot00000000000000joostlek-python-mealie-f3a7029/.github/workflows/labels.yaml000066400000000000000000000007361473452740400242150ustar00rootroot00000000000000--- name: Sync labels # yamllint disable-line rule:truthy on: push: branches: - main paths: - .github/labels.yml workflow_dispatch: jobs: labels: name: โ™ป๏ธ Sync labels runs-on: ubuntu-latest steps: - name: โคต๏ธ Check out code from GitHub uses: actions/checkout@v4.2.2 - name: ๐Ÿš€ Run Label Syncer uses: micnncim/action-label-syncer@v1.3.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} joostlek-python-mealie-f3a7029/.github/workflows/linting.yaml000066400000000000000000000146011473452740400244130ustar00rootroot00000000000000--- name: Linting # yamllint disable-line rule:truthy on: push: branches: - main pull_request: workflow_dispatch: env: DEFAULT_PYTHON: "3.11" jobs: codespell: name: codespell runs-on: ubuntu-latest steps: - name: โคต๏ธ Check out code from GitHub uses: actions/checkout@v4.2.2 - name: ๐Ÿ— Set up Poetry run: pipx install poetry - name: ๐Ÿ— Set up Python ${{ env.DEFAULT_PYTHON }} id: python uses: actions/setup-python@v5.3.0 with: python-version: ${{ env.DEFAULT_PYTHON }} cache: "poetry" - name: ๐Ÿ— Install workflow dependencies run: | poetry config virtualenvs.create true poetry config virtualenvs.in-project true - name: ๐Ÿ— Install Python dependencies run: poetry install --no-interaction - name: ๐Ÿš€ Check code for common misspellings run: poetry run pre-commit run codespell --all-files ruff: name: Ruff runs-on: ubuntu-latest steps: - name: โคต๏ธ Check out code from GitHub uses: actions/checkout@v4.2.2 - name: ๐Ÿ— Set up Poetry run: pipx install poetry - name: ๐Ÿ— Set up Python ${{ env.DEFAULT_PYTHON }} id: python uses: actions/setup-python@v5.3.0 with: python-version: ${{ env.DEFAULT_PYTHON }} cache: "poetry" - name: ๐Ÿ— Install workflow dependencies run: | poetry config virtualenvs.create true poetry config virtualenvs.in-project true - name: ๐Ÿ— Install Python dependencies run: poetry install --no-interaction - name: ๐Ÿš€ Run ruff linter run: poetry run ruff check --output-format=github . - name: ๐Ÿš€ Run ruff formatter run: poetry run ruff format --check . pre-commit-hooks: name: pre-commit-hooks runs-on: ubuntu-latest steps: - name: โคต๏ธ Check out code from GitHub uses: actions/checkout@v4.2.2 - name: ๐Ÿ— Set up Poetry run: pipx install poetry - name: ๐Ÿ— Set up Python ${{ env.DEFAULT_PYTHON }} id: python uses: actions/setup-python@v5.3.0 with: python-version: ${{ env.DEFAULT_PYTHON }} cache: "poetry" - name: ๐Ÿ— Install workflow dependencies run: | poetry config virtualenvs.create true poetry config virtualenvs.in-project true - name: ๐Ÿ— Install Python dependencies run: poetry install --no-interaction - name: ๐Ÿš€ Check Python AST run: poetry run pre-commit run check-ast --all-files - name: ๐Ÿš€ Check for case conflicts run: poetry run pre-commit run check-case-conflict --all-files - name: ๐Ÿš€ Check docstring is first run: poetry run pre-commit run check-docstring-first --all-files - name: ๐Ÿš€ Check that executables have shebangs run: poetry run pre-commit run check-executables-have-shebangs --all-files - name: ๐Ÿš€ Check JSON files run: poetry run pre-commit run check-json --all-files - name: ๐Ÿš€ Check for merge conflicts run: poetry run pre-commit run check-merge-conflict --all-files - name: ๐Ÿš€ Check for broken symlinks run: poetry run pre-commit run check-symlinks --all-files - name: ๐Ÿš€ Check TOML files run: poetry run pre-commit run check-toml --all-files - name: ๐Ÿš€ Check XML files run: poetry run pre-commit run check-xml --all-files - name: ๐Ÿš€ Check YAML files run: poetry run pre-commit run check-yaml --all-files - name: ๐Ÿš€ Detect Private Keys run: poetry run pre-commit run detect-private-key --all-files - name: ๐Ÿš€ Check End of Files run: poetry run pre-commit run end-of-file-fixer --all-files - name: ๐Ÿš€ Trim Trailing Whitespace run: poetry run pre-commit run trailing-whitespace --all-files pylint: name: pylint runs-on: ubuntu-latest steps: - name: โคต๏ธ Check out code from GitHub uses: actions/checkout@v4.2.2 - name: ๐Ÿ— Set up Poetry run: pipx install poetry - name: ๐Ÿ— Set up Python ${{ env.DEFAULT_PYTHON }} id: python uses: actions/setup-python@v5.3.0 with: python-version: ${{ env.DEFAULT_PYTHON }} cache: "poetry" - name: ๐Ÿ— Install workflow dependencies run: | poetry config virtualenvs.create true poetry config virtualenvs.in-project true - name: ๐Ÿ— Install Python dependencies run: poetry install --no-interaction - name: ๐Ÿš€ Run pylint run: poetry run pre-commit run pylint --all-files yamllint: name: yamllint runs-on: ubuntu-latest steps: - name: โคต๏ธ Check out code from GitHub uses: actions/checkout@v4.2.2 - name: ๐Ÿ— Set up Poetry run: pipx install poetry - name: ๐Ÿ— Set up Python ${{ env.DEFAULT_PYTHON }} id: python uses: actions/setup-python@v5.3.0 with: python-version: ${{ env.DEFAULT_PYTHON }} cache: "poetry" - name: ๐Ÿ— Install workflow dependencies run: | poetry config virtualenvs.create true poetry config virtualenvs.in-project true - name: ๐Ÿ— Install Python dependencies run: poetry install --no-interaction - name: ๐Ÿš€ Run yamllint run: poetry run yamllint . prettier: name: Prettier runs-on: ubuntu-latest steps: - name: โคต๏ธ Check out code from GitHub uses: actions/checkout@v4.2.2 - name: ๐Ÿ— Set up Poetry run: pipx install poetry - name: ๐Ÿ— Set up Python ${{ env.DEFAULT_PYTHON }} id: python uses: actions/setup-python@v5.3.0 with: python-version: ${{ env.DEFAULT_PYTHON }} cache: "poetry" - name: ๐Ÿ— Install workflow dependencies run: | poetry config virtualenvs.create true poetry config virtualenvs.in-project true - name: ๐Ÿ— Install Python dependencies run: poetry install --no-interaction - name: ๐Ÿ— Set up Node.js uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4 with: node-version-file: ".nvmrc" cache: "npm" - name: ๐Ÿ— Install NPM dependencies run: npm install - name: ๐Ÿš€ Run prettier run: poetry run pre-commit run prettier --all-files joostlek-python-mealie-f3a7029/.github/workflows/lock.yaml000066400000000000000000000006651473452740400237040ustar00rootroot00000000000000--- name: Lock # yamllint disable-line rule:truthy on: schedule: - cron: "0 9 * * *" workflow_dispatch: jobs: lock: name: ๐Ÿ”’ Lock closed issues and PRs runs-on: ubuntu-latest steps: - uses: dessant/lock-threads@v5.0.1 with: github-token: ${{ github.token }} issue-inactive-days: "30" issue-lock-reason: "" pr-inactive-days: "1" pr-lock-reason: "" joostlek-python-mealie-f3a7029/.github/workflows/pr-labels.yaml000066400000000000000000000013021473452740400246220ustar00rootroot00000000000000--- name: PR Labels # yamllint disable-line rule:truthy on: pull_request_target: types: - opened - labeled - unlabeled - synchronize workflow_call: jobs: pr_labels: name: Verify runs-on: ubuntu-latest steps: - name: ๐Ÿท Verify PR has a valid label uses: jesusvasquez333/verify-pr-label-action@v1.4.0 with: pull-request-number: "${{ github.event.pull_request.number }}" github-token: "${{ secrets.GITHUB_TOKEN }}" valid-labels: >- breaking-change, bugfix, documentation, enhancement, refactor, performance, new-feature, maintenance, ci, dependencies disable-reviews: true joostlek-python-mealie-f3a7029/.github/workflows/release-drafter.yaml000066400000000000000000000005741473452740400260200ustar00rootroot00000000000000--- name: Release Drafter # yamllint disable-line rule:truthy on: push: branches: - main workflow_dispatch: jobs: update_release_draft: name: โœ๏ธ Draft release runs-on: ubuntu-latest steps: - name: ๐Ÿš€ Run Release Drafter uses: release-drafter/release-drafter@v6.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} joostlek-python-mealie-f3a7029/.github/workflows/release.yaml000066400000000000000000000031611473452740400243660ustar00rootroot00000000000000--- name: Release # yamllint disable-line rule:truthy on: release: types: - published env: DEFAULT_PYTHON: "3.11" jobs: release: name: Releasing to PyPi runs-on: ubuntu-latest environment: name: release url: https://pypi.org/p/python-homeassistant-analytics permissions: contents: write id-token: write steps: - name: โคต๏ธ Check out code from GitHub uses: actions/checkout@v4.2.2 - name: ๐Ÿ— Set up Poetry run: pipx install poetry - name: ๐Ÿ— Set up Python ${{ env.DEFAULT_PYTHON }} id: python uses: actions/setup-python@v5.3.0 with: python-version: ${{ env.DEFAULT_PYTHON }} cache: "poetry" - name: ๐Ÿ— Install workflow dependencies run: | poetry config virtualenvs.create true poetry config virtualenvs.in-project true - name: ๐Ÿ— Install dependencies run: poetry install --no-interaction - name: ๐Ÿ— Set package version run: | version="${{ github.event.release.tag_name }}" version="${version,,}" version="${version#v}" poetry version --no-interaction "${version}" - name: ๐Ÿ— Build package run: poetry build --no-interaction - name: ๐Ÿš€ Publish to PyPi uses: pypa/gh-action-pypi-publish@v1.12.3 with: verbose: true print-hash: true - name: โœ๏ธ Sign published artifacts uses: sigstore/gh-action-sigstore-python@v3.0.0 with: inputs: ./dist/*.tar.gz ./dist/*.whl release-signing-artifacts: true joostlek-python-mealie-f3a7029/.github/workflows/stale.yaml000066400000000000000000000025601473452740400240600ustar00rootroot00000000000000--- name: Stale # yamllint disable-line rule:truthy on: schedule: - cron: "0 8 * * *" workflow_dispatch: jobs: stale: name: ๐Ÿงน Clean up stale issues and PRs runs-on: ubuntu-latest steps: - name: ๐Ÿš€ Run stale uses: actions/stale@v9.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-stale: 30 days-before-close: 7 remove-stale-when-updated: true stale-issue-label: "stale" exempt-issue-labels: "no-stale,help-wanted" stale-issue-message: > There hasn't been any activity on this issue recently, so we clean up some of the older and inactive issues. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by leaving a comment ๐Ÿ‘ This issue has now been marked as stale and will be closed if no further activity occurs. Thanks! stale-pr-label: "stale" exempt-pr-labels: "no-stale" stale-pr-message: > There hasn't been any activity on this pull request recently. This pull request has been automatically marked as stale because of that and will be closed if no further activity occurs within 7 days. Thank you for your contributions. joostlek-python-mealie-f3a7029/.github/workflows/tests.yaml000066400000000000000000000050751473452740400241160ustar00rootroot00000000000000--- name: Testing # yamllint disable-line rule:truthy on: push: branches: - main pull_request: workflow_dispatch: env: DEFAULT_PYTHON: "3.11" jobs: pytest: name: Python ${{ matrix.python }} runs-on: ubuntu-latest strategy: matrix: python: ["3.11", "3.12"] steps: - name: โคต๏ธ Check out code from GitHub uses: actions/checkout@v4.2.2 - name: ๐Ÿ— Set up Poetry run: pipx install poetry - name: ๐Ÿ— Set up Python ${{ matrix.python }} id: python uses: actions/setup-python@v5.3.0 with: python-version: ${{ matrix.python }} cache: "poetry" - name: ๐Ÿ— Install workflow dependencies run: | poetry config virtualenvs.create true poetry config virtualenvs.in-project true - name: ๐Ÿ— Install dependencies run: poetry install --no-interaction - name: ๐Ÿš€ Run pytest run: poetry run pytest --cov src tests - name: โฌ†๏ธ Upload coverage artifact uses: actions/upload-artifact@v4.5.0 with: include-hidden-files: true name: coverage-${{ matrix.python }} path: .coverage coverage: runs-on: ubuntu-latest needs: pytest steps: - name: โคต๏ธ Check out code from GitHub uses: actions/checkout@v4.2.2 with: fetch-depth: 0 - name: โฌ‡๏ธ Download coverage data uses: actions/download-artifact@v4.1.8 - name: ๐Ÿ— Set up Poetry run: pipx install poetry - name: ๐Ÿ— Set up Python ${{ env.DEFAULT_PYTHON }} id: python uses: actions/setup-python@v5.3.0 with: python-version: ${{ env.DEFAULT_PYTHON }} cache: "poetry" - name: ๐Ÿ— Install workflow dependencies run: | poetry config virtualenvs.create true poetry config virtualenvs.in-project true - name: ๐Ÿ— Install dependencies run: poetry install --no-interaction - name: ๐Ÿš€ Process coverage results run: | poetry run coverage combine coverage*/.coverage* poetry run coverage xml -i - name: ๐Ÿš€ Upload coverage report uses: codecov/codecov-action@v5.1.2 with: fail_ci_if_error: true token: ${{ secrets.CODECOV_TOKEN }} - name: SonarCloud Scan if: github.event.pull_request.head.repo.fork == false uses: SonarSource/sonarcloud-github-action@v4.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} joostlek-python-mealie-f3a7029/.github/workflows/typing.yaml000066400000000000000000000016151473452740400242620ustar00rootroot00000000000000--- name: Typing # yamllint disable-line rule:truthy on: push: branches: - main pull_request: workflow_dispatch: env: DEFAULT_PYTHON: "3.11" jobs: mypy: name: mypy runs-on: ubuntu-latest steps: - name: โคต๏ธ Check out code from GitHub uses: actions/checkout@v4.2.2 - name: ๐Ÿ— Set up Poetry run: pipx install poetry - name: ๐Ÿ— Set up Python ${{ env.DEFAULT_PYTHON }} id: python uses: actions/setup-python@v5.3.0 with: python-version: ${{ env.DEFAULT_PYTHON }} cache: "poetry" - name: ๐Ÿ— Install workflow dependencies run: | poetry config virtualenvs.create true poetry config virtualenvs.in-project true - name: ๐Ÿ— Install dependencies run: poetry install --no-interaction - name: ๐Ÿš€ Run mypy run: poetry run mypy src tests joostlek-python-mealie-f3a7029/.gitignore000066400000000000000000000027011473452740400204540ustar00rootroot00000000000000# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # OSX useful to ignore *.DS_Store .AppleDouble .LSOverride # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk # C extensions *.so # Distribution / packaging .Python env/ build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ *.egg-info/ .installed.cfg *.egg # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *,cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log # Sphinx documentation docs/_build/ # pyenv .python-version # virtualenv .venv venv/ ENV/ # mypy .mypy_cache/ # ruff .ruff_cache # Visual Studio Code .vscode # IntelliJ Idea family of suites .idea *.iml ## File-based project format: *.ipr *.iws ## mpeltonen/sbt-idea plugin .idea_modules/ # PyBuilder target/ # Cookiecutter output/ python_boilerplate/ # Node node_modules/ # Deepcode AI .dccache joostlek-python-mealie-f3a7029/.nvmrc000066400000000000000000000000101473452740400176010ustar00rootroot0000000000000022.12.0 joostlek-python-mealie-f3a7029/.pre-commit-config.yaml000066400000000000000000000102061473452740400227440ustar00rootroot00000000000000--- repos: - repo: local hooks: - id: ruff-check name: ๐Ÿถ Ruff Linter language: system types: [python] entry: poetry run ruff check --fix require_serial: true stages: [commit, push, manual] - id: ruff-format name: ๐Ÿถ Ruff Formatter language: system types: [python] entry: poetry run ruff format require_serial: true stages: [commit, push, manual] - id: check-ast name: ๐Ÿ Check Python AST language: system types: [python] entry: poetry run check-ast - id: check-case-conflict name: ๐Ÿ”  Check for case conflicts language: system entry: poetry run check-case-conflict - id: check-docstring-first name: โ„น๏ธ Check docstring is first language: system types: [python] entry: poetry run check-docstring-first - id: check-executables-have-shebangs name: ๐Ÿง Check that executables have shebangs language: system types: [text, executable] entry: poetry run check-executables-have-shebangs stages: [commit, push, manual] - id: check-json name: ๏ฝ› Check JSON files language: system types: [json] entry: poetry run check-json - id: check-merge-conflict name: ๐Ÿ’ฅ Check for merge conflicts language: system types: [text] entry: poetry run check-merge-conflict - id: check-symlinks name: ๐Ÿ”— Check for broken symlinks language: system types: [symlink] entry: poetry run check-symlinks - id: check-toml name: โœ… Check TOML files language: system types: [toml] entry: poetry run check-toml - id: check-xml name: โœ… Check XML files entry: check-xml language: system types: [xml] - id: check-yaml name: โœ… Check YAML files language: system types: [yaml] entry: poetry run check-yaml - id: codespell name: โœ… Check code for common misspellings language: system types: [text] exclude: ^(poetry\.lock)|(tests\/.*\.(json|ambr))$ entry: poetry run codespell args: - --ignore-words-list=fo,incomfort,nam,bloc,ue,get's - id: detect-private-key name: ๐Ÿ•ต๏ธ Detect Private Keys language: system types: [text] entry: poetry run detect-private-key - id: end-of-file-fixer name: โฎ Fix End of Files language: system types: [text] entry: poetry run end-of-file-fixer stages: [commit, push, manual] - id: mypy name: ๐Ÿ†Ž Static type checking using mypy language: system types: [python] entry: poetry run mypy require_serial: true - id: no-commit-to-branch name: ๐Ÿ›‘ Don't commit to main branch language: system entry: poetry run no-commit-to-branch pass_filenames: false always_run: true args: - --branch=main - id: poetry name: ๐Ÿ“œ Check pyproject with Poetry language: system entry: poetry check pass_filenames: false always_run: true - id: prettier name: ๐Ÿ’„ Ensuring files are prettier language: system types: [yaml, json, markdown] entry: npm run prettier pass_filenames: false - id: pylint name: ๐ŸŒŸ Starring code with pylint language: system types: [python] entry: poetry run pylint - id: pytest name: ๐Ÿงช Running tests and test coverage with pytest language: system types: [python] entry: poetry run pytest pass_filenames: false - id: trailing-whitespace name: โœ„ Trim Trailing Whitespace language: system types: [text] entry: poetry run trailing-whitespace-fixer stages: [commit, push, manual] - id: yamllint name: ๐ŸŽ— Check YAML files with yamllint language: system types: [yaml] entry: poetry run yamllint joostlek-python-mealie-f3a7029/.prettierignore000066400000000000000000000000131473452740400215210ustar00rootroot00000000000000.gitignore joostlek-python-mealie-f3a7029/.yamllint000066400000000000000000000024001473452740400203120ustar00rootroot00000000000000--- ignore: - .venv rules: braces: level: error min-spaces-inside: 0 max-spaces-inside: 1 min-spaces-inside-empty: -1 max-spaces-inside-empty: -1 brackets: level: error min-spaces-inside: 0 max-spaces-inside: 0 min-spaces-inside-empty: -1 max-spaces-inside-empty: -1 colons: level: error max-spaces-before: 0 max-spaces-after: 1 commas: level: error max-spaces-before: 0 min-spaces-after: 1 max-spaces-after: 1 comments: level: error require-starting-space: true min-spaces-from-content: 1 comments-indentation: level: error document-end: level: error present: false document-start: level: error present: true empty-lines: level: error max: 1 max-start: 0 max-end: 1 hyphens: level: error max-spaces-after: 1 indentation: level: error spaces: 2 indent-sequences: true check-multi-line-strings: false key-duplicates: level: error line-length: level: warning max: 120 allow-non-breakable-words: true allow-non-breakable-inline-mappings: true new-line-at-end-of-file: level: error new-lines: level: error type: unix trailing-spaces: level: error truthy: level: error joostlek-python-mealie-f3a7029/LICENSE.md000066400000000000000000000020651473452740400200730ustar00rootroot00000000000000# MIT License Copyright (c) 2024 Joost Lekkerkerker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. joostlek-python-mealie-f3a7029/README.md000066400000000000000000000113061473452740400177440ustar00rootroot00000000000000# Python: Mealie [![GitHub Release][releases-shield]][releases] [![Python Versions][python-versions-shield]][pypi] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] [![License][license-shield]](LICENSE.md) [![Build Status][build-shield]][build] [![Code Coverage][codecov-shield]][codecov] [![Code Smells][code-smells]][sonarcloud] Asynchronous Python client for Mealie. ## About This package allows you to fetch data from your Mealie instance. ## Installation ```bash pip install aiomealie ``` ## Changelog & Releases This repository keeps a change log using [GitHub's releases][releases] functionality. The format of the log is based on [Keep a Changelog][keepchangelog]. Releases are based on [Semantic Versioning][semver], and use the format of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented based on the following: - ``MAJOR``: Incompatible or major changes. - ``MINOR``: Backwards-compatible new features and enhancements. - ``PATCH``: Backwards-compatible bugfixes and package updates. ## Contributing This is an active open-source project. We are always open to people who want to use the code or contribute to it. We've set up a separate document for our [contribution guidelines](.github/CONTRIBUTING.md). Thank you for being involved! :heart_eyes: ## Setting up development environment This Python project is fully managed using the [Poetry][poetry] dependency manager. But also relies on the use of NodeJS for certain checks during development. You need at least: - Python 3.11+ - [Poetry][poetry-install] - NodeJS 12+ (including NPM) To install all packages, including all development requirements: ```bash npm install poetry install ``` As this repository uses the [pre-commit][pre-commit] framework, all changes are linted and tested with each commit. You can run all checks and tests manually, using the following command: ```bash poetry run pre-commit run --all-files ``` To run just the Python tests: ```bash poetry run pytest ``` ## Authors & contributors The content is by [Joost Lekkerkerker][joostlek]. For a full list of all authors and contributors, check [the contributor's page][contributors]. ## License MIT License Copyright (c) 2024 Joost Lekkerkerker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. [build-shield]: https://github.com/joostlek/python-mealie/actions/workflows/tests.yaml/badge.svg [build]: https://github.com/joostlek/python-mealie/actions [code-smells]: https://sonarcloud.io/api/project_badges/measure?project=joostlek_python-mealie&metric=code_smells [codecov-shield]: https://codecov.io/gh/joostlek/python-mealie/branch/main/graph/badge.svg [codecov]: https://codecov.io/gh/joostlek/python-mealie [commits-shield]: https://img.shields.io/github/commit-activity/y/joostlek/python-mealie.svg [commits]: https://github.com/joostlek/python-mealie/commits/master [contributors]: https://github.com/joostlek/python-mealie/graphs/contributors [joostlek]: https://github.com/joostlek [keepchangelog]: http://keepachangelog.com/en/1.0.0/ [license-shield]: https://img.shields.io/github/license/joostlek/python-mealie.svg [maintenance-shield]: https://img.shields.io/maintenance/yes/2024.svg [poetry-install]: https://python-poetry.org/docs/#installation [poetry]: https://python-poetry.org [pre-commit]: https://pre-commit.com/ [project-stage-shield]: https://img.shields.io/badge/project%20stage-stable-green.svg [python-versions-shield]: https://img.shields.io/pypi/pyversions/aiomealie [releases-shield]: https://img.shields.io/github/release/joostlek/python-mealie.svg [releases]: https://github.com/joostlek/python-mealie/releases [semver]: http://semver.org/spec/v2.0.0.html [sonarcloud]: https://sonarcloud.io/summary/new_code?id=joostlek_python-mealie [pypi]: https://pypi.org/project/aiomealie/ joostlek-python-mealie-f3a7029/openapi.json000066400000000000000000037753521473452740400210400ustar00rootroot00000000000000{ "openapi": "3.1.0", "info": { "title": "Mealie", "description": "\nMealie is a web application for managing your recipes, meal plans, and shopping lists. This is the Restful\nAPI interactive documentation that can be used to explore the API. If you're justing getting started with\nthe API and want to get started quickly, you can use the\n[API Usage | Mealie Docs](https://nightly.mealie.io/documentation/getting-started/api-usage/)\nas a reference for how to get started.\n\n\nAs of this release nightly, Mealie is still in rapid development and therefore some of these APIs may\nchange from version to version.\n\n\nIf you have any questions or comments about mealie, please use the discord server to talk to the developers or other\ncommunity members. If you'd like to file an issue, please use the\n[GitHub Issue Tracker | Mealie](https://github.com/mealie-recipes/mealie/issues/new/choose)\n\n\n## Helpful Links\n- [Home Page](https://mealie.io)\n- [Documentation](https://nightly.mealie.io)\n- [Discord](https://discord.gg/QuStdQGSGK)\n- [Demo](https://demo.mealie.io)\n- [Beta](https://demo.mealie.io)\n", "version": "nightly" }, "paths": { "/api/app/about": { "get": { "tags": ["App: About"], "summary": "Get App Info", "description": "Get general application information", "operationId": "get_app_info_api_app_about_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppInfo" } } } } } } }, "/api/app/about/startup-info": { "get": { "tags": ["App: About"], "summary": "Get Startup Info", "description": "returns helpful startup information", "operationId": "get_startup_info_api_app_about_startup_info_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppStartupInfo" } } } } } } }, "/api/app/about/theme": { "get": { "tags": ["App: About"], "summary": "Get App Theme", "description": "Get's the current theme settings", "operationId": "get_app_theme_api_app_about_theme_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTheme" } } } } } } }, "/api/app/about/oidc": { "get": { "tags": ["App: About"], "summary": "Get Oidc Info", "description": "Get's the current OIDC configuration needed for the frontend", "operationId": "get_oidc_info_api_app_about_oidc_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OIDCInfo" } } } } } } }, "/api/auth/token": { "post": { "tags": ["Users: Authentication"], "summary": "Get Token", "operationId": "get_token_api_auth_token_post", "requestBody": { "content": { "application/x-www-form-urlencoded": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Body_get_token_api_auth_token_post" } ], "title": "Body" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/auth/refresh": { "get": { "tags": ["Users: Authentication"], "summary": "Refresh Token", "description": "Use a valid token to get another token", "operationId": "refresh_token_api_auth_refresh_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } }, "security": [ { "OAuth2PasswordBearer": [] } ] } }, "/api/auth/logout": { "post": { "tags": ["Users: Authentication"], "summary": "Logout", "operationId": "logout_api_auth_logout_post", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } }, "security": [ { "OAuth2PasswordBearer": [] } ] } }, "/api/users/register": { "post": { "tags": ["Users: Registration"], "summary": "Register New User", "operationId": "register_new_user_api_users_register_post", "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateUserRegistration" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/group-users": { "get": { "tags": ["Users: CRUD"], "summary": "Get All Group Users", "description": "Returns all users from the current group", "operationId": "get_all_group_users_api_users_group_users_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserSummaryPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/self": { "get": { "tags": ["Users: CRUD"], "summary": "Get Logged In User", "operationId": "get_logged_in_user_api_users_self_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/self/ratings": { "get": { "tags": ["Users: CRUD"], "summary": "Get Logged In User Ratings", "operationId": "get_logged_in_user_ratings_api_users_self_ratings_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRatings_UserRatingSummary_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/self/ratings/{recipe_id}": { "get": { "tags": ["Users: CRUD"], "summary": "Get Logged In User Rating For Recipe", "operationId": "get_logged_in_user_rating_for_recipe_api_users_self_ratings__recipe_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "recipe_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Recipe Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRatingSummary" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/self/favorites": { "get": { "tags": ["Users: CRUD"], "summary": "Get Logged In User Favorites", "operationId": "get_logged_in_user_favorites_api_users_self_favorites_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRatings_UserRatingSummary_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/password": { "put": { "tags": ["Users: CRUD"], "summary": "Update Password", "description": "Resets the User Password", "operationId": "update_password_api_users_password_put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChangePassword" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/{item_id}": { "put": { "tags": ["Users: CRUD"], "summary": "Update User", "operationId": "update_user_api_users__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/mealie__schema__user__user__UserBase" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "get": { "tags": ["Users: Admin CRUD"], "summary": "Get User", "operationId": "get_user_api_users__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Users: Admin CRUD"], "summary": "Delete User", "description": "Removes a user from the database. Must be the current user or a super user", "operationId": "delete_user_api_users__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users": { "get": { "tags": ["Users: Admin CRUD"], "summary": "Get All", "description": "Returns all users from all groups", "operationId": "get_all_api_users_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Users: Admin CRUD"], "summary": "Create User", "operationId": "create_user_api_users_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserIn" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/forgot-password": { "post": { "tags": ["Users: Passwords"], "summary": "Forgot Password", "description": "Sends an email with a reset link to the user", "operationId": "forgot_password_api_users_forgot_password_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ForgotPassword" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/reset-password": { "post": { "tags": ["Users: Passwords"], "summary": "Reset Password", "description": "Resets the user password", "operationId": "reset_password_api_users_reset_password_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResetPassword" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/{id}/image": { "post": { "tags": ["Users: Images"], "summary": "Update User Image", "description": "Updates a User Image", "operationId": "update_user_image_api_users__id__image_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_update_user_image_api_users__id__image_post" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/api-tokens": { "post": { "tags": ["Users: Tokens"], "summary": "Create Api Token", "description": "Create api_token in the Database", "operationId": "create_api_token_api_users_api_tokens_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LongLiveTokenIn" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LongLiveTokenOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/api-tokens/{token_id}": { "delete": { "tags": ["Users: Tokens"], "summary": "Delete Api Token", "description": "Delete api_token from the Database", "operationId": "delete_api_token_api_users_api_tokens__token_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "token_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Token Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteTokenResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/{id}/ratings": { "get": { "tags": ["Users: Ratings"], "summary": "Get Ratings", "description": "Get user's rated recipes", "operationId": "get_ratings_api_users__id__ratings_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRatings_UserRatingOut_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/{id}/favorites": { "get": { "tags": ["Users: Ratings"], "summary": "Get Favorites", "description": "Get user's favorited recipes", "operationId": "get_favorites_api_users__id__favorites_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRatings_UserRatingOut_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/{id}/ratings/{slug}": { "post": { "tags": ["Users: Ratings"], "summary": "Set Rating", "description": "Sets the user's rating for a recipe", "operationId": "set_rating_api_users__id__ratings__slug__post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Id" } }, { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRatingUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/users/{id}/favorites/{slug}": { "post": { "tags": ["Users: Ratings"], "summary": "Add Favorite", "description": "Adds a recipe to the user's favorites", "operationId": "add_favorite_api_users__id__favorites__slug__post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Id" } }, { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Users: Ratings"], "summary": "Remove Favorite", "description": "Removes a recipe from the user's favorites", "operationId": "remove_favorite_api_users__id__favorites__slug__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Id" } }, { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/self": { "get": { "tags": ["Groups: Self Service"], "summary": "Get Logged In User Group", "description": "Returns the Group Data for the Current User", "operationId": "get_logged_in_user_group_api_groups_self_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupSummary" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/members": { "get": { "tags": ["Groups: Self Service"], "summary": "Get Group Members", "description": "Returns the Group of user lists", "operationId": "get_group_members_api_groups_members_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserOut" }, "title": "Response Get Group Members Api Groups Members Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/preferences": { "get": { "tags": ["Groups: Self Service"], "summary": "Get Group Preferences", "operationId": "get_group_preferences_api_groups_preferences_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadGroupPreferences" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Groups: Self Service"], "summary": "Update Group Preferences", "operationId": "update_group_preferences_api_groups_preferences_put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateGroupPreferences" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadGroupPreferences" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/permissions": { "put": { "tags": ["Groups: Self Service"], "summary": "Set Member Permissions", "operationId": "set_member_permissions_api_groups_permissions_put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetPermissions" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/statistics": { "get": { "tags": ["Groups: Self Service"], "summary": "Get Statistics", "operationId": "get_statistics_api_groups_statistics_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupStatistics" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/storage": { "get": { "tags": ["Groups: Self Service"], "summary": "Get Storage", "operationId": "get_storage_api_groups_storage_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupStorage" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/mealplans/rules": { "get": { "tags": ["Groups: Mealplan Rules"], "summary": "Get All", "operationId": "get_all_api_groups_mealplans_rules_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlanRulesPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Groups: Mealplan Rules"], "summary": "Create One", "operationId": "create_one_api_groups_mealplans_rules_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlanRulesCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlanRulesOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/mealplans/rules/{item_id}": { "get": { "tags": ["Groups: Mealplan Rules"], "summary": "Get One", "operationId": "get_one_api_groups_mealplans_rules__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlanRulesOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Groups: Mealplan Rules"], "summary": "Update One", "operationId": "update_one_api_groups_mealplans_rules__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlanRulesCreate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlanRulesOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Groups: Mealplan Rules"], "summary": "Delete One", "operationId": "delete_one_api_groups_mealplans_rules__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlanRulesOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/categories": { "get": { "tags": ["Groups: Mealplan Categories"], "summary": "Get Mealplan Categories", "operationId": "get_mealplan_categories_api_groups_categories_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/CategoryBase" }, "title": "Response Get Mealplan Categories Api Groups Categories Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Groups: Mealplan Categories"], "summary": "Update Mealplan Categories", "operationId": "update_mealplan_categories_api_groups_categories_put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/CategoryBase" }, "title": "New Categories" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/CategoryBase" }, "title": "Response Update Mealplan Categories Api Groups Categories Put" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/mealplans/today": { "get": { "tags": ["Groups: Mealplans"], "summary": "Get Todays Meals", "operationId": "get_todays_meals_api_groups_mealplans_today_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/mealplans/random": { "post": { "tags": ["Groups: Mealplans"], "summary": "Create Random Meal", "description": "create_random_meal is a route that provides the randomized functionality for mealplaners.\nIt operates by following the rules setout in the Groups mealplan settings. If not settings\nare set, it will default return any random meal.\n\nRefer to the mealplan settings routes for more information on how rules can be applied\nto the random meal selector.", "operationId": "create_random_meal_api_groups_mealplans_random_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateRandomEntry" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadPlanEntry" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/mealplans": { "get": { "tags": ["Groups: Mealplans"], "summary": "Get All", "operationId": "get_all_api_groups_mealplans_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "start_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Start Date" } }, { "name": "end_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "End Date" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlanEntryPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Groups: Mealplans"], "summary": "Create One", "operationId": "create_one_api_groups_mealplans_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePlanEntry" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadPlanEntry" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/mealplans/{item_id}": { "get": { "tags": ["Groups: Mealplans"], "summary": "Get One", "operationId": "get_one_api_groups_mealplans__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadPlanEntry" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Groups: Mealplans"], "summary": "Update One", "operationId": "update_one_api_groups_mealplans__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdatePlanEntry" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadPlanEntry" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Groups: Mealplans"], "summary": "Delete One", "operationId": "delete_one_api_groups_mealplans__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadPlanEntry" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/cookbooks": { "get": { "tags": ["Groups: Cookbooks"], "summary": "Get All", "operationId": "get_all_api_groups_cookbooks_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CookBookPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Groups: Cookbooks"], "summary": "Create One", "operationId": "create_one_api_groups_cookbooks_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCookBook" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadCookBook" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Groups: Cookbooks"], "summary": "Update Many", "operationId": "update_many_api_groups_cookbooks_put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UpdateCookBook" }, "title": "Data" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadCookBook" }, "title": "Response Update Many Api Groups Cookbooks Put" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/cookbooks/{item_id}": { "get": { "tags": ["Groups: Cookbooks"], "summary": "Get One", "operationId": "get_one_api_groups_cookbooks__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" } ], "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeCookBook" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Groups: Cookbooks"], "summary": "Update One", "operationId": "update_one_api_groups_cookbooks__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCookBook" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadCookBook" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Groups: Cookbooks"], "summary": "Delete One", "operationId": "delete_one_api_groups_cookbooks__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadCookBook" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/webhooks": { "get": { "tags": ["Groups: Webhooks"], "summary": "Get All", "operationId": "get_all_api_groups_webhooks_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Groups: Webhooks"], "summary": "Create One", "operationId": "create_one_api_groups_webhooks_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWebhook" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadWebhook" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/webhooks/rerun": { "post": { "tags": ["Groups: Webhooks"], "summary": "Rerun Webhooks", "description": "Manually re-fires all previously scheduled webhooks for today", "operationId": "rerun_webhooks_api_groups_webhooks_rerun_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/webhooks/{item_id}": { "get": { "tags": ["Groups: Webhooks"], "summary": "Get One", "operationId": "get_one_api_groups_webhooks__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadWebhook" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Groups: Webhooks"], "summary": "Update One", "operationId": "update_one_api_groups_webhooks__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWebhook" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadWebhook" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Groups: Webhooks"], "summary": "Delete One", "operationId": "delete_one_api_groups_webhooks__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadWebhook" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/invitations": { "get": { "tags": ["Groups: Invitations"], "summary": "Get Invite Tokens", "operationId": "get_invite_tokens_api_groups_invitations_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReadInviteToken" }, "title": "Response Get Invite Tokens Api Groups Invitations Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Groups: Invitations"], "summary": "Create Invite Token", "operationId": "create_invite_token_api_groups_invitations_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInviteToken" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadInviteToken" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/invitations/email": { "post": { "tags": ["Groups: Invitations"], "summary": "Email Invitation", "operationId": "email_invitation_api_groups_invitations_email_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmailInvitation" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmailInitationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/migrations": { "post": { "tags": ["Group: Migrations"], "summary": "Start Data Migration", "operationId": "start_data_migration_api_groups_migrations_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_start_data_migration_api_groups_migrations_post" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportSummary" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/reports": { "get": { "tags": ["Groups: Reports"], "summary": "Get All", "operationId": "get_all_api_groups_reports_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "report_type", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/ReportCategory" }, { "type": "null" } ], "title": "Report Type" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ReportSummary" }, "title": "Response Get All Api Groups Reports Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/reports/{item_id}": { "get": { "tags": ["Groups: Reports"], "summary": "Get One", "operationId": "get_one_api_groups_reports__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Groups: Reports"], "summary": "Delete One", "operationId": "delete_one_api_groups_reports__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/shopping/lists": { "get": { "tags": ["Group: Shopping Lists"], "summary": "Get All", "operationId": "get_all_api_groups_shopping_lists_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Group: Shopping Lists"], "summary": "Create One", "operationId": "create_one_api_groups_shopping_lists_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/shopping/lists/{item_id}": { "get": { "tags": ["Group: Shopping Lists"], "summary": "Get One", "operationId": "get_one_api_groups_shopping_lists__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Group: Shopping Lists"], "summary": "Update One", "operationId": "update_one_api_groups_shopping_lists__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Group: Shopping Lists"], "summary": "Delete One", "operationId": "delete_one_api_groups_shopping_lists__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/shopping/lists/{item_id}/recipe/{recipe_id}": { "post": { "tags": ["Group: Shopping Lists"], "summary": "Add Recipe Ingredients To List", "operationId": "add_recipe_ingredients_to_list_api_groups_shopping_lists__item_id__recipe__recipe_id__post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "recipe_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Recipe Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/ShoppingListAddRecipeParams" }, { "type": "null" } ], "title": "Data" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/shopping/lists/{item_id}/recipe/{recipe_id}/delete": { "post": { "tags": ["Group: Shopping Lists"], "summary": "Remove Recipe Ingredients From List", "operationId": "remove_recipe_ingredients_from_list_api_groups_shopping_lists__item_id__recipe__recipe_id__delete_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "recipe_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Recipe Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/ShoppingListRemoveRecipeParams" }, { "type": "null" } ], "title": "Data" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/shopping/lists/{item_id}/label-settings": { "put": { "tags": ["Group: Shopping Lists"], "summary": "Update Label Settings", "operationId": "update_label_settings_api_groups_shopping_lists__item_id__label_settings_put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ShoppingListMultiPurposeLabelUpdate" }, "title": "Data" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/shopping/items": { "get": { "tags": ["Group: Shopping List Items"], "summary": "Get All", "operationId": "get_all_api_groups_shopping_items_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListItemPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Group: Shopping List Items"], "summary": "Create One", "operationId": "create_one_api_groups_shopping_items_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListItemCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListItemsCollectionOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Group: Shopping List Items"], "summary": "Update Many", "operationId": "update_many_api_groups_shopping_items_put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ShoppingListItemUpdateBulk" }, "title": "Data" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListItemsCollectionOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Group: Shopping List Items"], "summary": "Delete Many", "operationId": "delete_many_api_groups_shopping_items_delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "ids", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string", "format": "uuid4" }, "title": "Ids" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/shopping/items/create-bulk": { "post": { "tags": ["Group: Shopping List Items"], "summary": "Create Many", "operationId": "create_many_api_groups_shopping_items_create_bulk_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ShoppingListItemCreate" }, "title": "Data" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListItemsCollectionOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/shopping/items/{item_id}": { "get": { "tags": ["Group: Shopping List Items"], "summary": "Get One", "operationId": "get_one_api_groups_shopping_items__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListItemOut-Output" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Group: Shopping List Items"], "summary": "Update One", "operationId": "update_one_api_groups_shopping_items__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListItemUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShoppingListItemsCollectionOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Group: Shopping List Items"], "summary": "Delete One", "operationId": "delete_one_api_groups_shopping_items__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/labels": { "get": { "tags": ["Group: Multi Purpose Labels"], "summary": "Get All", "operationId": "get_all_api_groups_labels_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultiPurposeLabelPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Group: Multi Purpose Labels"], "summary": "Create One", "operationId": "create_one_api_groups_labels_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultiPurposeLabelCreate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultiPurposeLabelOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/labels/{item_id}": { "get": { "tags": ["Group: Multi Purpose Labels"], "summary": "Get One", "operationId": "get_one_api_groups_labels__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultiPurposeLabelOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Group: Multi Purpose Labels"], "summary": "Update One", "operationId": "update_one_api_groups_labels__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultiPurposeLabelUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultiPurposeLabelOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Group: Multi Purpose Labels"], "summary": "Delete One", "operationId": "delete_one_api_groups_labels__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MultiPurposeLabelOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/events/notifications": { "get": { "tags": ["Group: Event Notifications"], "summary": "Get All", "operationId": "get_all_api_groups_events_notifications_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupEventPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Group: Event Notifications"], "summary": "Create One", "operationId": "create_one_api_groups_events_notifications_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupEventNotifierCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupEventNotifierOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/events/notifications/{item_id}": { "get": { "tags": ["Group: Event Notifications"], "summary": "Get One", "operationId": "get_one_api_groups_events_notifications__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupEventNotifierOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Group: Event Notifications"], "summary": "Update One", "operationId": "update_one_api_groups_events_notifications__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupEventNotifierUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupEventNotifierOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Group: Event Notifications"], "summary": "Delete One", "operationId": "delete_one_api_groups_events_notifications__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/events/notifications/{item_id}/test": { "post": { "tags": ["Group: Event Notifications"], "summary": "Test Notification", "operationId": "test_notification_api_groups_events_notifications__item_id__test_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/recipe-actions": { "get": { "tags": ["Groups: Recipe Actions"], "summary": "Get All", "operationId": "get_all_api_groups_recipe_actions_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupRecipeActionPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Groups: Recipe Actions"], "summary": "Create One", "operationId": "create_one_api_groups_recipe_actions_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateGroupRecipeAction" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupRecipeActionOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/recipe-actions/{item_id}": { "get": { "tags": ["Groups: Recipe Actions"], "summary": "Get One", "operationId": "get_one_api_groups_recipe_actions__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupRecipeActionOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Groups: Recipe Actions"], "summary": "Update One", "operationId": "update_one_api_groups_recipe_actions__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SaveGroupRecipeAction" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupRecipeActionOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Groups: Recipe Actions"], "summary": "Delete One", "operationId": "delete_one_api_groups_recipe_actions__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupRecipeActionOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/seeders/foods": { "post": { "tags": ["Groups: Seeders"], "summary": "Seed Foods", "operationId": "seed_foods_api_groups_seeders_foods_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SeederConfig" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/seeders/labels": { "post": { "tags": ["Groups: Seeders"], "summary": "Seed Labels", "operationId": "seed_labels_api_groups_seeders_labels_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SeederConfig" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/groups/seeders/units": { "post": { "tags": ["Groups: Seeders"], "summary": "Seed Units", "operationId": "seed_units_api_groups_seeders_units_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SeederConfig" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/summary/untagged": { "get": { "tags": ["Recipe: Query All"], "summary": "Get Untagged Recipes", "operationId": "get_untagged_recipes_api_recipes_summary_untagged_get", "parameters": [ { "name": "count", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Count" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RecipeSummary" }, "title": "Response Get Untagged Recipes Api Recipes Summary Untagged Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/summary/uncategorized": { "get": { "tags": ["Recipe: Query All"], "summary": "Get Uncategorized Recipes", "operationId": "get_uncategorized_recipes_api_recipes_summary_uncategorized_get", "parameters": [ { "name": "count", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Count" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RecipeSummary" }, "title": "Response Get Uncategorized Recipes Api Recipes Summary Uncategorized Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/exports": { "get": { "tags": ["Recipe: Exports"], "summary": "Get Recipe Formats And Templates", "operationId": "get_recipe_formats_and_templates_api_recipes_exports_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FormatResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/{slug}/exports": { "post": { "tags": ["Recipe: Exports"], "summary": "Get Recipe Zip Token", "description": "Generates a recipe zip token to be used to download a recipe as a zip file", "operationId": "get_recipe_zip_token_api_recipes__slug__exports_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeZipTokenResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "get": { "tags": ["Recipe: Exports"], "summary": "Get Recipe As Format", "description": "## Parameters\n`template_name`: The name of the template to use to use in the exports listed. Template type will automatically\nbe set on the backend. Because of this, it's important that your templates have unique names. See available\nnames and formats in the /api/recipes/exports endpoint.", "operationId": "get_recipe_as_format_api_recipes__slug__exports_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "template_name", "in": "query", "required": true, "schema": { "type": "string", "title": "Template Name" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/{slug}/exports/zip": { "get": { "tags": ["Recipe: Exports"], "summary": "Get Recipe As Zip", "description": "Get a Recipe and Its Original Image as a Zip File", "operationId": "get_recipe_as_zip_api_recipes__slug__exports_zip_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "token", "in": "query", "required": true, "schema": { "type": "string", "title": "Token" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/create-url": { "post": { "tags": ["Recipe: CRUD"], "summary": "Parse Recipe Url", "description": "Takes in a URL and attempts to scrape data and load it into the database", "operationId": "parse_recipe_url_api_recipes_create_url_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScrapeRecipe" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "string", "title": "Response Parse Recipe Url Api Recipes Create Url Post" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/create-url/bulk": { "post": { "tags": ["Recipe: CRUD"], "summary": "Parse Recipe Url Bulk", "description": "Takes in a URL and attempts to scrape data and load it into the database", "operationId": "parse_recipe_url_bulk_api_recipes_create_url_bulk_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateRecipeByUrlBulk" } } } }, "responses": { "202": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/test-scrape-url": { "post": { "tags": ["Recipe: CRUD"], "summary": "Test Parse Recipe Url", "operationId": "test_parse_recipe_url_api_recipes_test_scrape_url_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScrapeRecipeTest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/create-from-zip": { "post": { "tags": ["Recipe: CRUD"], "summary": "Create Recipe From Zip", "description": "Create recipe from archive", "operationId": "create_recipe_from_zip_api_recipes_create_from_zip_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_create_recipe_from_zip_api_recipes_create_from_zip_post" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes": { "get": { "tags": ["Recipe: CRUD"], "summary": "Get All", "operationId": "get_all_api_recipes_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "categories", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" } ] } }, { "type": "null" } ], "title": "Categories" } }, { "name": "tags", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" } ] } }, { "type": "null" } ], "title": "Tags" } }, { "name": "tools", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" } ] } }, { "type": "null" } ], "title": "Tools" } }, { "name": "foods", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" } ] } }, { "type": "null" } ], "title": "Foods" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "cookbook", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" }, { "type": "null" } ], "title": "Cookbook" } }, { "name": "requireAllCategories", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Requireallcategories" } }, { "name": "requireAllTags", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Requirealltags" } }, { "name": "requireAllTools", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Requirealltools" } }, { "name": "requireAllFoods", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Requireallfoods" } }, { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginationBase_RecipeSummary_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Recipe: CRUD"], "summary": "Create One", "description": "Takes in a JSON string and loads data into the database as a new entry", "operationId": "create_one_api_recipes_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateRecipe" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "string", "title": "Response Create One Api Recipes Post" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/{slug}": { "get": { "tags": ["Recipe: CRUD"], "summary": "Get One", "description": "Takes in a recipe's slug or id and returns all data for a recipe", "operationId": "get_one_api_recipes__slug__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "description": "A recipe's slug or id", "title": "Slug" }, "description": "A recipe's slug or id" }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Recipe-Output" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Recipe: CRUD"], "summary": "Update One", "description": "Updates a recipe by existing slug and data.", "operationId": "update_one_api_recipes__slug__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Recipe-Input" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "patch": { "tags": ["Recipe: CRUD"], "summary": "Patch One", "description": "Updates a recipe by existing slug and data.", "operationId": "patch_one_api_recipes__slug__patch", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Recipe-Input" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Recipe: CRUD"], "summary": "Delete One", "description": "Deletes a recipe by slug", "operationId": "delete_one_api_recipes__slug__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/{slug}/duplicate": { "post": { "tags": ["Recipe: CRUD"], "summary": "Duplicate One", "description": "Duplicates a recipe with a new custom name if given", "operationId": "duplicate_one_api_recipes__slug__duplicate_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeDuplicate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Recipe-Output" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/{slug}/last-made": { "patch": { "tags": ["Recipe: CRUD"], "summary": "Update Last Made", "description": "Update a recipe's last made timestamp", "operationId": "update_last_made_api_recipes__slug__last_made_patch", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeLastMade" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/{slug}/image": { "post": { "tags": ["Recipe: Images and Assets", "Recipe: CRUD"], "summary": "Scrape Image Url", "operationId": "scrape_image_url_api_recipes__slug__image_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScrapeRecipe" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Recipe: Images and Assets", "Recipe: CRUD"], "summary": "Update Recipe Image", "operationId": "update_recipe_image_api_recipes__slug__image_put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_update_recipe_image_api_recipes__slug__image_put" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateImageResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/{slug}/assets": { "post": { "tags": ["Recipe: Images and Assets", "Recipe: CRUD"], "summary": "Upload Recipe Asset", "description": "Upload a file to store as a recipe asset", "operationId": "upload_recipe_asset_api_recipes__slug__assets_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_upload_recipe_asset_api_recipes__slug__assets_post" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeAsset" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/{slug}/comments": { "get": { "tags": ["Recipe: Comments"], "summary": "Get Recipe Comments", "description": "Get all comments for a recipe", "operationId": "get_recipe_comments_api_recipes__slug__comments_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Slug" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RecipeCommentOut-Output" }, "title": "Response Get Recipe Comments Api Recipes Slug Comments Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/bulk-actions/tag": { "post": { "tags": ["Recipe: Bulk Actions", "Recipe: Bulk Exports"], "summary": "Bulk Tag Recipes", "operationId": "bulk_tag_recipes_api_recipes_bulk_actions_tag_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssignTags" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/bulk-actions/settings": { "post": { "tags": ["Recipe: Bulk Actions", "Recipe: Bulk Exports"], "summary": "Bulk Settings Recipes", "operationId": "bulk_settings_recipes_api_recipes_bulk_actions_settings_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssignSettings" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/bulk-actions/categorize": { "post": { "tags": ["Recipe: Bulk Actions", "Recipe: Bulk Exports"], "summary": "Bulk Categorize Recipes", "operationId": "bulk_categorize_recipes_api_recipes_bulk_actions_categorize_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssignCategories" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/bulk-actions/delete": { "post": { "tags": ["Recipe: Bulk Actions", "Recipe: Bulk Exports"], "summary": "Bulk Delete Recipes", "operationId": "bulk_delete_recipes_api_recipes_bulk_actions_delete_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteRecipes" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/bulk-actions/export": { "post": { "tags": ["Recipe: Bulk Actions", "Recipe: Bulk Exports"], "summary": "Bulk Export Recipes", "operationId": "bulk_export_recipes_api_recipes_bulk_actions_export_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExportRecipes" } } } }, "responses": { "202": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "get": { "tags": ["Recipe: Bulk Actions", "Recipe: Bulk Exports"], "summary": "Get Exported Data", "operationId": "get_exported_data_api_recipes_bulk_actions_export_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GroupDataExport" }, "title": "Response Get Exported Data Api Recipes Bulk Actions Export Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/bulk-actions/export/download": { "get": { "tags": ["Recipe: Bulk Actions", "Recipe: Bulk Exports"], "summary": "Get Exported Data Token", "description": "Returns a token to download a file", "operationId": "get_exported_data_token_api_recipes_bulk_actions_export_download_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "path", "in": "query", "required": true, "schema": { "type": "string", "format": "path", "title": "Path" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/bulk-actions/export/purge": { "delete": { "tags": ["Recipe: Bulk Actions", "Recipe: Bulk Exports"], "summary": "Purge Export Data", "description": "Remove all exports data, including items on disk without database entry", "operationId": "purge_export_data_api_recipes_bulk_actions_export_purge_delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/shared/{token_id}": { "get": { "tags": ["Recipe: Shared"], "summary": "Get Shared Recipe", "operationId": "get_shared_recipe_api_recipes_shared__token_id__get", "parameters": [ { "name": "token_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Token Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Recipe-Output" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/timeline/events": { "get": { "tags": ["Recipe: Timeline"], "summary": "Get All", "operationId": "get_all_api_recipes_timeline_events_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTimelineEventPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Recipe: Timeline"], "summary": "Create One", "operationId": "create_one_api_recipes_timeline_events_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTimelineEventIn" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTimelineEventOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/timeline/events/{item_id}": { "get": { "tags": ["Recipe: Timeline"], "summary": "Get One", "operationId": "get_one_api_recipes_timeline_events__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTimelineEventOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Recipe: Timeline"], "summary": "Update One", "operationId": "update_one_api_recipes_timeline_events__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTimelineEventUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTimelineEventOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Recipe: Timeline"], "summary": "Delete One", "operationId": "delete_one_api_recipes_timeline_events__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTimelineEventOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/recipes/timeline/events/{item_id}/image": { "put": { "tags": ["Recipe: Timeline"], "summary": "Update Event Image", "operationId": "update_event_image_api_recipes_timeline_events__item_id__image_put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_update_event_image_api_recipes_timeline_events__item_id__image_put" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateImageResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/organizers/categories": { "get": { "tags": ["Organizer: Categories"], "summary": "Get All", "description": "Returns a list of available categories in the database", "operationId": "get_all_api_organizers_categories_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeCategoryPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Organizer: Categories"], "summary": "Create One", "description": "Creates a Category in the database", "operationId": "create_one_api_organizers_categories_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CategoryIn" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/organizers/categories/{item_id}": { "get": { "tags": ["Organizer: Categories"], "summary": "Get One", "description": "Returns a list of recipes associated with the provided category.", "operationId": "get_one_api_organizers_categories__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CategorySummary" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Organizer: Categories"], "summary": "Update One", "description": "Updates an existing Tag in the database", "operationId": "update_one_api_organizers_categories__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CategoryIn" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CategorySummary" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Organizer: Categories"], "summary": "Delete One", "description": "Removes a recipe category from the database. Deleting a\ncategory does not impact a recipe. The category will be removed\nfrom any recipes that contain it", "operationId": "delete_one_api_organizers_categories__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/organizers/categories/empty": { "get": { "tags": ["Organizer: Categories"], "summary": "Get All Empty", "description": "Returns a list of categories that do not contain any recipes", "operationId": "get_all_empty_api_organizers_categories_empty_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/CategoryBase" }, "title": "Response Get All Empty Api Organizers Categories Empty Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/organizers/categories/slug/{category_slug}": { "get": { "tags": ["Organizer: Categories"], "summary": "Get One By Slug", "description": "Returns a category object with the associated recieps relating to the category", "operationId": "get_one_by_slug_api_organizers_categories_slug__category_slug__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "category_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Category Slug" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/organizers/tags": { "get": { "tags": ["Organizer: Tags"], "summary": "Get All", "description": "Returns a list of available tags in the database", "operationId": "get_all_api_organizers_tags_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTagPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Organizer: Tags"], "summary": "Create One", "description": "Creates a Tag in the database", "operationId": "create_one_api_organizers_tags_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagIn" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/organizers/tags/empty": { "get": { "tags": ["Organizer: Tags"], "summary": "Get Empty Tags", "description": "Returns a list of tags that do not contain any recipes", "operationId": "get_empty_tags_api_organizers_tags_empty_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/organizers/tags/{item_id}": { "get": { "tags": ["Organizer: Tags"], "summary": "Get One", "description": "Returns a list of recipes associated with the provided tag.", "operationId": "get_one_api_organizers_tags__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTagResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Organizer: Tags"], "summary": "Update One", "description": "Updates an existing Tag in the database", "operationId": "update_one_api_organizers_tags__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagIn" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTagResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Organizer: Tags"], "summary": "Delete Recipe Tag", "description": "Removes a recipe tag from the database. Deleting a\ntag does not impact a recipe. The tag will be removed\nfrom any recipes that contain it", "operationId": "delete_recipe_tag_api_organizers_tags__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/organizers/tags/slug/{tag_slug}": { "get": { "tags": ["Organizer: Tags"], "summary": "Get One By Slug", "operationId": "get_one_by_slug_api_organizers_tags_slug__tag_slug__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "tag_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Tag Slug" } }, { "name": "group_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Group Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTagResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/organizers/tools": { "get": { "tags": ["Organizer: Tools"], "summary": "Get All", "operationId": "get_all_api_organizers_tools_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeToolPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Organizer: Tools"], "summary": "Create One", "operationId": "create_one_api_organizers_tools_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeToolCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTool" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/organizers/tools/{item_id}": { "get": { "tags": ["Organizer: Tools"], "summary": "Get One", "operationId": "get_one_api_organizers_tools__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTool" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Organizer: Tools"], "summary": "Update One", "operationId": "update_one_api_organizers_tools__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeToolCreate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTool" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Organizer: Tools"], "summary": "Delete One", "operationId": "delete_one_api_organizers_tools__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeTool" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/organizers/tools/slug/{tool_slug}": { "get": { "tags": ["Organizer: Tools"], "summary": "Get One By Slug", "operationId": "get_one_by_slug_api_organizers_tools_slug__tool_slug__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "tool_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Tool Slug" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeToolResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/shared/recipes": { "get": { "tags": ["Shared: Recipes"], "summary": "Get All", "operationId": "get_all_api_shared_recipes_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "recipe_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Recipe Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RecipeShareTokenSummary" }, "title": "Response Get All Api Shared Recipes Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Shared: Recipes"], "summary": "Create One", "operationId": "create_one_api_shared_recipes_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeShareTokenCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeShareToken" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/shared/recipes/{item_id}": { "get": { "tags": ["Shared: Recipes"], "summary": "Get One", "operationId": "get_one_api_shared_recipes__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeShareToken" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Shared: Recipes"], "summary": "Delete One", "operationId": "delete_one_api_shared_recipes__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/comments": { "get": { "tags": ["Recipe: Comments"], "summary": "Get All", "operationId": "get_all_api_comments_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeCommentPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Recipe: Comments"], "summary": "Create One", "operationId": "create_one_api_comments_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeCommentCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeCommentOut-Output" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/comments/{item_id}": { "get": { "tags": ["Recipe: Comments"], "summary": "Get One", "operationId": "get_one_api_comments__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeCommentOut-Output" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Recipe: Comments"], "summary": "Update One", "operationId": "update_one_api_comments__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeCommentUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeCommentOut-Output" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Recipe: Comments"], "summary": "Delete One", "operationId": "delete_one_api_comments__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/parser/ingredients": { "post": { "tags": ["Recipe: Ingredient Parser"], "summary": "Parse Ingredients", "operationId": "parse_ingredients_api_parser_ingredients_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientsRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ParsedIngredient" }, "title": "Response Parse Ingredients Api Parser Ingredients Post" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/parser/ingredient": { "post": { "tags": ["Recipe: Ingredient Parser"], "summary": "Parse Ingredient", "operationId": "parse_ingredient_api_parser_ingredient_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ParsedIngredient" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/foods/merge": { "put": { "tags": ["Recipes: Foods"], "summary": "Merge One", "operationId": "merge_one_api_foods_merge_put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MergeFood" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/foods": { "get": { "tags": ["Recipes: Foods"], "summary": "Get All", "operationId": "get_all_api_foods_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientFoodPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Recipes: Foods"], "summary": "Create One", "operationId": "create_one_api_foods_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateIngredientFood" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientFood" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/foods/{item_id}": { "get": { "tags": ["Recipes: Foods"], "summary": "Get One", "operationId": "get_one_api_foods__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientFood" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Recipes: Foods"], "summary": "Update One", "operationId": "update_one_api_foods__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateIngredientFood" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientFood" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Recipes: Foods"], "summary": "Delete One", "operationId": "delete_one_api_foods__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientFood" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/units/merge": { "put": { "tags": ["Recipes: Units"], "summary": "Merge One", "operationId": "merge_one_api_units_merge_put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MergeUnit" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/units": { "get": { "tags": ["Recipes: Units"], "summary": "Get All", "operationId": "get_all_api_units_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientUnitPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Recipes: Units"], "summary": "Create One", "operationId": "create_one_api_units_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateIngredientUnit" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientUnit" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/units/{item_id}": { "get": { "tags": ["Recipes: Units"], "summary": "Get One", "operationId": "get_one_api_units__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientUnit" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Recipes: Units"], "summary": "Update One", "operationId": "update_one_api_units__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateIngredientUnit" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientUnit" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Recipes: Units"], "summary": "Delete One", "operationId": "delete_one_api_units__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientUnit" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/about": { "get": { "tags": ["Admin: About"], "summary": "Get App Info", "description": "Get general application information", "operationId": "get_app_info_api_admin_about_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AdminAboutInfo" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/about/statistics": { "get": { "tags": ["Admin: About"], "summary": "Get App Statistics", "operationId": "get_app_statistics_api_admin_about_statistics_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppStatistics" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/about/check": { "get": { "tags": ["Admin: About"], "summary": "Check App Config", "operationId": "check_app_config_api_admin_about_check_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckAppConfig" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/users": { "get": { "tags": ["Admin: Users", "Admin: Manage Users"], "summary": "Get All", "operationId": "get_all_api_admin_users_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Admin: Users", "Admin: Manage Users"], "summary": "Create One", "operationId": "create_one_api_admin_users_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserIn" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/users/unlock": { "post": { "tags": ["Admin: Users", "Admin: Manage Users"], "summary": "Unlock Users", "operationId": "unlock_users_api_admin_users_unlock_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "force", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Force" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnlockResults" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/users/{item_id}": { "get": { "tags": ["Admin: Users", "Admin: Manage Users"], "summary": "Get One", "operationId": "get_one_api_admin_users__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Admin: Users", "Admin: Manage Users"], "summary": "Update One", "operationId": "update_one_api_admin_users__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOut" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Admin: Users", "Admin: Manage Users"], "summary": "Delete One", "operationId": "delete_one_api_admin_users__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/users/password-reset-token": { "post": { "tags": ["Admin: Users", "Admin: Manage Users"], "summary": "Generate Token", "description": "Generates a reset token and returns it. This is an authenticated endpoint", "operationId": "generate_token_api_admin_users_password_reset_token_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ForgotPassword" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordResetToken" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/groups": { "get": { "tags": ["Admin: Groups", "Admin: Manage Groups"], "summary": "Get All", "operationId": "get_all_api_admin_groups_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupPagination" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Admin: Groups", "Admin: Manage Groups"], "summary": "Create One", "operationId": "create_one_api_admin_groups_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupBase" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupInDB" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/groups/{item_id}": { "get": { "tags": ["Admin: Groups", "Admin: Manage Groups"], "summary": "Get One", "operationId": "get_one_api_admin_groups__item_id__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupInDB" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": ["Admin: Groups", "Admin: Manage Groups"], "summary": "Update One", "operationId": "update_one_api_admin_groups__item_id__put", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupAdminUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupInDB" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Admin: Groups", "Admin: Manage Groups"], "summary": "Delete One", "operationId": "delete_one_api_admin_groups__item_id__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupInDB" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/email": { "get": { "tags": ["Admin: Email"], "summary": "Check Email Config", "description": "Get general application information", "operationId": "check_email_config_api_admin_email_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmailReady" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Admin: Email"], "summary": "Send Test Email", "operationId": "send_test_email_api_admin_email_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmailTest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmailSuccess" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/backups": { "get": { "tags": ["Admin: Backups"], "summary": "Get All", "operationId": "get_all_api_admin_backups_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AllBackups" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": ["Admin: Backups"], "summary": "Create One", "operationId": "create_one_api_admin_backups_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/backups/{file_name}": { "get": { "tags": ["Admin: Backups"], "summary": "Get One", "description": "Returns a token to download a file", "operationId": "get_one_api_admin_backups__file_name__get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "file_name", "in": "path", "required": true, "schema": { "type": "string", "title": "File Name" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileTokenResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": ["Admin: Backups"], "summary": "Delete One", "operationId": "delete_one_api_admin_backups__file_name__delete", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "file_name", "in": "path", "required": true, "schema": { "type": "string", "title": "File Name" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/backups/upload": { "post": { "tags": ["Admin: Backups"], "summary": "Upload One", "description": "Upload a .zip File to later be imported into Mealie", "operationId": "upload_one_api_admin_backups_upload_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_upload_one_api_admin_backups_upload_post" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/backups/{file_name}/restore": { "post": { "tags": ["Admin: Backups"], "summary": "Import One", "operationId": "import_one_api_admin_backups__file_name__restore_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "file_name", "in": "path", "required": true, "schema": { "type": "string", "title": "File Name" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/maintenance": { "get": { "tags": ["Admin: Maintenance"], "summary": "Get Maintenance Summary", "description": "Get the maintenance summary", "operationId": "get_maintenance_summary_api_admin_maintenance_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MaintenanceSummary" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/maintenance/storage": { "get": { "tags": ["Admin: Maintenance"], "summary": "Get Storage Details", "operationId": "get_storage_details_api_admin_maintenance_storage_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MaintenanceStorageDetails" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/maintenance/clean/images": { "post": { "tags": ["Admin: Maintenance"], "summary": "Clean Images", "description": "Purges all the images from the filesystem that aren't .webp", "operationId": "clean_images_api_admin_maintenance_clean_images_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/maintenance/clean/temp": { "post": { "tags": ["Admin: Maintenance"], "summary": "Clean Temp", "operationId": "clean_temp_api_admin_maintenance_clean_temp_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/maintenance/clean/recipe-folders": { "post": { "tags": ["Admin: Maintenance"], "summary": "Clean Recipe Folders", "description": "Deletes all the recipe folders that don't have names that are valid UUIDs", "operationId": "clean_recipe_folders_api_admin_maintenance_clean_recipe_folders_post", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/admin/analytics": { "get": { "tags": ["Admin: Analytics"], "summary": "Get Analytics", "operationId": "get_analytics_api_admin_analytics_get", "security": [ { "OAuth2PasswordBearer": [] }, { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MealieAnalytics" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/validators/user/name": { "get": { "tags": ["Validators"], "summary": "Validate User", "description": "Checks if a user with the given name exists", "operationId": "validate_user_api_validators_user_name_get", "parameters": [ { "name": "name", "in": "query", "required": true, "schema": { "type": "string", "title": "Name" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/validators/user/email": { "get": { "tags": ["Validators"], "summary": "Validate User Email", "description": "Checks if a user with the given name exists", "operationId": "validate_user_email_api_validators_user_email_get", "parameters": [ { "name": "email", "in": "query", "required": true, "schema": { "type": "string", "title": "Email" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/validators/group": { "get": { "tags": ["Validators"], "summary": "Validate Group", "description": "Checks if a group with the given name exists", "operationId": "validate_group_api_validators_group_get", "parameters": [ { "name": "name", "in": "query", "required": true, "schema": { "type": "string", "title": "Name" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/validators/recipe": { "get": { "tags": ["Validators"], "summary": "Validate Recipe", "description": "Checks if a group with the given slug exists", "operationId": "validate_recipe_api_validators_recipe_get", "parameters": [ { "name": "group_id", "in": "query", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Group Id" } }, { "name": "name", "in": "query", "required": true, "schema": { "type": "string", "title": "Name" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/cookbooks/{group_slug}": { "get": { "tags": ["Explore: Cookbooks"], "summary": "Get All", "operationId": "get_all_api_explore_cookbooks__group_slug__get", "parameters": [ { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginationBase_ReadCookBook_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/cookbooks/{group_slug}/{item_id}": { "get": { "tags": ["Explore: Cookbooks"], "summary": "Get One", "operationId": "get_one_api_explore_cookbooks__group_slug___item_id__get", "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" } ], "title": "Item Id" } }, { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeCookBook" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/foods/{group_slug}": { "get": { "tags": ["Explore: Foods"], "summary": "Get All", "operationId": "get_all_api_explore_foods__group_slug__get", "parameters": [ { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginationBase_IngredientFood_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/foods/{group_slug}/{item_id}": { "get": { "tags": ["Explore: Foods"], "summary": "Get One", "operationId": "get_one_api_explore_foods__group_slug___item_id__get", "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngredientFood" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/organizers/{group_slug}/categories": { "get": { "tags": ["Explore: Categories"], "summary": "Get All", "operationId": "get_all_api_explore_organizers__group_slug__categories_get", "parameters": [ { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginationBase_RecipeCategory_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/organizers/{group_slug}/categories/{item_id}": { "get": { "tags": ["Explore: Categories"], "summary": "Get One", "operationId": "get_one_api_explore_organizers__group_slug__categories__item_id__get", "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CategoryOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/organizers/{group_slug}/tags": { "get": { "tags": ["Explore: Tags"], "summary": "Get All", "operationId": "get_all_api_explore_organizers__group_slug__tags_get", "parameters": [ { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginationBase_RecipeTag_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/organizers/{group_slug}/tags/{item_id}": { "get": { "tags": ["Explore: Tags"], "summary": "Get One", "operationId": "get_one_api_explore_organizers__group_slug__tags__item_id__get", "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TagOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/organizers/{group_slug}/tools": { "get": { "tags": ["Explore: Tools"], "summary": "Get All", "operationId": "get_all_api_explore_organizers__group_slug__tools_get", "parameters": [ { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginationBase_RecipeTool_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/organizers/{group_slug}/tools/{item_id}": { "get": { "tags": ["Explore: Tools"], "summary": "Get One", "operationId": "get_one_api_explore_organizers__group_slug__tools__item_id__get", "parameters": [ { "name": "item_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Item Id" } }, { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipeToolOut" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/recipes/{group_slug}": { "get": { "tags": ["Explore: Recipes"], "summary": "Get All", "operationId": "get_all_api_explore_recipes__group_slug__get", "parameters": [ { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "categories", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" } ] } }, { "type": "null" } ], "title": "Categories" } }, { "name": "tags", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" } ] } }, { "type": "null" } ], "title": "Tags" } }, { "name": "tools", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" } ] } }, { "type": "null" } ], "title": "Tools" } }, { "name": "foods", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" } ] } }, { "type": "null" } ], "title": "Foods" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "default": 1, "title": "Page" } }, { "name": "perPage", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "title": "Perpage" } }, { "name": "orderBy", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orderby" } }, { "name": "orderByNullPosition", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/OrderByNullPosition" }, { "type": "null" } ], "title": "Orderbynullposition" } }, { "name": "orderDirection", "in": "query", "required": false, "schema": { "allOf": [ { "$ref": "#/components/schemas/OrderDirection" } ], "default": "desc", "title": "Orderdirection" } }, { "name": "queryFilter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Queryfilter" } }, { "name": "paginationSeed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paginationseed" } }, { "name": "cookbook", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "string" }, { "type": "null" } ], "title": "Cookbook" } }, { "name": "requireAllCategories", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Requireallcategories" } }, { "name": "requireAllTags", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Requirealltags" } }, { "name": "requireAllTools", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Requirealltools" } }, { "name": "requireAllFoods", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Requireallfoods" } }, { "name": "search", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Search" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginationBase_RecipeSummary_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/explore/recipes/{group_slug}/{recipe_slug}": { "get": { "tags": ["Explore: Recipes"], "summary": "Get Recipe", "operationId": "get_recipe_api_explore_recipes__group_slug___recipe_slug__get", "parameters": [ { "name": "recipe_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Recipe Slug" } }, { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "accept-language", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accept-Language" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Recipe-Output" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/media/recipes/{recipe_id}/images/{file_name}": { "get": { "tags": ["Recipe: Images and Assets"], "summary": "Get Recipe Img", "description": "Takes in a recipe id, returns the static image. This route is proxied in the docker image\nand should not hit the API in production", "operationId": "get_recipe_img_api_media_recipes__recipe_id__images__file_name__get", "parameters": [ { "name": "recipe_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Recipe Id" } }, { "name": "file_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/ImageType" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/media/recipes/{recipe_id}/images/timeline/{timeline_event_id}/{file_name}": { "get": { "tags": ["Recipe: Images and Assets"], "summary": "Get Recipe Timeline Event Img", "description": "Takes in a recipe id and event timeline id, returns the static image. This route is proxied in the docker image\nand should not hit the API in production", "operationId": "get_recipe_timeline_event_img_api_media_recipes__recipe_id__images_timeline__timeline_event_id___file_name__get", "parameters": [ { "name": "recipe_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Recipe Id" } }, { "name": "timeline_event_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Timeline Event Id" } }, { "name": "file_name", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/ImageType" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/media/recipes/{recipe_id}/assets/{file_name}": { "get": { "tags": ["Recipe: Images and Assets"], "summary": "Get Recipe Asset", "description": "Returns a recipe asset", "operationId": "get_recipe_asset_api_media_recipes__recipe_id__assets__file_name__get", "parameters": [ { "name": "recipe_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "Recipe Id" } }, { "name": "file_name", "in": "path", "required": true, "schema": { "type": "string", "title": "File Name" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/media/users/{user_id}/{file_name}": { "get": { "tags": ["Recipe: Images and Assets"], "summary": "Get User Image", "description": "Takes in a recipe slug, returns the static image. This route is proxied in the docker image\nand should not hit the API in production", "operationId": "get_user_image_api_media_users__user_id___file_name__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid4", "title": "User Id" } }, { "name": "file_name", "in": "path", "required": true, "schema": { "type": "string", "title": "File Name" } } ], "responses": { "200": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/media/docker/validate.txt": { "get": { "tags": ["Recipe: Images and Assets"], "summary": "Get Validation Text", "operationId": "get_validation_text_api_media_docker_validate_txt_get", "responses": { "200": { "description": "Successful Response" } } } }, "/api/utils/download": { "get": { "tags": ["Utils"], "summary": "Download File", "description": "Uses a file token obtained by an active user to retrieve a file from the operating\nsystem.", "operationId": "download_file_api_utils_download_get", "parameters": [ { "name": "token", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Token" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/g/{group_slug}/r/{recipe_slug}": { "get": { "summary": "Serve Recipe With Meta", "operationId": "serve_recipe_with_meta_g__group_slug__r__recipe_slug__get", "security": [ { "OAuth2PasswordBearer": [] } ], "parameters": [ { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "recipe_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Recipe Slug" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/g/{group_slug}/shared/r/{token_id}": { "get": { "summary": "Serve Shared Recipe With Meta", "operationId": "serve_shared_recipe_with_meta_g__group_slug__shared_r__token_id__get", "parameters": [ { "name": "group_slug", "in": "path", "required": true, "schema": { "type": "string", "title": "Group Slug" } }, { "name": "token_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Token Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } } }, "components": { "schemas": { "AdminAboutInfo": { "properties": { "production": { "type": "boolean", "title": "Production" }, "version": { "type": "string", "title": "Version" }, "demoStatus": { "type": "boolean", "title": "Demostatus" }, "allowSignup": { "type": "boolean", "title": "Allowsignup" }, "defaultGroupSlug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Defaultgroupslug" }, "enableOidc": { "type": "boolean", "title": "Enableoidc" }, "oidcRedirect": { "type": "boolean", "title": "Oidcredirect" }, "oidcProviderName": { "type": "string", "title": "Oidcprovidername" }, "enableOpenai": { "type": "boolean", "title": "Enableopenai" }, "versionLatest": { "type": "string", "title": "Versionlatest" }, "apiPort": { "type": "integer", "title": "Apiport" }, "apiDocs": { "type": "boolean", "title": "Apidocs" }, "dbType": { "type": "string", "title": "Dbtype" }, "dbUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Dburl" }, "defaultGroup": { "type": "string", "title": "Defaultgroup" }, "buildId": { "type": "string", "title": "Buildid" }, "recipeScraperVersion": { "type": "string", "title": "Recipescraperversion" } }, "type": "object", "required": [ "production", "version", "demoStatus", "allowSignup", "enableOidc", "oidcRedirect", "oidcProviderName", "enableOpenai", "versionLatest", "apiPort", "apiDocs", "dbType", "defaultGroup", "buildId", "recipeScraperVersion" ], "title": "AdminAboutInfo" }, "AllBackups": { "properties": { "imports": { "items": { "$ref": "#/components/schemas/BackupFile" }, "type": "array", "title": "Imports" }, "templates": { "items": { "type": "string" }, "type": "array", "title": "Templates" } }, "type": "object", "required": ["imports", "templates"], "title": "AllBackups" }, "AppInfo": { "properties": { "production": { "type": "boolean", "title": "Production" }, "version": { "type": "string", "title": "Version" }, "demoStatus": { "type": "boolean", "title": "Demostatus" }, "allowSignup": { "type": "boolean", "title": "Allowsignup" }, "defaultGroupSlug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Defaultgroupslug" }, "enableOidc": { "type": "boolean", "title": "Enableoidc" }, "oidcRedirect": { "type": "boolean", "title": "Oidcredirect" }, "oidcProviderName": { "type": "string", "title": "Oidcprovidername" }, "enableOpenai": { "type": "boolean", "title": "Enableopenai" } }, "type": "object", "required": [ "production", "version", "demoStatus", "allowSignup", "enableOidc", "oidcRedirect", "oidcProviderName", "enableOpenai" ], "title": "AppInfo" }, "AppStartupInfo": { "properties": { "isFirstLogin": { "type": "boolean", "title": "Isfirstlogin" }, "isDemo": { "type": "boolean", "title": "Isdemo" } }, "type": "object", "required": ["isFirstLogin", "isDemo"], "title": "AppStartupInfo" }, "AppStatistics": { "properties": { "totalRecipes": { "type": "integer", "title": "Totalrecipes" }, "totalUsers": { "type": "integer", "title": "Totalusers" }, "totalGroups": { "type": "integer", "title": "Totalgroups" }, "uncategorizedRecipes": { "type": "integer", "title": "Uncategorizedrecipes" }, "untaggedRecipes": { "type": "integer", "title": "Untaggedrecipes" } }, "type": "object", "required": [ "totalRecipes", "totalUsers", "totalGroups", "uncategorizedRecipes", "untaggedRecipes" ], "title": "AppStatistics" }, "AppTheme": { "properties": { "lightPrimary": { "type": "string", "title": "Lightprimary", "default": "#E58325" }, "lightAccent": { "type": "string", "title": "Lightaccent", "default": "#007A99" }, "lightSecondary": { "type": "string", "title": "Lightsecondary", "default": "#973542" }, "lightSuccess": { "type": "string", "title": "Lightsuccess", "default": "#43A047" }, "lightInfo": { "type": "string", "title": "Lightinfo", "default": "#1976D2" }, "lightWarning": { "type": "string", "title": "Lightwarning", "default": "#FF6D00" }, "lightError": { "type": "string", "title": "Lighterror", "default": "#EF5350" }, "darkPrimary": { "type": "string", "title": "Darkprimary", "default": "#E58325" }, "darkAccent": { "type": "string", "title": "Darkaccent", "default": "#007A99" }, "darkSecondary": { "type": "string", "title": "Darksecondary", "default": "#973542" }, "darkSuccess": { "type": "string", "title": "Darksuccess", "default": "#43A047" }, "darkInfo": { "type": "string", "title": "Darkinfo", "default": "#1976D2" }, "darkWarning": { "type": "string", "title": "Darkwarning", "default": "#FF6D00" }, "darkError": { "type": "string", "title": "Darkerror", "default": "#EF5350" } }, "type": "object", "title": "AppTheme" }, "AssignCategories": { "properties": { "recipes": { "items": { "type": "string" }, "type": "array", "title": "Recipes" }, "categories": { "items": { "$ref": "#/components/schemas/CategoryBase" }, "type": "array", "title": "Categories" } }, "type": "object", "required": ["recipes", "categories"], "title": "AssignCategories" }, "AssignSettings": { "properties": { "recipes": { "items": { "type": "string" }, "type": "array", "title": "Recipes" }, "settings": { "$ref": "#/components/schemas/RecipeSettings" } }, "type": "object", "required": ["recipes", "settings"], "title": "AssignSettings" }, "AssignTags": { "properties": { "recipes": { "items": { "type": "string" }, "type": "array", "title": "Recipes" }, "tags": { "items": { "$ref": "#/components/schemas/TagBase" }, "type": "array", "title": "Tags" } }, "type": "object", "required": ["recipes", "tags"], "title": "AssignTags" }, "AuthMethod": { "type": "string", "enum": ["Mealie", "LDAP", "OIDC"], "title": "AuthMethod" }, "BackupFile": { "properties": { "name": { "type": "string", "title": "Name" }, "date": { "type": "string", "format": "date-time", "title": "Date" }, "size": { "type": "string", "title": "Size" } }, "type": "object", "required": ["name", "date", "size"], "title": "BackupFile" }, "Body_create_recipe_from_zip_api_recipes_create_from_zip_post": { "properties": { "archive": { "type": "string", "format": "binary", "title": "Archive" } }, "type": "object", "required": ["archive"], "title": "Body_create_recipe_from_zip_api_recipes_create_from_zip_post" }, "Body_get_token_api_auth_token_post": { "properties": { "username": { "type": "string", "title": "Username", "default": "" }, "password": { "type": "string", "title": "Password", "default": "" }, "remember_me": { "type": "boolean", "title": "Remember Me", "default": false } }, "type": "object", "title": "Body_get_token_api_auth_token_post" }, "Body_start_data_migration_api_groups_migrations_post": { "properties": { "add_migration_tag": { "type": "boolean", "title": "Add Migration Tag", "default": false }, "migration_type": { "$ref": "#/components/schemas/SupportedMigrations" }, "archive": { "type": "string", "format": "binary", "title": "Archive" } }, "type": "object", "required": ["migration_type", "archive"], "title": "Body_start_data_migration_api_groups_migrations_post" }, "Body_update_event_image_api_recipes_timeline_events__item_id__image_put": { "properties": { "image": { "type": "string", "format": "binary", "title": "Image" }, "extension": { "type": "string", "title": "Extension" } }, "type": "object", "required": ["image", "extension"], "title": "Body_update_event_image_api_recipes_timeline_events__item_id__image_put" }, "Body_update_recipe_image_api_recipes__slug__image_put": { "properties": { "image": { "type": "string", "format": "binary", "title": "Image" }, "extension": { "type": "string", "title": "Extension" } }, "type": "object", "required": ["image", "extension"], "title": "Body_update_recipe_image_api_recipes__slug__image_put" }, "Body_update_user_image_api_users__id__image_post": { "properties": { "profile": { "type": "string", "format": "binary", "title": "Profile" } }, "type": "object", "required": ["profile"], "title": "Body_update_user_image_api_users__id__image_post" }, "Body_upload_one_api_admin_backups_upload_post": { "properties": { "archive": { "type": "string", "format": "binary", "title": "Archive" } }, "type": "object", "required": ["archive"], "title": "Body_upload_one_api_admin_backups_upload_post" }, "Body_upload_recipe_asset_api_recipes__slug__assets_post": { "properties": { "name": { "type": "string", "title": "Name" }, "icon": { "type": "string", "title": "Icon" }, "extension": { "type": "string", "title": "Extension" }, "file": { "type": "string", "format": "binary", "title": "File" } }, "type": "object", "required": ["name", "icon", "extension", "file"], "title": "Body_upload_recipe_asset_api_recipes__slug__assets_post" }, "Category": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "slug": { "type": "string", "title": "Slug" } }, "type": "object", "required": ["id", "name", "slug"], "title": "Category" }, "CategoryBase": { "properties": { "name": { "type": "string", "title": "Name" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "slug": { "type": "string", "title": "Slug" } }, "type": "object", "required": ["name", "id", "slug"], "title": "CategoryBase" }, "CategoryIn": { "properties": { "name": { "type": "string", "title": "Name" } }, "type": "object", "required": ["name"], "title": "CategoryIn" }, "CategoryOut": { "properties": { "name": { "type": "string", "title": "Name" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "slug": { "type": "string", "title": "Slug" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" } }, "type": "object", "required": ["name", "id", "slug", "groupId"], "title": "CategoryOut" }, "CategorySummary": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "slug": { "type": "string", "title": "Slug" }, "name": { "type": "string", "title": "Name" } }, "type": "object", "required": ["id", "slug", "name"], "title": "CategorySummary" }, "ChangePassword": { "properties": { "currentPassword": { "type": "string", "title": "Currentpassword", "default": "" }, "newPassword": { "type": "string", "minLength": 8, "title": "Newpassword" } }, "type": "object", "required": ["newPassword"], "title": "ChangePassword" }, "CheckAppConfig": { "properties": { "emailReady": { "type": "boolean", "title": "Emailready" }, "ldapReady": { "type": "boolean", "title": "Ldapready" }, "oidcReady": { "type": "boolean", "title": "Oidcready" }, "enableOpenai": { "type": "boolean", "title": "Enableopenai" }, "baseUrlSet": { "type": "boolean", "title": "Baseurlset" }, "isUpToDate": { "type": "boolean", "title": "Isuptodate" } }, "type": "object", "required": [ "emailReady", "ldapReady", "oidcReady", "enableOpenai", "baseUrlSet", "isUpToDate" ], "title": "CheckAppConfig" }, "CookBookPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/ReadCookBook" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "CookBookPagination" }, "CreateCookBook": { "properties": { "name": { "type": "string", "title": "Name" }, "description": { "type": "string", "title": "Description", "default": "" }, "slug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Slug" }, "position": { "type": "integer", "title": "Position", "default": 1 }, "public": { "type": "boolean", "title": "Public", "default": false }, "categories": { "items": { "$ref": "#/components/schemas/CategoryBase" }, "type": "array", "title": "Categories", "default": [] }, "tags": { "items": { "$ref": "#/components/schemas/TagBase" }, "type": "array", "title": "Tags", "default": [] }, "tools": { "items": { "$ref": "#/components/schemas/RecipeTool" }, "type": "array", "title": "Tools", "default": [] }, "requireAllCategories": { "type": "boolean", "title": "Requireallcategories", "default": true }, "requireAllTags": { "type": "boolean", "title": "Requirealltags", "default": true }, "requireAllTools": { "type": "boolean", "title": "Requirealltools", "default": true } }, "type": "object", "required": ["name"], "title": "CreateCookBook" }, "CreateGroupRecipeAction": { "properties": { "actionType": { "$ref": "#/components/schemas/GroupRecipeActionType" }, "title": { "type": "string", "title": "Title" }, "url": { "type": "string", "title": "Url" } }, "type": "object", "required": ["actionType", "title", "url"], "title": "CreateGroupRecipeAction" }, "CreateIngredientFood": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Id" }, "name": { "type": "string", "title": "Name" }, "pluralName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Pluralname" }, "description": { "type": "string", "title": "Description", "default": "" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "onHand": { "type": "boolean", "title": "Onhand", "default": false }, "labelId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Labelid" }, "aliases": { "items": { "$ref": "#/components/schemas/CreateIngredientFoodAlias" }, "type": "array", "title": "Aliases", "default": [] } }, "type": "object", "required": ["name"], "title": "CreateIngredientFood" }, "CreateIngredientFoodAlias": { "properties": { "name": { "type": "string", "title": "Name" } }, "type": "object", "required": ["name"], "title": "CreateIngredientFoodAlias" }, "CreateIngredientUnit": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Id" }, "name": { "type": "string", "title": "Name" }, "pluralName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Pluralname" }, "description": { "type": "string", "title": "Description", "default": "" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "onHand": { "type": "boolean", "title": "Onhand", "default": false }, "fraction": { "type": "boolean", "title": "Fraction", "default": true }, "abbreviation": { "type": "string", "title": "Abbreviation", "default": "" }, "pluralAbbreviation": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Pluralabbreviation", "default": "" }, "useAbbreviation": { "type": "boolean", "title": "Useabbreviation", "default": false }, "aliases": { "items": { "$ref": "#/components/schemas/CreateIngredientUnitAlias" }, "type": "array", "title": "Aliases", "default": [] } }, "type": "object", "required": ["name"], "title": "CreateIngredientUnit" }, "CreateIngredientUnitAlias": { "properties": { "name": { "type": "string", "title": "Name" } }, "type": "object", "required": ["name"], "title": "CreateIngredientUnitAlias" }, "CreateInviteToken": { "properties": { "uses": { "type": "integer", "title": "Uses" } }, "type": "object", "required": ["uses"], "title": "CreateInviteToken" }, "CreatePlanEntry": { "properties": { "date": { "type": "string", "format": "date", "title": "Date" }, "entryType": { "allOf": [ { "$ref": "#/components/schemas/PlanEntryType" } ], "default": "breakfast" }, "title": { "type": "string", "title": "Title", "default": "" }, "text": { "type": "string", "title": "Text", "default": "" }, "recipeId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Recipeid" } }, "type": "object", "required": ["date"], "title": "CreatePlanEntry" }, "CreateRandomEntry": { "properties": { "date": { "type": "string", "format": "date", "title": "Date" }, "entryType": { "allOf": [ { "$ref": "#/components/schemas/PlanEntryType" } ], "default": "dinner" } }, "type": "object", "required": ["date"], "title": "CreateRandomEntry" }, "CreateRecipe": { "properties": { "name": { "type": "string", "title": "Name" } }, "type": "object", "required": ["name"], "title": "CreateRecipe" }, "CreateRecipeBulk": { "properties": { "url": { "type": "string", "title": "Url" }, "categories": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeCategory" }, "type": "array" }, { "type": "null" } ], "title": "Categories" }, "tags": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeTag" }, "type": "array" }, { "type": "null" } ], "title": "Tags" } }, "type": "object", "required": ["url"], "title": "CreateRecipeBulk" }, "CreateRecipeByUrlBulk": { "properties": { "imports": { "items": { "$ref": "#/components/schemas/CreateRecipeBulk" }, "type": "array", "title": "Imports" } }, "type": "object", "required": ["imports"], "title": "CreateRecipeByUrlBulk" }, "CreateUserRegistration": { "properties": { "group": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group" }, "groupToken": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Grouptoken" }, "email": { "type": "string", "title": "Email" }, "username": { "type": "string", "title": "Username" }, "fullName": { "type": "string", "title": "Fullname" }, "password": { "type": "string", "title": "Password" }, "passwordConfirm": { "type": "string", "title": "Passwordconfirm" }, "advanced": { "type": "boolean", "title": "Advanced", "default": false }, "private": { "type": "boolean", "title": "Private", "default": false }, "seedData": { "type": "boolean", "title": "Seeddata", "default": false }, "locale": { "type": "string", "title": "Locale", "default": "en-US" } }, "type": "object", "required": [ "email", "username", "fullName", "password", "passwordConfirm" ], "title": "CreateUserRegistration" }, "CreateWebhook": { "properties": { "enabled": { "type": "boolean", "title": "Enabled", "default": true }, "name": { "type": "string", "title": "Name", "default": "" }, "url": { "type": "string", "title": "Url", "default": "" }, "webhookType": { "allOf": [ { "$ref": "#/components/schemas/WebhookType" } ], "default": "mealplan" }, "scheduledTime": { "type": "string", "format": "time", "title": "Scheduledtime" } }, "type": "object", "required": ["scheduledTime"], "title": "CreateWebhook" }, "DeleteRecipes": { "properties": { "recipes": { "items": { "type": "string" }, "type": "array", "title": "Recipes" } }, "type": "object", "required": ["recipes"], "title": "DeleteRecipes" }, "DeleteTokenResponse": { "properties": { "tokenDelete": { "type": "string", "title": "Tokendelete" } }, "type": "object", "required": ["tokenDelete"], "title": "DeleteTokenResponse" }, "EmailInitationResponse": { "properties": { "success": { "type": "boolean", "title": "Success" }, "error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Error" } }, "type": "object", "required": ["success"], "title": "EmailInitationResponse" }, "EmailInvitation": { "properties": { "email": { "type": "string", "title": "Email" }, "token": { "type": "string", "title": "Token" } }, "type": "object", "required": ["email", "token"], "title": "EmailInvitation" }, "EmailReady": { "properties": { "ready": { "type": "boolean", "title": "Ready" } }, "type": "object", "required": ["ready"], "title": "EmailReady" }, "EmailSuccess": { "properties": { "success": { "type": "boolean", "title": "Success" }, "error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Error" } }, "type": "object", "required": ["success"], "title": "EmailSuccess" }, "EmailTest": { "properties": { "email": { "type": "string", "title": "Email" } }, "type": "object", "required": ["email"], "title": "EmailTest" }, "ExportRecipes": { "properties": { "recipes": { "items": { "type": "string" }, "type": "array", "title": "Recipes" }, "exportType": { "allOf": [ { "$ref": "#/components/schemas/ExportTypes" } ], "default": "json" } }, "type": "object", "required": ["recipes"], "title": "ExportRecipes" }, "ExportTypes": { "type": "string", "enum": ["json"], "const": "json", "title": "ExportTypes" }, "FileTokenResponse": { "properties": { "fileToken": { "type": "string", "title": "Filetoken" } }, "type": "object", "required": ["fileToken"], "title": "FileTokenResponse" }, "ForgotPassword": { "properties": { "email": { "type": "string", "title": "Email" } }, "type": "object", "required": ["email"], "title": "ForgotPassword" }, "FormatResponse": { "properties": { "json": { "items": { "type": "string" }, "type": "array", "title": "Json" }, "zip": { "items": { "type": "string" }, "type": "array", "title": "Zip" }, "jinja2": { "items": { "type": "string" }, "type": "array", "title": "Jinja2" } }, "type": "object", "required": ["json", "zip", "jinja2"], "title": "FormatResponse" }, "GroupAdminUpdate": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "preferences": { "anyOf": [ { "$ref": "#/components/schemas/UpdateGroupPreferences" }, { "type": "null" } ] } }, "type": "object", "required": ["id", "name"], "title": "GroupAdminUpdate" }, "GroupBase": { "properties": { "name": { "type": "string", "minLength": 1, "title": "Name" } }, "type": "object", "required": ["name"], "title": "GroupBase" }, "GroupDataExport": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "name": { "type": "string", "title": "Name" }, "filename": { "type": "string", "title": "Filename" }, "path": { "type": "string", "title": "Path" }, "size": { "type": "string", "title": "Size" }, "expires": { "type": "string", "format": "date-time", "title": "Expires" } }, "type": "object", "required": [ "id", "groupId", "name", "filename", "path", "size", "expires" ], "title": "GroupDataExport" }, "GroupEventNotifierCreate": { "properties": { "name": { "type": "string", "title": "Name" }, "appriseUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Appriseurl" } }, "type": "object", "required": ["name"], "title": "GroupEventNotifierCreate" }, "GroupEventNotifierOptions": { "properties": { "testMessage": { "type": "boolean", "title": "Testmessage", "default": false }, "webhookTask": { "type": "boolean", "title": "Webhooktask", "default": false }, "recipeCreated": { "type": "boolean", "title": "Recipecreated", "default": false }, "recipeUpdated": { "type": "boolean", "title": "Recipeupdated", "default": false }, "recipeDeleted": { "type": "boolean", "title": "Recipedeleted", "default": false }, "userSignup": { "type": "boolean", "title": "Usersignup", "default": false }, "dataMigrations": { "type": "boolean", "title": "Datamigrations", "default": false }, "dataExport": { "type": "boolean", "title": "Dataexport", "default": false }, "dataImport": { "type": "boolean", "title": "Dataimport", "default": false }, "mealplanEntryCreated": { "type": "boolean", "title": "Mealplanentrycreated", "default": false }, "shoppingListCreated": { "type": "boolean", "title": "Shoppinglistcreated", "default": false }, "shoppingListUpdated": { "type": "boolean", "title": "Shoppinglistupdated", "default": false }, "shoppingListDeleted": { "type": "boolean", "title": "Shoppinglistdeleted", "default": false }, "cookbookCreated": { "type": "boolean", "title": "Cookbookcreated", "default": false }, "cookbookUpdated": { "type": "boolean", "title": "Cookbookupdated", "default": false }, "cookbookDeleted": { "type": "boolean", "title": "Cookbookdeleted", "default": false }, "tagCreated": { "type": "boolean", "title": "Tagcreated", "default": false }, "tagUpdated": { "type": "boolean", "title": "Tagupdated", "default": false }, "tagDeleted": { "type": "boolean", "title": "Tagdeleted", "default": false }, "categoryCreated": { "type": "boolean", "title": "Categorycreated", "default": false }, "categoryUpdated": { "type": "boolean", "title": "Categoryupdated", "default": false }, "categoryDeleted": { "type": "boolean", "title": "Categorydeleted", "default": false } }, "type": "object", "title": "GroupEventNotifierOptions", "description": "These events are in-sync with the EventTypes found in the EventBusService.\nIf you modify this, make sure to update the EventBusService as well." }, "GroupEventNotifierOptionsOut": { "properties": { "testMessage": { "type": "boolean", "title": "Testmessage", "default": false }, "webhookTask": { "type": "boolean", "title": "Webhooktask", "default": false }, "recipeCreated": { "type": "boolean", "title": "Recipecreated", "default": false }, "recipeUpdated": { "type": "boolean", "title": "Recipeupdated", "default": false }, "recipeDeleted": { "type": "boolean", "title": "Recipedeleted", "default": false }, "userSignup": { "type": "boolean", "title": "Usersignup", "default": false }, "dataMigrations": { "type": "boolean", "title": "Datamigrations", "default": false }, "dataExport": { "type": "boolean", "title": "Dataexport", "default": false }, "dataImport": { "type": "boolean", "title": "Dataimport", "default": false }, "mealplanEntryCreated": { "type": "boolean", "title": "Mealplanentrycreated", "default": false }, "shoppingListCreated": { "type": "boolean", "title": "Shoppinglistcreated", "default": false }, "shoppingListUpdated": { "type": "boolean", "title": "Shoppinglistupdated", "default": false }, "shoppingListDeleted": { "type": "boolean", "title": "Shoppinglistdeleted", "default": false }, "cookbookCreated": { "type": "boolean", "title": "Cookbookcreated", "default": false }, "cookbookUpdated": { "type": "boolean", "title": "Cookbookupdated", "default": false }, "cookbookDeleted": { "type": "boolean", "title": "Cookbookdeleted", "default": false }, "tagCreated": { "type": "boolean", "title": "Tagcreated", "default": false }, "tagUpdated": { "type": "boolean", "title": "Tagupdated", "default": false }, "tagDeleted": { "type": "boolean", "title": "Tagdeleted", "default": false }, "categoryCreated": { "type": "boolean", "title": "Categorycreated", "default": false }, "categoryUpdated": { "type": "boolean", "title": "Categoryupdated", "default": false }, "categoryDeleted": { "type": "boolean", "title": "Categorydeleted", "default": false }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["id"], "title": "GroupEventNotifierOptionsOut" }, "GroupEventNotifierOut": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "enabled": { "type": "boolean", "title": "Enabled" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "options": { "$ref": "#/components/schemas/GroupEventNotifierOptionsOut" } }, "type": "object", "required": ["id", "name", "enabled", "groupId", "options"], "title": "GroupEventNotifierOut" }, "GroupEventNotifierUpdate": { "properties": { "name": { "type": "string", "title": "Name" }, "appriseUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Appriseurl" }, "enabled": { "type": "boolean", "title": "Enabled", "default": true }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "options": { "allOf": [ { "$ref": "#/components/schemas/GroupEventNotifierOptions" } ], "default": { "testMessage": false, "webhookTask": false, "recipeCreated": false, "recipeUpdated": false, "recipeDeleted": false, "userSignup": false, "dataMigrations": false, "dataExport": false, "dataImport": false, "mealplanEntryCreated": false, "shoppingListCreated": false, "shoppingListUpdated": false, "shoppingListDeleted": false, "cookbookCreated": false, "cookbookUpdated": false, "cookbookDeleted": false, "tagCreated": false, "tagUpdated": false, "tagDeleted": false, "categoryCreated": false, "categoryUpdated": false, "categoryDeleted": false } }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["name", "groupId", "id"], "title": "GroupEventNotifierUpdate" }, "GroupEventPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/GroupEventNotifierOut" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "GroupEventPagination" }, "GroupInDB": { "properties": { "name": { "type": "string", "title": "Name" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "slug": { "type": "string", "title": "Slug" }, "categories": { "anyOf": [ { "items": { "$ref": "#/components/schemas/CategoryBase" }, "type": "array" }, { "type": "null" } ], "title": "Categories", "default": [] }, "webhooks": { "items": { "$ref": "#/components/schemas/ReadWebhook" }, "type": "array", "title": "Webhooks", "default": [] }, "users": { "anyOf": [ { "items": { "$ref": "#/components/schemas/UserSummary" }, "type": "array" }, { "type": "null" } ], "title": "Users" }, "preferences": { "anyOf": [ { "$ref": "#/components/schemas/ReadGroupPreferences" }, { "type": "null" } ] } }, "type": "object", "required": ["name", "id", "slug"], "title": "GroupInDB" }, "GroupPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/GroupInDB" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "GroupPagination" }, "GroupRecipeActionOut": { "properties": { "actionType": { "$ref": "#/components/schemas/GroupRecipeActionType" }, "title": { "type": "string", "title": "Title" }, "url": { "type": "string", "title": "Url" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["actionType", "title", "url", "groupId", "id"], "title": "GroupRecipeActionOut" }, "GroupRecipeActionPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/GroupRecipeActionOut" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "GroupRecipeActionPagination" }, "GroupRecipeActionType": { "type": "string", "enum": ["link", "post"], "title": "GroupRecipeActionType" }, "GroupStatistics": { "properties": { "totalRecipes": { "type": "integer", "title": "Totalrecipes" }, "totalUsers": { "type": "integer", "title": "Totalusers" }, "totalCategories": { "type": "integer", "title": "Totalcategories" }, "totalTags": { "type": "integer", "title": "Totaltags" }, "totalTools": { "type": "integer", "title": "Totaltools" } }, "type": "object", "required": [ "totalRecipes", "totalUsers", "totalCategories", "totalTags", "totalTools" ], "title": "GroupStatistics" }, "GroupStorage": { "properties": { "usedStorageBytes": { "type": "integer", "title": "Usedstoragebytes" }, "usedStorageStr": { "type": "string", "title": "Usedstoragestr" }, "totalStorageBytes": { "type": "integer", "title": "Totalstoragebytes" }, "totalStorageStr": { "type": "string", "title": "Totalstoragestr" } }, "type": "object", "required": [ "usedStorageBytes", "usedStorageStr", "totalStorageBytes", "totalStorageStr" ], "title": "GroupStorage" }, "GroupSummary": { "properties": { "name": { "type": "string", "title": "Name" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "slug": { "type": "string", "title": "Slug" }, "preferences": { "anyOf": [ { "$ref": "#/components/schemas/ReadGroupPreferences" }, { "type": "null" } ] } }, "type": "object", "required": ["name", "id", "slug"], "title": "GroupSummary" }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "type": "array", "title": "Detail" } }, "type": "object", "title": "HTTPValidationError" }, "ImageType": { "type": "string", "enum": [ "original.webp", "min-original.webp", "tiny-original.webp" ], "title": "ImageType" }, "IngredientConfidence": { "properties": { "average": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Average" }, "comment": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Comment" }, "name": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Name" }, "unit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Unit" }, "quantity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Quantity" }, "food": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Food" } }, "type": "object", "title": "IngredientConfidence" }, "IngredientFood": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "pluralName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Pluralname" }, "description": { "type": "string", "title": "Description", "default": "" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "onHand": { "type": "boolean", "title": "Onhand", "default": false }, "labelId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Labelid" }, "aliases": { "items": { "$ref": "#/components/schemas/IngredientFoodAlias" }, "type": "array", "title": "Aliases", "default": [] }, "label": { "anyOf": [ { "$ref": "#/components/schemas/MultiPurposeLabelSummary" }, { "type": "null" } ] }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "updateAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updateat" } }, "type": "object", "required": ["id", "name"], "title": "IngredientFood" }, "IngredientFoodAlias": { "properties": { "name": { "type": "string", "title": "Name" } }, "type": "object", "required": ["name"], "title": "IngredientFoodAlias" }, "IngredientFoodPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/IngredientFood" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "IngredientFoodPagination" }, "IngredientReferences": { "properties": { "referenceId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Referenceid" } }, "type": "object", "title": "IngredientReferences", "description": "A list of ingredient references." }, "IngredientRequest": { "properties": { "parser": { "allOf": [ { "$ref": "#/components/schemas/RegisteredParser" } ], "default": "nlp" }, "ingredient": { "type": "string", "title": "Ingredient" } }, "type": "object", "required": ["ingredient"], "title": "IngredientRequest" }, "IngredientUnit": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "pluralName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Pluralname" }, "description": { "type": "string", "title": "Description", "default": "" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "onHand": { "type": "boolean", "title": "Onhand", "default": false }, "fraction": { "type": "boolean", "title": "Fraction", "default": true }, "abbreviation": { "type": "string", "title": "Abbreviation", "default": "" }, "pluralAbbreviation": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Pluralabbreviation", "default": "" }, "useAbbreviation": { "type": "boolean", "title": "Useabbreviation", "default": false }, "aliases": { "items": { "$ref": "#/components/schemas/IngredientUnitAlias" }, "type": "array", "title": "Aliases", "default": [] }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "updateAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updateat" } }, "type": "object", "required": ["id", "name"], "title": "IngredientUnit" }, "IngredientUnitAlias": { "properties": { "name": { "type": "string", "title": "Name" } }, "type": "object", "required": ["name"], "title": "IngredientUnitAlias" }, "IngredientUnitPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/IngredientUnit" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "IngredientUnitPagination" }, "IngredientsRequest": { "properties": { "parser": { "allOf": [ { "$ref": "#/components/schemas/RegisteredParser" } ], "default": "nlp" }, "ingredients": { "items": { "type": "string" }, "type": "array", "title": "Ingredients" } }, "type": "object", "required": ["ingredients"], "title": "IngredientsRequest" }, "LongLiveTokenIn": { "properties": { "name": { "type": "string", "title": "Name" }, "integrationId": { "type": "string", "title": "Integrationid", "default": "generic" } }, "type": "object", "required": ["name"], "title": "LongLiveTokenIn" }, "LongLiveTokenOut": { "properties": { "token": { "type": "string", "title": "Token" }, "name": { "type": "string", "title": "Name" }, "id": { "type": "integer", "title": "Id" }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" } }, "type": "object", "required": ["token", "name", "id"], "title": "LongLiveTokenOut" }, "MaintenanceStorageDetails": { "properties": { "tempDirSize": { "type": "string", "title": "Tempdirsize" }, "backupsDirSize": { "type": "string", "title": "Backupsdirsize" }, "groupsDirSize": { "type": "string", "title": "Groupsdirsize" }, "recipesDirSize": { "type": "string", "title": "Recipesdirsize" }, "userDirSize": { "type": "string", "title": "Userdirsize" } }, "type": "object", "required": [ "tempDirSize", "backupsDirSize", "groupsDirSize", "recipesDirSize", "userDirSize" ], "title": "MaintenanceStorageDetails" }, "MaintenanceSummary": { "properties": { "dataDirSize": { "type": "string", "title": "Datadirsize" }, "cleanableImages": { "type": "integer", "title": "Cleanableimages" }, "cleanableDirs": { "type": "integer", "title": "Cleanabledirs" } }, "type": "object", "required": ["dataDirSize", "cleanableImages", "cleanableDirs"], "title": "MaintenanceSummary" }, "MealieAnalytics": { "properties": { "installationId": { "type": "string", "format": "uuid4", "title": "Installationid" }, "version": { "type": "string", "title": "Version" }, "databaseType": { "type": "string", "title": "Databasetype" }, "usingEmail": { "type": "boolean", "title": "Usingemail" }, "usingLdap": { "type": "boolean", "title": "Usingldap" }, "apiTokens": { "type": "integer", "title": "Apitokens" }, "users": { "type": "integer", "title": "Users" }, "groups": { "type": "integer", "title": "Groups" }, "recipes": { "type": "integer", "title": "Recipes" }, "shoppingLists": { "type": "integer", "title": "Shoppinglists" }, "cookbooks": { "type": "integer", "title": "Cookbooks" } }, "type": "object", "required": [ "installationId", "version", "databaseType", "usingEmail", "usingLdap", "apiTokens", "users", "groups", "recipes", "shoppingLists", "cookbooks" ], "title": "MealieAnalytics" }, "MergeFood": { "properties": { "fromFood": { "type": "string", "format": "uuid4", "title": "Fromfood" }, "toFood": { "type": "string", "format": "uuid4", "title": "Tofood" } }, "type": "object", "required": ["fromFood", "toFood"], "title": "MergeFood" }, "MergeUnit": { "properties": { "fromUnit": { "type": "string", "format": "uuid4", "title": "Fromunit" }, "toUnit": { "type": "string", "format": "uuid4", "title": "Tounit" } }, "type": "object", "required": ["fromUnit", "toUnit"], "title": "MergeUnit" }, "MultiPurposeLabelCreate": { "properties": { "name": { "type": "string", "title": "Name" }, "color": { "type": "string", "title": "Color", "default": "#E0E0E0" } }, "type": "object", "required": ["name"], "title": "MultiPurposeLabelCreate" }, "MultiPurposeLabelOut": { "properties": { "name": { "type": "string", "title": "Name" }, "color": { "type": "string", "title": "Color", "default": "#E0E0E0" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["name", "groupId", "id"], "title": "MultiPurposeLabelOut" }, "MultiPurposeLabelPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/MultiPurposeLabelSummary" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "MultiPurposeLabelPagination" }, "MultiPurposeLabelSummary": { "properties": { "name": { "type": "string", "title": "Name" }, "color": { "type": "string", "title": "Color", "default": "#E0E0E0" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["name", "groupId", "id"], "title": "MultiPurposeLabelSummary" }, "MultiPurposeLabelUpdate": { "properties": { "name": { "type": "string", "title": "Name" }, "color": { "type": "string", "title": "Color", "default": "#E0E0E0" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["name", "groupId", "id"], "title": "MultiPurposeLabelUpdate" }, "Nutrition": { "properties": { "calories": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Calories" }, "fatContent": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fatcontent" }, "proteinContent": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Proteincontent" }, "carbohydrateContent": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Carbohydratecontent" }, "fiberContent": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fibercontent" }, "sodiumContent": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sodiumcontent" }, "sugarContent": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sugarcontent" } }, "type": "object", "title": "Nutrition" }, "OIDCInfo": { "properties": { "configurationUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Configurationurl" }, "clientId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Clientid" }, "groupsClaim": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Groupsclaim" } }, "type": "object", "required": ["configurationUrl", "clientId", "groupsClaim"], "title": "OIDCInfo" }, "OrderByNullPosition": { "type": "string", "enum": ["first", "last"], "title": "OrderByNullPosition" }, "OrderDirection": { "type": "string", "enum": ["asc", "desc"], "title": "OrderDirection" }, "PaginationBase_IngredientFood_": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/IngredientFood" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "PaginationBase[IngredientFood]" }, "PaginationBase_ReadCookBook_": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/ReadCookBook" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "PaginationBase[ReadCookBook]" }, "PaginationBase_RecipeCategory_": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/RecipeCategory" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "PaginationBase[RecipeCategory]" }, "PaginationBase_RecipeSummary_": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/RecipeSummary" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "PaginationBase[RecipeSummary]" }, "PaginationBase_RecipeTag_": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/RecipeTag" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "PaginationBase[RecipeTag]" }, "PaginationBase_RecipeTool_": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/RecipeTool" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "PaginationBase[RecipeTool]" }, "ParsedIngredient": { "properties": { "input": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Input" }, "confidence": { "allOf": [ { "$ref": "#/components/schemas/IngredientConfidence" } ], "default": {} }, "ingredient": { "$ref": "#/components/schemas/RecipeIngredient-Output" } }, "type": "object", "required": ["ingredient"], "title": "ParsedIngredient" }, "PasswordResetToken": { "properties": { "token": { "type": "string", "title": "Token" } }, "type": "object", "required": ["token"], "title": "PasswordResetToken" }, "PlanEntryPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/ReadPlanEntry" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "PlanEntryPagination" }, "PlanEntryType": { "type": "string", "enum": ["breakfast", "lunch", "dinner", "side"], "title": "PlanEntryType" }, "PlanRulesCreate": { "properties": { "day": { "allOf": [ { "$ref": "#/components/schemas/PlanRulesDay" } ], "default": "unset" }, "entryType": { "allOf": [ { "$ref": "#/components/schemas/PlanRulesType" } ], "default": "unset" }, "categories": { "items": { "$ref": "#/components/schemas/Category" }, "type": "array", "title": "Categories", "default": [] }, "tags": { "items": { "$ref": "#/components/schemas/Tag" }, "type": "array", "title": "Tags", "default": [] } }, "type": "object", "title": "PlanRulesCreate" }, "PlanRulesDay": { "type": "string", "enum": [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday", "unset" ], "title": "PlanRulesDay" }, "PlanRulesOut": { "properties": { "day": { "allOf": [ { "$ref": "#/components/schemas/PlanRulesDay" } ], "default": "unset" }, "entryType": { "allOf": [ { "$ref": "#/components/schemas/PlanRulesType" } ], "default": "unset" }, "categories": { "items": { "$ref": "#/components/schemas/Category" }, "type": "array", "title": "Categories", "default": [] }, "tags": { "items": { "$ref": "#/components/schemas/Tag" }, "type": "array", "title": "Tags", "default": [] }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["groupId", "id"], "title": "PlanRulesOut" }, "PlanRulesPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/PlanRulesOut" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "PlanRulesPagination" }, "PlanRulesType": { "type": "string", "enum": ["breakfast", "lunch", "dinner", "side", "unset"], "title": "PlanRulesType" }, "ReadCookBook": { "properties": { "name": { "type": "string", "title": "Name" }, "description": { "type": "string", "title": "Description", "default": "" }, "slug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Slug" }, "position": { "type": "integer", "title": "Position", "default": 1 }, "public": { "type": "boolean", "title": "Public", "default": false }, "categories": { "items": { "$ref": "#/components/schemas/CategoryBase" }, "type": "array", "title": "Categories", "default": [] }, "tags": { "items": { "$ref": "#/components/schemas/TagBase" }, "type": "array", "title": "Tags", "default": [] }, "tools": { "items": { "$ref": "#/components/schemas/RecipeTool" }, "type": "array", "title": "Tools", "default": [] }, "requireAllCategories": { "type": "boolean", "title": "Requireallcategories", "default": true }, "requireAllTags": { "type": "boolean", "title": "Requirealltags", "default": true }, "requireAllTools": { "type": "boolean", "title": "Requirealltools", "default": true }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["name", "groupId", "id"], "title": "ReadCookBook" }, "ReadGroupPreferences": { "properties": { "privateGroup": { "type": "boolean", "title": "Privategroup", "default": true }, "firstDayOfWeek": { "type": "integer", "title": "Firstdayofweek", "default": 0 }, "recipePublic": { "type": "boolean", "title": "Recipepublic", "default": true }, "recipeShowNutrition": { "type": "boolean", "title": "Recipeshownutrition", "default": false }, "recipeShowAssets": { "type": "boolean", "title": "Recipeshowassets", "default": false }, "recipeLandscapeView": { "type": "boolean", "title": "Recipelandscapeview", "default": false }, "recipeDisableComments": { "type": "boolean", "title": "Recipedisablecomments", "default": false }, "recipeDisableAmount": { "type": "boolean", "title": "Recipedisableamount", "default": true }, "groupId": { "type": "string", "format": "uuid", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["groupId", "id"], "title": "ReadGroupPreferences" }, "ReadInviteToken": { "properties": { "token": { "type": "string", "title": "Token" }, "usesLeft": { "type": "integer", "title": "Usesleft" }, "groupId": { "type": "string", "format": "uuid", "title": "Groupid" } }, "type": "object", "required": ["token", "usesLeft", "groupId"], "title": "ReadInviteToken" }, "ReadPlanEntry": { "properties": { "date": { "type": "string", "format": "date", "title": "Date" }, "entryType": { "allOf": [ { "$ref": "#/components/schemas/PlanEntryType" } ], "default": "breakfast" }, "title": { "type": "string", "title": "Title", "default": "" }, "text": { "type": "string", "title": "Text", "default": "" }, "recipeId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Recipeid" }, "id": { "type": "integer", "title": "Id" }, "groupId": { "type": "string", "format": "uuid", "title": "Groupid" }, "userId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Userid" }, "recipe": { "anyOf": [ { "$ref": "#/components/schemas/RecipeSummary" }, { "type": "null" } ] } }, "type": "object", "required": ["date", "id", "groupId"], "title": "ReadPlanEntry" }, "ReadWebhook": { "properties": { "enabled": { "type": "boolean", "title": "Enabled", "default": true }, "name": { "type": "string", "title": "Name", "default": "" }, "url": { "type": "string", "title": "Url", "default": "" }, "webhookType": { "allOf": [ { "$ref": "#/components/schemas/WebhookType" } ], "default": "mealplan" }, "scheduledTime": { "type": "string", "format": "time", "title": "Scheduledtime" }, "groupId": { "type": "string", "format": "uuid", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["scheduledTime", "groupId", "id"], "title": "ReadWebhook" }, "Recipe-Input": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Id" }, "userId": { "type": "string", "format": "uuid4", "title": "Userid" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "slug": { "type": "string", "title": "Slug", "default": "" }, "image": { "anyOf": [ {}, { "type": "null" } ], "title": "Image" }, "recipeYield": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Recipeyield" }, "totalTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Totaltime" }, "prepTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Preptime" }, "cookTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cooktime" }, "performTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Performtime" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description", "default": "" }, "recipeCategory": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeCategory" }, "type": "array" }, { "type": "null" } ], "title": "Recipecategory", "default": [] }, "tags": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeTag" }, "type": "array" }, { "type": "null" } ], "title": "Tags", "default": [] }, "tools": { "items": { "$ref": "#/components/schemas/RecipeTool" }, "type": "array", "title": "Tools", "default": [] }, "rating": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Rating" }, "orgURL": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orgurl" }, "dateAdded": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Dateadded" }, "dateUpdated": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Dateupdated" }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "updateAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updateat" }, "lastMade": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Lastmade" }, "recipeIngredient": { "items": { "$ref": "#/components/schemas/RecipeIngredient-Input" }, "type": "array", "title": "Recipeingredient", "default": [] }, "recipeInstructions": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeStep" }, "type": "array" }, { "type": "null" } ], "title": "Recipeinstructions", "default": [] }, "nutrition": { "anyOf": [ { "$ref": "#/components/schemas/Nutrition" }, { "type": "null" } ] }, "settings": { "anyOf": [ { "$ref": "#/components/schemas/RecipeSettings" }, { "type": "null" } ] }, "assets": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeAsset" }, "type": "array" }, { "type": "null" } ], "title": "Assets", "default": [] }, "notes": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeNote" }, "type": "array" }, { "type": "null" } ], "title": "Notes", "default": [] }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "comments": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeCommentOut-Input" }, "type": "array" }, { "type": "null" } ], "title": "Comments", "default": [] } }, "type": "object", "title": "Recipe" }, "Recipe-Output": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Id" }, "userId": { "type": "string", "format": "uuid4", "title": "Userid" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "slug": { "type": "string", "title": "Slug", "default": "" }, "image": { "anyOf": [ {}, { "type": "null" } ], "title": "Image" }, "recipeYield": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Recipeyield" }, "totalTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Totaltime" }, "prepTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Preptime" }, "cookTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cooktime" }, "performTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Performtime" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description", "default": "" }, "recipeCategory": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeCategory" }, "type": "array" }, { "type": "null" } ], "title": "Recipecategory", "default": [] }, "tags": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeTag" }, "type": "array" }, { "type": "null" } ], "title": "Tags", "default": [] }, "tools": { "items": { "$ref": "#/components/schemas/RecipeTool" }, "type": "array", "title": "Tools", "default": [] }, "rating": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Rating" }, "orgURL": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orgurl" }, "dateAdded": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Dateadded" }, "dateUpdated": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Dateupdated" }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "updateAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updateat" }, "lastMade": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Lastmade" }, "recipeIngredient": { "items": { "$ref": "#/components/schemas/RecipeIngredient-Output" }, "type": "array", "title": "Recipeingredient", "default": [] }, "recipeInstructions": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeStep" }, "type": "array" }, { "type": "null" } ], "title": "Recipeinstructions", "default": [] }, "nutrition": { "anyOf": [ { "$ref": "#/components/schemas/Nutrition" }, { "type": "null" } ] }, "settings": { "anyOf": [ { "$ref": "#/components/schemas/RecipeSettings" }, { "type": "null" } ] }, "assets": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeAsset" }, "type": "array" }, { "type": "null" } ], "title": "Assets", "default": [] }, "notes": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeNote" }, "type": "array" }, { "type": "null" } ], "title": "Notes", "default": [] }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "comments": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeCommentOut-Output" }, "type": "array" }, { "type": "null" } ], "title": "Comments", "default": [] } }, "type": "object", "title": "Recipe" }, "RecipeAsset": { "properties": { "name": { "type": "string", "title": "Name" }, "icon": { "type": "string", "title": "Icon" }, "fileName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Filename" } }, "type": "object", "required": ["name", "icon"], "title": "RecipeAsset" }, "RecipeCategory": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Id" }, "name": { "type": "string", "title": "Name" }, "slug": { "type": "string", "title": "Slug" } }, "type": "object", "required": ["name", "slug"], "title": "RecipeCategory" }, "RecipeCategoryPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/RecipeCategory" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "RecipeCategoryPagination" }, "RecipeCommentCreate": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "text": { "type": "string", "title": "Text" } }, "type": "object", "required": ["recipeId", "text"], "title": "RecipeCommentCreate" }, "RecipeCommentOut-Input": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "text": { "type": "string", "title": "Text" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" }, "updateAt": { "type": "string", "format": "date-time", "title": "Updateat" }, "userId": { "type": "string", "format": "uuid4", "title": "Userid" }, "user": { "$ref": "#/components/schemas/mealie__schema__recipe__recipe_comments__UserBase" } }, "type": "object", "required": [ "recipeId", "text", "id", "createdAt", "updateAt", "userId", "user" ], "title": "RecipeCommentOut" }, "RecipeCommentOut-Output": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "text": { "type": "string", "title": "Text" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" }, "updateAt": { "type": "string", "format": "date-time", "title": "Updateat" }, "userId": { "type": "string", "format": "uuid4", "title": "Userid" }, "user": { "$ref": "#/components/schemas/UserBase-Output" } }, "type": "object", "required": [ "recipeId", "text", "id", "createdAt", "updateAt", "userId", "user" ], "title": "RecipeCommentOut" }, "RecipeCommentPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/RecipeCommentOut-Output" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "RecipeCommentPagination" }, "RecipeCommentUpdate": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "text": { "type": "string", "title": "Text" } }, "type": "object", "required": ["id", "text"], "title": "RecipeCommentUpdate" }, "RecipeCookBook": { "properties": { "name": { "type": "string", "title": "Name" }, "description": { "type": "string", "title": "Description", "default": "" }, "slug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Slug" }, "position": { "type": "integer", "title": "Position", "default": 1 }, "public": { "type": "boolean", "title": "Public", "default": false }, "categories": { "items": { "$ref": "#/components/schemas/CategoryBase" }, "type": "array", "title": "Categories", "default": [] }, "tags": { "items": { "$ref": "#/components/schemas/TagBase" }, "type": "array", "title": "Tags", "default": [] }, "tools": { "items": { "$ref": "#/components/schemas/RecipeTool" }, "type": "array", "title": "Tools", "default": [] }, "requireAllCategories": { "type": "boolean", "title": "Requireallcategories", "default": true }, "requireAllTags": { "type": "boolean", "title": "Requirealltags", "default": true }, "requireAllTools": { "type": "boolean", "title": "Requirealltools", "default": true }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "recipes": { "items": { "$ref": "#/components/schemas/RecipeSummary" }, "type": "array", "title": "Recipes" } }, "type": "object", "required": ["name", "groupId", "id", "recipes"], "title": "RecipeCookBook" }, "RecipeDuplicate": { "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" } }, "type": "object", "title": "RecipeDuplicate" }, "RecipeIngredient-Input": { "properties": { "quantity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Quantity", "default": 1 }, "unit": { "anyOf": [ { "$ref": "#/components/schemas/IngredientUnit" }, { "$ref": "#/components/schemas/CreateIngredientUnit" }, { "type": "null" } ], "title": "Unit" }, "food": { "anyOf": [ { "$ref": "#/components/schemas/IngredientFood" }, { "$ref": "#/components/schemas/CreateIngredientFood" }, { "type": "null" } ], "title": "Food" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note", "default": "" }, "isFood": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Isfood" }, "disableAmount": { "type": "boolean", "title": "Disableamount", "default": true }, "display": { "type": "string", "title": "Display", "default": "" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title" }, "originalText": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Originaltext" }, "referenceId": { "type": "string", "format": "uuid", "title": "Referenceid" } }, "type": "object", "title": "RecipeIngredient" }, "RecipeIngredient-Output": { "properties": { "quantity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Quantity", "default": 1 }, "unit": { "anyOf": [ { "$ref": "#/components/schemas/IngredientUnit" }, { "$ref": "#/components/schemas/CreateIngredientUnit" }, { "type": "null" } ], "title": "Unit" }, "food": { "anyOf": [ { "$ref": "#/components/schemas/IngredientFood" }, { "$ref": "#/components/schemas/CreateIngredientFood" }, { "type": "null" } ], "title": "Food" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note", "default": "" }, "isFood": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Isfood" }, "disableAmount": { "type": "boolean", "title": "Disableamount", "default": true }, "display": { "type": "string", "title": "Display", "default": "" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title" }, "originalText": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Originaltext" }, "referenceId": { "type": "string", "format": "uuid", "title": "Referenceid" } }, "type": "object", "title": "RecipeIngredient" }, "RecipeLastMade": { "properties": { "timestamp": { "type": "string", "format": "date-time", "title": "Timestamp" } }, "type": "object", "required": ["timestamp"], "title": "RecipeLastMade" }, "RecipeNote": { "properties": { "title": { "type": "string", "title": "Title" }, "text": { "type": "string", "title": "Text" } }, "type": "object", "required": ["title", "text"], "title": "RecipeNote" }, "RecipeSettings": { "properties": { "public": { "type": "boolean", "title": "Public", "default": false }, "showNutrition": { "type": "boolean", "title": "Shownutrition", "default": false }, "showAssets": { "type": "boolean", "title": "Showassets", "default": false }, "landscapeView": { "type": "boolean", "title": "Landscapeview", "default": false }, "disableComments": { "type": "boolean", "title": "Disablecomments", "default": true }, "disableAmount": { "type": "boolean", "title": "Disableamount", "default": true }, "locked": { "type": "boolean", "title": "Locked", "default": false } }, "type": "object", "title": "RecipeSettings" }, "RecipeShareToken": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "expiresAt": { "type": "string", "format": "date-time", "title": "Expiresat" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" }, "recipe": { "$ref": "#/components/schemas/Recipe-Output" } }, "type": "object", "required": [ "recipeId", "groupId", "id", "createdAt", "recipe" ], "title": "RecipeShareToken" }, "RecipeShareTokenCreate": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "expiresAt": { "type": "string", "format": "date-time", "title": "Expiresat" } }, "type": "object", "required": ["recipeId"], "title": "RecipeShareTokenCreate" }, "RecipeShareTokenSummary": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "expiresAt": { "type": "string", "format": "date-time", "title": "Expiresat" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" } }, "type": "object", "required": ["recipeId", "groupId", "id", "createdAt"], "title": "RecipeShareTokenSummary" }, "RecipeStep": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Id" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title", "default": "" }, "text": { "type": "string", "title": "Text" }, "ingredientReferences": { "items": { "$ref": "#/components/schemas/IngredientReferences" }, "type": "array", "title": "Ingredientreferences", "default": [] } }, "type": "object", "required": ["text"], "title": "RecipeStep" }, "RecipeSummary": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Id" }, "userId": { "type": "string", "format": "uuid4", "title": "Userid" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "slug": { "type": "string", "title": "Slug", "default": "" }, "image": { "anyOf": [ {}, { "type": "null" } ], "title": "Image" }, "recipeYield": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Recipeyield" }, "totalTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Totaltime" }, "prepTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Preptime" }, "cookTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cooktime" }, "performTime": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Performtime" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Description", "default": "" }, "recipeCategory": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeCategory" }, "type": "array" }, { "type": "null" } ], "title": "Recipecategory", "default": [] }, "tags": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeTag" }, "type": "array" }, { "type": "null" } ], "title": "Tags", "default": [] }, "tools": { "items": { "$ref": "#/components/schemas/RecipeTool" }, "type": "array", "title": "Tools", "default": [] }, "rating": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Rating" }, "orgURL": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Orgurl" }, "dateAdded": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Dateadded" }, "dateUpdated": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Dateupdated" }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "updateAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updateat" }, "lastMade": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Lastmade" } }, "type": "object", "title": "RecipeSummary" }, "RecipeTag": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Id" }, "name": { "type": "string", "title": "Name" }, "slug": { "type": "string", "title": "Slug" } }, "type": "object", "required": ["name", "slug"], "title": "RecipeTag" }, "RecipeTagPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/RecipeTag" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "RecipeTagPagination" }, "RecipeTagResponse": { "properties": { "name": { "type": "string", "title": "Name" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "slug": { "type": "string", "title": "Slug" }, "recipes": { "items": { "$ref": "#/components/schemas/RecipeSummary" }, "type": "array", "title": "Recipes", "default": [] } }, "type": "object", "required": ["name", "id", "slug"], "title": "RecipeTagResponse" }, "RecipeTimelineEventIn": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "userId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Userid" }, "subject": { "type": "string", "title": "Subject" }, "eventType": { "$ref": "#/components/schemas/TimelineEventType" }, "eventMessage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Eventmessage" }, "image": { "anyOf": [ { "$ref": "#/components/schemas/TimelineEventImage" }, { "type": "null" } ], "default": "does not have image" }, "timestamp": { "type": "string", "format": "date-time", "title": "Timestamp", "default": "2024-07-05T17:53:40.601018" } }, "type": "object", "required": ["recipeId", "subject", "eventType"], "title": "RecipeTimelineEventIn" }, "RecipeTimelineEventOut": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "userId": { "type": "string", "format": "uuid4", "title": "Userid" }, "subject": { "type": "string", "title": "Subject" }, "eventType": { "$ref": "#/components/schemas/TimelineEventType" }, "eventMessage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Eventmessage" }, "image": { "anyOf": [ { "$ref": "#/components/schemas/TimelineEventImage" }, { "type": "null" } ], "default": "does not have image" }, "timestamp": { "type": "string", "format": "date-time", "title": "Timestamp", "default": "2024-07-05T17:53:40.601018" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" }, "updateAt": { "type": "string", "format": "date-time", "title": "Updateat" } }, "type": "object", "required": [ "recipeId", "userId", "subject", "eventType", "id", "createdAt", "updateAt" ], "title": "RecipeTimelineEventOut" }, "RecipeTimelineEventPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/RecipeTimelineEventOut" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "RecipeTimelineEventPagination" }, "RecipeTimelineEventUpdate": { "properties": { "subject": { "type": "string", "title": "Subject" }, "eventMessage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Eventmessage" }, "image": { "anyOf": [ { "$ref": "#/components/schemas/TimelineEventImage" }, { "type": "null" } ] } }, "type": "object", "required": ["subject"], "title": "RecipeTimelineEventUpdate" }, "RecipeTool": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "slug": { "type": "string", "title": "Slug" }, "onHand": { "type": "boolean", "title": "Onhand", "default": false } }, "type": "object", "required": ["id", "name", "slug"], "title": "RecipeTool" }, "RecipeToolCreate": { "properties": { "name": { "type": "string", "title": "Name" }, "onHand": { "type": "boolean", "title": "Onhand", "default": false } }, "type": "object", "required": ["name"], "title": "RecipeToolCreate" }, "RecipeToolOut": { "properties": { "name": { "type": "string", "title": "Name" }, "onHand": { "type": "boolean", "title": "Onhand", "default": false }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "slug": { "type": "string", "title": "Slug" } }, "type": "object", "required": ["name", "id", "slug"], "title": "RecipeToolOut" }, "RecipeToolPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/RecipeTool" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "RecipeToolPagination" }, "RecipeToolResponse": { "properties": { "name": { "type": "string", "title": "Name" }, "onHand": { "type": "boolean", "title": "Onhand", "default": false }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "slug": { "type": "string", "title": "Slug" }, "recipes": { "items": { "$ref": "#/components/schemas/RecipeSummary" }, "type": "array", "title": "Recipes", "default": [] } }, "type": "object", "required": ["name", "id", "slug"], "title": "RecipeToolResponse" }, "RecipeZipTokenResponse": { "properties": { "token": { "type": "string", "title": "Token" } }, "type": "object", "required": ["token"], "title": "RecipeZipTokenResponse" }, "RegisteredParser": { "type": "string", "enum": ["nlp", "brute", "openai"], "title": "RegisteredParser" }, "ReportCategory": { "type": "string", "enum": ["backup", "restore", "migration", "bulk_import"], "title": "ReportCategory" }, "ReportEntryOut": { "properties": { "reportId": { "type": "string", "format": "uuid4", "title": "Reportid" }, "timestamp": { "type": "string", "format": "date-time", "title": "Timestamp" }, "success": { "type": "boolean", "title": "Success", "default": true }, "message": { "type": "string", "title": "Message" }, "exception": { "type": "string", "title": "Exception", "default": "" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["reportId", "message", "id"], "title": "ReportEntryOut" }, "ReportOut": { "properties": { "timestamp": { "type": "string", "format": "date-time", "title": "Timestamp" }, "category": { "$ref": "#/components/schemas/ReportCategory" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "name": { "type": "string", "title": "Name" }, "status": { "allOf": [ { "$ref": "#/components/schemas/ReportSummaryStatus" } ], "default": "in-progress" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "entries": { "items": { "$ref": "#/components/schemas/ReportEntryOut" }, "type": "array", "title": "Entries", "default": [] } }, "type": "object", "required": ["category", "groupId", "name", "id"], "title": "ReportOut" }, "ReportSummary": { "properties": { "timestamp": { "type": "string", "format": "date-time", "title": "Timestamp" }, "category": { "$ref": "#/components/schemas/ReportCategory" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "name": { "type": "string", "title": "Name" }, "status": { "allOf": [ { "$ref": "#/components/schemas/ReportSummaryStatus" } ], "default": "in-progress" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["category", "groupId", "name", "id"], "title": "ReportSummary" }, "ReportSummaryStatus": { "type": "string", "enum": ["in-progress", "success", "failure", "partial"], "title": "ReportSummaryStatus" }, "ResetPassword": { "properties": { "token": { "type": "string", "title": "Token" }, "email": { "type": "string", "title": "Email" }, "password": { "type": "string", "title": "Password" }, "passwordConfirm": { "type": "string", "title": "Passwordconfirm" } }, "type": "object", "required": ["token", "email", "password", "passwordConfirm"], "title": "ResetPassword" }, "SaveGroupRecipeAction": { "properties": { "actionType": { "$ref": "#/components/schemas/GroupRecipeActionType" }, "title": { "type": "string", "title": "Title" }, "url": { "type": "string", "title": "Url" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" } }, "type": "object", "required": ["actionType", "title", "url", "groupId"], "title": "SaveGroupRecipeAction" }, "ScrapeRecipe": { "properties": { "url": { "type": "string", "title": "Url" }, "includeTags": { "type": "boolean", "title": "Includetags", "default": false } }, "type": "object", "required": ["url"], "title": "ScrapeRecipe", "example": { "includeTags": true, "url": "https://myfavoriterecipes.com/recipes" } }, "ScrapeRecipeTest": { "properties": { "url": { "type": "string", "title": "Url" }, "useOpenAI": { "type": "boolean", "title": "Useopenai", "default": false } }, "type": "object", "required": ["url"], "title": "ScrapeRecipeTest" }, "SeederConfig": { "properties": { "locale": { "type": "string", "title": "Locale" } }, "type": "object", "required": ["locale"], "title": "SeederConfig" }, "SetPermissions": { "properties": { "userId": { "type": "string", "format": "uuid4", "title": "Userid" }, "canManage": { "type": "boolean", "title": "Canmanage", "default": false }, "canInvite": { "type": "boolean", "title": "Caninvite", "default": false }, "canOrganize": { "type": "boolean", "title": "Canorganize", "default": false } }, "type": "object", "required": ["userId"], "title": "SetPermissions" }, "ShoppingListAddRecipeParams": { "properties": { "recipeIncrementQuantity": { "type": "number", "title": "Recipeincrementquantity", "default": 1 }, "recipeIngredients": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RecipeIngredient-Input" }, "type": "array" }, { "type": "null" } ], "title": "Recipeingredients" } }, "type": "object", "title": "ShoppingListAddRecipeParams" }, "ShoppingListCreate": { "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "updateAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updateat" } }, "type": "object", "title": "ShoppingListCreate" }, "ShoppingListItemCreate": { "properties": { "quantity": { "type": "number", "title": "Quantity", "default": 1 }, "unit": { "anyOf": [ { "$ref": "#/components/schemas/IngredientUnit" }, { "$ref": "#/components/schemas/CreateIngredientUnit" }, { "type": "null" } ], "title": "Unit" }, "food": { "anyOf": [ { "$ref": "#/components/schemas/IngredientFood" }, { "$ref": "#/components/schemas/CreateIngredientFood" }, { "type": "null" } ], "title": "Food" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note", "default": "" }, "isFood": { "type": "boolean", "title": "Isfood", "default": false }, "disableAmount": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Disableamount" }, "display": { "type": "string", "title": "Display", "default": "" }, "shoppingListId": { "type": "string", "format": "uuid4", "title": "Shoppinglistid" }, "checked": { "type": "boolean", "title": "Checked", "default": false }, "position": { "type": "integer", "title": "Position", "default": 0 }, "foodId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Foodid" }, "labelId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Labelid" }, "unitId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Unitid" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Id" }, "recipeReferences": { "items": { "$ref": "#/components/schemas/ShoppingListItemRecipeRefCreate" }, "type": "array", "title": "Recipereferences", "default": [] } }, "type": "object", "required": ["shoppingListId"], "title": "ShoppingListItemCreate" }, "ShoppingListItemOut-Input": { "properties": { "quantity": { "type": "number", "title": "Quantity", "default": 1 }, "unit": { "anyOf": [ { "$ref": "#/components/schemas/IngredientUnit" }, { "type": "null" } ] }, "food": { "anyOf": [ { "$ref": "#/components/schemas/IngredientFood" }, { "type": "null" } ] }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note", "default": "" }, "isFood": { "type": "boolean", "title": "Isfood", "default": false }, "disableAmount": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Disableamount" }, "display": { "type": "string", "title": "Display", "default": "" }, "shoppingListId": { "type": "string", "format": "uuid4", "title": "Shoppinglistid" }, "checked": { "type": "boolean", "title": "Checked", "default": false }, "position": { "type": "integer", "title": "Position", "default": 0 }, "foodId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Foodid" }, "labelId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Labelid" }, "unitId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Unitid" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "label": { "anyOf": [ { "$ref": "#/components/schemas/MultiPurposeLabelSummary" }, { "type": "null" } ] }, "recipeReferences": { "items": { "$ref": "#/components/schemas/ShoppingListItemRecipeRefOut" }, "type": "array", "title": "Recipereferences", "default": [] }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "updateAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updateat" } }, "type": "object", "required": ["shoppingListId", "id"], "title": "ShoppingListItemOut" }, "ShoppingListItemOut-Output": { "properties": { "quantity": { "type": "number", "title": "Quantity", "default": 1 }, "unit": { "anyOf": [ { "$ref": "#/components/schemas/IngredientUnit" }, { "type": "null" } ] }, "food": { "anyOf": [ { "$ref": "#/components/schemas/IngredientFood" }, { "type": "null" } ] }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note", "default": "" }, "isFood": { "type": "boolean", "title": "Isfood", "default": false }, "disableAmount": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Disableamount" }, "display": { "type": "string", "title": "Display", "default": "" }, "shoppingListId": { "type": "string", "format": "uuid4", "title": "Shoppinglistid" }, "checked": { "type": "boolean", "title": "Checked", "default": false }, "position": { "type": "integer", "title": "Position", "default": 0 }, "foodId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Foodid" }, "labelId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Labelid" }, "unitId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Unitid" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "label": { "anyOf": [ { "$ref": "#/components/schemas/MultiPurposeLabelSummary" }, { "type": "null" } ] }, "recipeReferences": { "items": { "$ref": "#/components/schemas/ShoppingListItemRecipeRefOut" }, "type": "array", "title": "Recipereferences", "default": [] }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "updateAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updateat" } }, "type": "object", "required": ["shoppingListId", "id"], "title": "ShoppingListItemOut" }, "ShoppingListItemPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/ShoppingListItemOut-Output" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "ShoppingListItemPagination" }, "ShoppingListItemRecipeRefCreate": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "recipeQuantity": { "type": "number", "title": "Recipequantity", "default": 0 }, "recipeScale": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Recipescale", "default": 1 }, "recipeNote": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Recipenote" } }, "type": "object", "required": ["recipeId"], "title": "ShoppingListItemRecipeRefCreate" }, "ShoppingListItemRecipeRefOut": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "recipeQuantity": { "type": "number", "title": "Recipequantity", "default": 0 }, "recipeScale": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Recipescale", "default": 1 }, "recipeNote": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Recipenote" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "shoppingListItemId": { "type": "string", "format": "uuid4", "title": "Shoppinglistitemid" } }, "type": "object", "required": ["recipeId", "id", "shoppingListItemId"], "title": "ShoppingListItemRecipeRefOut" }, "ShoppingListItemRecipeRefUpdate": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "recipeQuantity": { "type": "number", "title": "Recipequantity", "default": 0 }, "recipeScale": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Recipescale", "default": 1 }, "recipeNote": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Recipenote" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "shoppingListItemId": { "type": "string", "format": "uuid4", "title": "Shoppinglistitemid" } }, "type": "object", "required": ["recipeId", "id", "shoppingListItemId"], "title": "ShoppingListItemRecipeRefUpdate" }, "ShoppingListItemUpdate": { "properties": { "quantity": { "type": "number", "title": "Quantity", "default": 1 }, "unit": { "anyOf": [ { "$ref": "#/components/schemas/IngredientUnit" }, { "$ref": "#/components/schemas/CreateIngredientUnit" }, { "type": "null" } ], "title": "Unit" }, "food": { "anyOf": [ { "$ref": "#/components/schemas/IngredientFood" }, { "$ref": "#/components/schemas/CreateIngredientFood" }, { "type": "null" } ], "title": "Food" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note", "default": "" }, "isFood": { "type": "boolean", "title": "Isfood", "default": false }, "disableAmount": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Disableamount" }, "display": { "type": "string", "title": "Display", "default": "" }, "shoppingListId": { "type": "string", "format": "uuid4", "title": "Shoppinglistid" }, "checked": { "type": "boolean", "title": "Checked", "default": false }, "position": { "type": "integer", "title": "Position", "default": 0 }, "foodId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Foodid" }, "labelId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Labelid" }, "unitId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Unitid" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "recipeReferences": { "items": { "anyOf": [ { "$ref": "#/components/schemas/ShoppingListItemRecipeRefCreate" }, { "$ref": "#/components/schemas/ShoppingListItemRecipeRefUpdate" } ] }, "type": "array", "title": "Recipereferences", "default": [] } }, "type": "object", "required": ["shoppingListId"], "title": "ShoppingListItemUpdate" }, "ShoppingListItemUpdateBulk": { "properties": { "quantity": { "type": "number", "title": "Quantity", "default": 1 }, "unit": { "anyOf": [ { "$ref": "#/components/schemas/IngredientUnit" }, { "$ref": "#/components/schemas/CreateIngredientUnit" }, { "type": "null" } ], "title": "Unit" }, "food": { "anyOf": [ { "$ref": "#/components/schemas/IngredientFood" }, { "$ref": "#/components/schemas/CreateIngredientFood" }, { "type": "null" } ], "title": "Food" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note", "default": "" }, "isFood": { "type": "boolean", "title": "Isfood", "default": false }, "disableAmount": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Disableamount" }, "display": { "type": "string", "title": "Display", "default": "" }, "shoppingListId": { "type": "string", "format": "uuid4", "title": "Shoppinglistid" }, "checked": { "type": "boolean", "title": "Checked", "default": false }, "position": { "type": "integer", "title": "Position", "default": 0 }, "foodId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Foodid" }, "labelId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Labelid" }, "unitId": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Unitid" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "recipeReferences": { "items": { "anyOf": [ { "$ref": "#/components/schemas/ShoppingListItemRecipeRefCreate" }, { "$ref": "#/components/schemas/ShoppingListItemRecipeRefUpdate" } ] }, "type": "array", "title": "Recipereferences", "default": [] }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["shoppingListId", "id"], "title": "ShoppingListItemUpdateBulk", "description": "Only used for bulk update operations where the shopping list item id isn't already supplied" }, "ShoppingListItemsCollectionOut": { "properties": { "createdItems": { "items": { "$ref": "#/components/schemas/ShoppingListItemOut-Output" }, "type": "array", "title": "Createditems", "default": [] }, "updatedItems": { "items": { "$ref": "#/components/schemas/ShoppingListItemOut-Output" }, "type": "array", "title": "Updateditems", "default": [] }, "deletedItems": { "items": { "$ref": "#/components/schemas/ShoppingListItemOut-Output" }, "type": "array", "title": "Deleteditems", "default": [] } }, "type": "object", "title": "ShoppingListItemsCollectionOut", "description": "Container for bulk shopping list item changes" }, "ShoppingListMultiPurposeLabelOut": { "properties": { "shoppingListId": { "type": "string", "format": "uuid4", "title": "Shoppinglistid" }, "labelId": { "type": "string", "format": "uuid4", "title": "Labelid" }, "position": { "type": "integer", "title": "Position", "default": 0 }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "label": { "$ref": "#/components/schemas/MultiPurposeLabelSummary" } }, "type": "object", "required": ["shoppingListId", "labelId", "id", "label"], "title": "ShoppingListMultiPurposeLabelOut" }, "ShoppingListMultiPurposeLabelUpdate": { "properties": { "shoppingListId": { "type": "string", "format": "uuid4", "title": "Shoppinglistid" }, "labelId": { "type": "string", "format": "uuid4", "title": "Labelid" }, "position": { "type": "integer", "title": "Position", "default": 0 }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["shoppingListId", "labelId", "id"], "title": "ShoppingListMultiPurposeLabelUpdate" }, "ShoppingListOut": { "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "updateAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updateat" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "userId": { "type": "string", "format": "uuid4", "title": "Userid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "listItems": { "items": { "$ref": "#/components/schemas/ShoppingListItemOut-Output" }, "type": "array", "title": "Listitems", "default": [] }, "recipeReferences": { "items": { "$ref": "#/components/schemas/ShoppingListRecipeRefOut" }, "type": "array", "title": "Recipereferences", "default": [] }, "labelSettings": { "items": { "$ref": "#/components/schemas/ShoppingListMultiPurposeLabelOut" }, "type": "array", "title": "Labelsettings", "default": [] } }, "type": "object", "required": ["groupId", "userId", "id"], "title": "ShoppingListOut" }, "ShoppingListPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/ShoppingListSummary" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "ShoppingListPagination" }, "ShoppingListRecipeRefOut": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "shoppingListId": { "type": "string", "format": "uuid4", "title": "Shoppinglistid" }, "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "recipeQuantity": { "type": "number", "title": "Recipequantity" }, "recipe": { "$ref": "#/components/schemas/RecipeSummary" } }, "type": "object", "required": [ "id", "shoppingListId", "recipeId", "recipeQuantity", "recipe" ], "title": "ShoppingListRecipeRefOut" }, "ShoppingListRemoveRecipeParams": { "properties": { "recipeDecrementQuantity": { "type": "number", "title": "Recipedecrementquantity", "default": 1 } }, "type": "object", "title": "ShoppingListRemoveRecipeParams" }, "ShoppingListSummary": { "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "updateAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updateat" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "userId": { "type": "string", "format": "uuid4", "title": "Userid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "recipeReferences": { "items": { "$ref": "#/components/schemas/ShoppingListRecipeRefOut" }, "type": "array", "title": "Recipereferences" }, "labelSettings": { "items": { "$ref": "#/components/schemas/ShoppingListMultiPurposeLabelOut" }, "type": "array", "title": "Labelsettings" } }, "type": "object", "required": [ "groupId", "userId", "id", "recipeReferences", "labelSettings" ], "title": "ShoppingListSummary" }, "ShoppingListUpdate": { "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "extras": { "anyOf": [ { "type": "object" }, { "type": "null" } ], "title": "Extras", "default": {} }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "updateAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Updateat" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "userId": { "type": "string", "format": "uuid4", "title": "Userid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "listItems": { "items": { "$ref": "#/components/schemas/ShoppingListItemOut-Input" }, "type": "array", "title": "Listitems", "default": [] } }, "type": "object", "required": ["groupId", "userId", "id"], "title": "ShoppingListUpdate" }, "SuccessResponse": { "properties": { "message": { "type": "string", "title": "Message" }, "error": { "type": "boolean", "title": "Error", "default": false } }, "type": "object", "required": ["message"], "title": "SuccessResponse" }, "SupportedMigrations": { "type": "string", "enum": [ "nextcloud", "chowdown", "copymethat", "paprika", "mealie_alpha", "tandoor", "plantoeat", "myrecipebox", "recipekeeper" ], "title": "SupportedMigrations" }, "Tag": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "slug": { "type": "string", "title": "Slug" } }, "type": "object", "required": ["id", "name", "slug"], "title": "Tag" }, "TagBase": { "properties": { "name": { "type": "string", "title": "Name" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "slug": { "type": "string", "title": "Slug" } }, "type": "object", "required": ["name", "id", "slug"], "title": "TagBase" }, "TagIn": { "properties": { "name": { "type": "string", "title": "Name" } }, "type": "object", "required": ["name"], "title": "TagIn" }, "TagOut": { "properties": { "name": { "type": "string", "title": "Name" }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" }, "slug": { "type": "string", "title": "Slug" } }, "type": "object", "required": ["name", "groupId", "id", "slug"], "title": "TagOut" }, "TimelineEventImage": { "type": "string", "enum": ["has image", "does not have image"], "title": "TimelineEventImage" }, "TimelineEventType": { "type": "string", "enum": ["system", "info", "comment"], "title": "TimelineEventType" }, "UnlockResults": { "properties": { "unlocked": { "type": "integer", "title": "Unlocked", "default": 0 } }, "type": "object", "title": "UnlockResults" }, "UpdateCookBook": { "properties": { "name": { "type": "string", "title": "Name" }, "description": { "type": "string", "title": "Description", "default": "" }, "slug": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Slug" }, "position": { "type": "integer", "title": "Position", "default": 1 }, "public": { "type": "boolean", "title": "Public", "default": false }, "categories": { "items": { "$ref": "#/components/schemas/CategoryBase" }, "type": "array", "title": "Categories", "default": [] }, "tags": { "items": { "$ref": "#/components/schemas/TagBase" }, "type": "array", "title": "Tags", "default": [] }, "tools": { "items": { "$ref": "#/components/schemas/RecipeTool" }, "type": "array", "title": "Tools", "default": [] }, "requireAllCategories": { "type": "boolean", "title": "Requireallcategories", "default": true }, "requireAllTags": { "type": "boolean", "title": "Requirealltags", "default": true }, "requireAllTools": { "type": "boolean", "title": "Requirealltools", "default": true }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["name", "groupId", "id"], "title": "UpdateCookBook" }, "UpdateGroupPreferences": { "properties": { "privateGroup": { "type": "boolean", "title": "Privategroup", "default": true }, "firstDayOfWeek": { "type": "integer", "title": "Firstdayofweek", "default": 0 }, "recipePublic": { "type": "boolean", "title": "Recipepublic", "default": true }, "recipeShowNutrition": { "type": "boolean", "title": "Recipeshownutrition", "default": false }, "recipeShowAssets": { "type": "boolean", "title": "Recipeshowassets", "default": false }, "recipeLandscapeView": { "type": "boolean", "title": "Recipelandscapeview", "default": false }, "recipeDisableComments": { "type": "boolean", "title": "Recipedisablecomments", "default": false }, "recipeDisableAmount": { "type": "boolean", "title": "Recipedisableamount", "default": true } }, "type": "object", "title": "UpdateGroupPreferences" }, "UpdateImageResponse": { "properties": { "image": { "type": "string", "title": "Image" } }, "type": "object", "required": ["image"], "title": "UpdateImageResponse" }, "UpdatePlanEntry": { "properties": { "date": { "type": "string", "format": "date", "title": "Date" }, "entryType": { "allOf": [ { "$ref": "#/components/schemas/PlanEntryType" } ], "default": "breakfast" }, "title": { "type": "string", "title": "Title", "default": "" }, "text": { "type": "string", "title": "Text", "default": "" }, "recipeId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Recipeid" }, "id": { "type": "integer", "title": "Id" }, "groupId": { "type": "string", "format": "uuid", "title": "Groupid" }, "userId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Userid" } }, "type": "object", "required": ["date", "id", "groupId"], "title": "UpdatePlanEntry" }, "UserBase-Output": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "username": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Username" }, "admin": { "type": "boolean", "title": "Admin" } }, "type": "object", "required": ["id", "admin"], "title": "UserBase" }, "UserIn": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Id" }, "username": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Username" }, "fullName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fullname" }, "email": { "type": "string", "title": "Email" }, "authMethod": { "allOf": [ { "$ref": "#/components/schemas/AuthMethod" } ], "default": "Mealie" }, "admin": { "type": "boolean", "title": "Admin", "default": false }, "group": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group" }, "advanced": { "type": "boolean", "title": "Advanced", "default": false }, "canInvite": { "type": "boolean", "title": "Caninvite", "default": false }, "canManage": { "type": "boolean", "title": "Canmanage", "default": false }, "canOrganize": { "type": "boolean", "title": "Canorganize", "default": false }, "password": { "type": "string", "title": "Password" } }, "type": "object", "required": ["email", "password"], "title": "UserIn", "example": { "admin": "false", "email": "changeme@example.com", "fullName": "Change Me", "group": "home", "username": "ChangeMe" } }, "UserOut": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "username": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Username" }, "fullName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fullname" }, "email": { "type": "string", "title": "Email" }, "authMethod": { "allOf": [ { "$ref": "#/components/schemas/AuthMethod" } ], "default": "Mealie" }, "admin": { "type": "boolean", "title": "Admin", "default": false }, "group": { "type": "string", "title": "Group" }, "advanced": { "type": "boolean", "title": "Advanced", "default": false }, "canInvite": { "type": "boolean", "title": "Caninvite", "default": false }, "canManage": { "type": "boolean", "title": "Canmanage", "default": false }, "canOrganize": { "type": "boolean", "title": "Canorganize", "default": false }, "groupId": { "type": "string", "format": "uuid4", "title": "Groupid" }, "groupSlug": { "type": "string", "title": "Groupslug" }, "tokens": { "anyOf": [ { "items": { "$ref": "#/components/schemas/LongLiveTokenOut" }, "type": "array" }, { "type": "null" } ], "title": "Tokens" }, "cacheKey": { "type": "string", "title": "Cachekey" } }, "type": "object", "required": [ "id", "email", "group", "groupId", "groupSlug", "cacheKey" ], "title": "UserOut", "example": { "admin": "false", "email": "changeme@example.com", "fullName": "Change Me", "group": "home", "username": "ChangeMe" } }, "UserPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/UserOut" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "UserPagination" }, "UserRatingOut": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "rating": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Rating" }, "isFavorite": { "type": "boolean", "title": "Isfavorite", "default": false }, "userId": { "type": "string", "format": "uuid4", "title": "Userid" }, "id": { "type": "string", "format": "uuid4", "title": "Id" } }, "type": "object", "required": ["recipeId", "userId", "id"], "title": "UserRatingOut" }, "UserRatingSummary": { "properties": { "recipeId": { "type": "string", "format": "uuid4", "title": "Recipeid" }, "rating": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Rating" }, "isFavorite": { "type": "boolean", "title": "Isfavorite", "default": false } }, "type": "object", "required": ["recipeId"], "title": "UserRatingSummary" }, "UserRatingUpdate": { "properties": { "rating": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Rating" }, "isFavorite": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Isfavorite" } }, "type": "object", "title": "UserRatingUpdate" }, "UserRatings_UserRatingOut_": { "properties": { "ratings": { "items": { "$ref": "#/components/schemas/UserRatingOut" }, "type": "array", "title": "Ratings" } }, "type": "object", "required": ["ratings"], "title": "UserRatings[UserRatingOut]" }, "UserRatings_UserRatingSummary_": { "properties": { "ratings": { "items": { "$ref": "#/components/schemas/UserRatingSummary" }, "type": "array", "title": "Ratings" } }, "type": "object", "required": ["ratings"], "title": "UserRatings[UserRatingSummary]" }, "UserSummary": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "fullName": { "type": "string", "title": "Fullname" } }, "type": "object", "required": ["id", "fullName"], "title": "UserSummary" }, "UserSummaryPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/UserSummary" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "UserSummaryPagination" }, "ValidationError": { "properties": { "loc": { "items": { "anyOf": [ { "type": "string" }, { "type": "integer" } ] }, "type": "array", "title": "Location" }, "msg": { "type": "string", "title": "Message" }, "type": { "type": "string", "title": "Error Type" } }, "type": "object", "required": ["loc", "msg", "type"], "title": "ValidationError" }, "ValidationResponse": { "properties": { "valid": { "type": "boolean", "title": "Valid" } }, "type": "object", "required": ["valid"], "title": "ValidationResponse" }, "WebhookPagination": { "properties": { "page": { "type": "integer", "title": "Page", "default": 1 }, "per_page": { "type": "integer", "title": "Per Page", "default": 10 }, "total": { "type": "integer", "title": "Total", "default": 0 }, "total_pages": { "type": "integer", "title": "Total Pages", "default": 0 }, "items": { "items": { "$ref": "#/components/schemas/ReadWebhook" }, "type": "array", "title": "Items" }, "next": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Next" }, "previous": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Previous" } }, "type": "object", "required": ["items"], "title": "WebhookPagination" }, "WebhookType": { "type": "string", "enum": ["mealplan"], "const": "mealplan", "title": "WebhookType" }, "mealie__schema__recipe__recipe_comments__UserBase": { "properties": { "id": { "type": "string", "format": "uuid4", "title": "Id" }, "username": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Username" }, "admin": { "type": "boolean", "title": "Admin" } }, "type": "object", "required": ["id", "admin"], "title": "UserBase" }, "mealie__schema__user__user__UserBase": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid4" }, { "type": "null" } ], "title": "Id" }, "username": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Username" }, "fullName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fullname" }, "email": { "type": "string", "title": "Email" }, "authMethod": { "allOf": [ { "$ref": "#/components/schemas/AuthMethod" } ], "default": "Mealie" }, "admin": { "type": "boolean", "title": "Admin", "default": false }, "group": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Group" }, "advanced": { "type": "boolean", "title": "Advanced", "default": false }, "canInvite": { "type": "boolean", "title": "Caninvite", "default": false }, "canManage": { "type": "boolean", "title": "Canmanage", "default": false }, "canOrganize": { "type": "boolean", "title": "Canorganize", "default": false } }, "type": "object", "required": ["email"], "title": "UserBase", "example": { "admin": "false", "email": "changeme@example.com", "fullName": "Change Me", "group": "home", "username": "ChangeMe" } } }, "securitySchemes": { "OAuth2PasswordBearer": { "type": "oauth2", "flows": { "password": { "scopes": {}, "tokenUrl": "/api/auth/token" } } } } } } joostlek-python-mealie-f3a7029/package-lock.json000066400000000000000000000014211473452740400216760ustar00rootroot00000000000000{ "name": "python-mealie", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "python-mealie", "version": "0.0.0", "license": "MIT", "devDependencies": { "prettier": "3.4.2" } }, "node_modules/prettier": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } } } } joostlek-python-mealie-f3a7029/package.json000066400000000000000000000005421473452740400207530ustar00rootroot00000000000000{ "name": "python-mealie", "version": "0.0.0", "private": true, "description": "Asynchronous Python client for Mealie.", "scripts": { "prettier": "prettier --write **/*.{json,js,md,yml,yaml} openapi.json" }, "author": "Joost Lekkerkerker ", "license": "MIT", "devDependencies": { "prettier": "3.4.2" } } joostlek-python-mealie-f3a7029/poetry.lock000066400000000000000000006226421473452740400206740ustar00rootroot00000000000000# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" version = "2.4.4" description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" files = [ {file = "aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8"}, {file = "aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745"}, ] [[package]] name = "aiohttp" version = "3.11.11" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.9" files = [ {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, ] [package.dependencies] aiohappyeyeballs = ">=2.3.0" aiosignal = ">=1.1.2" attrs = ">=17.3.0" frozenlist = ">=1.1.1" multidict = ">=4.5,<7.0" propcache = ">=0.2.0" yarl = ">=1.17.0,<2.0" [package.extras] speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] [[package]] name = "aioresponses" version = "0.7.7" description = "Mock out requests made by ClientSession from aiohttp package" optional = false python-versions = "*" files = [ {file = "aioresponses-0.7.7-py2.py3-none-any.whl", hash = "sha256:6975f31fe5e7f2113a41bd387221f31854f285ecbc05527272cd8ba4c50764a3"}, {file = "aioresponses-0.7.7.tar.gz", hash = "sha256:66292f1d5c94a3cb984f3336d806446042adb17347d3089f2d3962dd6e5ba55a"}, ] [package.dependencies] aiohttp = ">=3.3.0,<4.0.0" packaging = ">=22.0" [[package]] name = "aiosignal" version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" optional = false python-versions = ">=3.9" files = [ {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, ] [package.dependencies] frozenlist = ">=1.1.0" [[package]] name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] name = "astroid" version = "3.3.8" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.9.0" files = [ {file = "astroid-3.3.8-py3-none-any.whl", hash = "sha256:187ccc0c248bfbba564826c26f070494f7bc964fd286b6d9fff4420e55de828c"}, {file = "astroid-3.3.8.tar.gz", hash = "sha256:a88c7994f914a4ea8572fac479459f4955eeccc877be3f2d959a33273b0cf40b"}, ] [[package]] name = "attrs" version = "24.3.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" files = [ {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, ] [package.extras] benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "authlib" version = "1.4.0" description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients." optional = false python-versions = ">=3.9" files = [ {file = "Authlib-1.4.0-py2.py3-none-any.whl", hash = "sha256:4bb20b978c8b636222b549317c1815e1fe62234fc1c5efe8855d84aebf3a74e3"}, {file = "authlib-1.4.0.tar.gz", hash = "sha256:1c1e6608b5ed3624aeeee136ca7f8c120d6f51f731aa152b153d54741840e1f2"}, ] [package.dependencies] cryptography = "*" [[package]] name = "awesomeversion" version = "24.6.0" description = "One version package to rule them all, One version package to find them, One version package to bring them all, and in the darkness bind them." optional = false python-versions = "<4.0,>=3.8" files = [ {file = "awesomeversion-24.6.0-py3-none-any.whl", hash = "sha256:6768415b8954b379a25cebf21ed4f682cab10aebf3f82a6640aaaa15ec6821f2"}, {file = "awesomeversion-24.6.0.tar.gz", hash = "sha256:aee7ccbaed6f8d84e0f0364080c7734a0166d77ea6ccfcc4900b38917f1efc71"}, ] [[package]] name = "certifi" version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] name = "cffi" version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] pycparser = "*" [[package]] name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." optional = false python-versions = ">=3.8" files = [ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, ] [[package]] name = "charset-normalizer" version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" files = [ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, ] [[package]] name = "click" version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "codespell" version = "2.3.0" description = "Codespell" optional = false python-versions = ">=3.8" files = [ {file = "codespell-2.3.0-py3-none-any.whl", hash = "sha256:a9c7cef2501c9cfede2110fd6d4e5e62296920efe9abfb84648df866e47f58d1"}, {file = "codespell-2.3.0.tar.gz", hash = "sha256:360c7d10f75e65f67bad720af7007e1060a5d395670ec11a7ed1fed9dd17471f"}, ] [package.extras] dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"] hard-encoding-detection = ["chardet"] toml = ["tomli"] types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"] [[package]] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] [[package]] name = "covdefaults" version = "2.3.0" description = "A coverage plugin to provide sensible default settings" optional = false python-versions = ">=3.7" files = [ {file = "covdefaults-2.3.0-py2.py3-none-any.whl", hash = "sha256:2832961f6ffcfe4b57c338bc3418a3526f495c26fb9c54565409c5532f7c41be"}, {file = "covdefaults-2.3.0.tar.gz", hash = "sha256:4e99f679f12d792bc62e5510fa3eb59546ed47bd569e36e4fddc4081c9c3ebf7"}, ] [package.dependencies] coverage = ">=6.0.2" [[package]] name = "coverage" version = "7.6.10" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" files = [ {file = "coverage-7.6.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78"}, {file = "coverage-7.6.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c"}, {file = "coverage-7.6.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a"}, {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165"}, {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988"}, {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5"}, {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3"}, {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5"}, {file = "coverage-7.6.10-cp310-cp310-win32.whl", hash = "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244"}, {file = "coverage-7.6.10-cp310-cp310-win_amd64.whl", hash = "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e"}, {file = "coverage-7.6.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3"}, {file = "coverage-7.6.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43"}, {file = "coverage-7.6.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132"}, {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f"}, {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994"}, {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99"}, {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd"}, {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377"}, {file = "coverage-7.6.10-cp311-cp311-win32.whl", hash = "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8"}, {file = "coverage-7.6.10-cp311-cp311-win_amd64.whl", hash = "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609"}, {file = "coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853"}, {file = "coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078"}, {file = "coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0"}, {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50"}, {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022"}, {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b"}, {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0"}, {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852"}, {file = "coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359"}, {file = "coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247"}, {file = "coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9"}, {file = "coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b"}, {file = "coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690"}, {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18"}, {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c"}, {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd"}, {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e"}, {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694"}, {file = "coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6"}, {file = "coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e"}, {file = "coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe"}, {file = "coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273"}, {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8"}, {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098"}, {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb"}, {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0"}, {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf"}, {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2"}, {file = "coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312"}, {file = "coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d"}, {file = "coverage-7.6.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a"}, {file = "coverage-7.6.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27"}, {file = "coverage-7.6.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4"}, {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f"}, {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25"}, {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315"}, {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90"}, {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d"}, {file = "coverage-7.6.10-cp39-cp39-win32.whl", hash = "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18"}, {file = "coverage-7.6.10-cp39-cp39-win_amd64.whl", hash = "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59"}, {file = "coverage-7.6.10-pp39.pp310-none-any.whl", hash = "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f"}, {file = "coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23"}, ] [package.extras] toml = ["tomli"] [[package]] name = "cryptography" version = "44.0.0" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = "!=3.9.0,!=3.9.1,>=3.7" files = [ {file = "cryptography-44.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:84111ad4ff3f6253820e6d3e58be2cc2a00adb29335d4cacb5ab4d4d34f2a123"}, {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092"}, {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f"}, {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb"}, {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b"}, {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543"}, {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:60eb32934076fa07e4316b7b2742fa52cbb190b42c2df2863dbc4230a0a9b385"}, {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e"}, {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e"}, {file = "cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053"}, {file = "cryptography-44.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:abc998e0c0eee3c8a1904221d3f67dcfa76422b23620173e28c11d3e626c21bd"}, {file = "cryptography-44.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:660cb7312a08bc38be15b696462fa7cc7cd85c3ed9c576e81f4dc4d8b2b31591"}, {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7"}, {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc"}, {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289"}, {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7"}, {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c"}, {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9abcc2e083cbe8dde89124a47e5e53ec38751f0d7dfd36801008f316a127d7ba"}, {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64"}, {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285"}, {file = "cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417"}, {file = "cryptography-44.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede"}, {file = "cryptography-44.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:37d76e6863da3774cd9db5b409a9ecfd2c71c981c38788d3fcfaf177f447b731"}, {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f677e1268c4e23420c3acade68fac427fffcb8d19d7df95ed7ad17cdef8404f4"}, {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f5e7cb1e5e56ca0933b4873c0220a78b773b24d40d186b6738080b73d3d0a756"}, {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:8b3e6eae66cf54701ee7d9c83c30ac0a1e3fa17be486033000f2a73a12ab507c"}, {file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:be4ce505894d15d5c5037167ffb7f0ae90b7be6f2a98f9a5c3442395501c32fa"}, {file = "cryptography-44.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:62901fb618f74d7d81bf408c8719e9ec14d863086efe4185afd07c352aee1d2c"}, {file = "cryptography-44.0.0.tar.gz", hash = "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02"}, ] [package.dependencies] cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=3.0.0)"] docstest = ["pyenchant (>=3)", "readme-renderer (>=30.0)", "sphinxcontrib-spelling (>=7.3.1)"] nox = ["nox (>=2024.4.15)", "nox[uv] (>=2024.3.2)"] pep8test = ["check-sdist", "click (>=8.0.1)", "mypy (>=1.4)", "ruff (>=0.3.6)"] sdist = ["build (>=1.0.0)"] ssh = ["bcrypt (>=3.1.5)"] test = ["certifi (>=2024)", "cryptography-vectors (==44.0.0)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] test-randomorder = ["pytest-randomly"] [[package]] name = "dill" version = "0.3.9" description = "serialize all of Python" optional = false python-versions = ">=3.8" files = [ {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, ] [package.extras] graph = ["objgraph (>=1.7.2)"] profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "distlib" version = "0.3.9" description = "Distribution utilities" optional = false python-versions = "*" files = [ {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, ] [[package]] name = "dparse" version = "0.6.4" description = "A parser for Python dependency files" optional = false python-versions = ">=3.7" files = [ {file = "dparse-0.6.4-py3-none-any.whl", hash = "sha256:fbab4d50d54d0e739fbb4dedfc3d92771003a5b9aa8545ca7a7045e3b174af57"}, {file = "dparse-0.6.4.tar.gz", hash = "sha256:90b29c39e3edc36c6284c82c4132648eaf28a01863eb3c231c2512196132201a"}, ] [package.dependencies] packaging = "*" [package.extras] all = ["pipenv", "poetry", "pyyaml"] conda = ["pyyaml"] pipenv = ["pipenv"] poetry = ["poetry"] [[package]] name = "filelock" version = "3.16.1" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, ] [package.extras] docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "frozenlist" version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" files = [ {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, {file = "frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec"}, {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5"}, {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76"}, {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17"}, {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba"}, {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d"}, {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2"}, {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f"}, {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c"}, {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab"}, {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5"}, {file = "frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb"}, {file = "frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4"}, {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30"}, {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5"}, {file = "frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778"}, {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a"}, {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869"}, {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d"}, {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45"}, {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d"}, {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3"}, {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a"}, {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9"}, {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2"}, {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf"}, {file = "frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942"}, {file = "frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d"}, {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21"}, {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d"}, {file = "frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e"}, {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a"}, {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a"}, {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee"}, {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6"}, {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e"}, {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9"}, {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039"}, {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784"}, {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631"}, {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f"}, {file = "frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8"}, {file = "frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f"}, {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953"}, {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0"}, {file = "frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2"}, {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f"}, {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608"}, {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b"}, {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840"}, {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439"}, {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de"}, {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641"}, {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e"}, {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9"}, {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03"}, {file = "frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c"}, {file = "frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28"}, {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca"}, {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10"}, {file = "frozenlist-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604"}, {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3"}, {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307"}, {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10"}, {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9"}, {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99"}, {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c"}, {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171"}, {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e"}, {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf"}, {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e"}, {file = "frozenlist-1.5.0-cp38-cp38-win32.whl", hash = "sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723"}, {file = "frozenlist-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923"}, {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972"}, {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336"}, {file = "frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f"}, {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f"}, {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6"}, {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411"}, {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08"}, {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2"}, {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d"}, {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b"}, {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b"}, {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0"}, {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c"}, {file = "frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3"}, {file = "frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0"}, {file = "frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3"}, {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, ] [[package]] name = "identify" version = "2.6.4" description = "File identification library for Python" optional = false python-versions = ">=3.9" files = [ {file = "identify-2.6.4-py2.py3-none-any.whl", hash = "sha256:993b0f01b97e0568c179bb9196391ff391bfb88a99099dbf5ce392b68f42d0af"}, {file = "identify-2.6.4.tar.gz", hash = "sha256:285a7d27e397652e8cafe537a6cc97dd470a970f48fb2e9d979aa38eae5513ac"}, ] [package.extras] license = ["ukkonen"] [[package]] name = "idna" version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] [package.extras] all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] [[package]] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] [[package]] name = "isort" version = "5.13.2" description = "A Python utility / library to sort Python imports." optional = false python-versions = ">=3.8.0" files = [ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, ] [package.extras] colors = ["colorama (>=0.4.6)"] [[package]] name = "jinja2" version = "3.1.5" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, ] [package.dependencies] MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] [[package]] name = "markdown-it-py" version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.8" files = [ {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, ] [package.dependencies] mdurl = ">=0.1,<1.0" [package.extras] benchmarking = ["psutil", "pytest", "pytest-benchmark"] code-style = ["pre-commit (>=3.0,<4.0)"] compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] linkify = ["linkify-it-py (>=1,<3)"] plugins = ["mdit-py-plugins"] profiling = ["gprof2dot"] rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] [[package]] name = "marshmallow" version = "3.23.2" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.9" files = [ {file = "marshmallow-3.23.2-py3-none-any.whl", hash = "sha256:bcaf2d6fd74fb1459f8450e85d994997ad3e70036452cbfa4ab685acb19479b3"}, {file = "marshmallow-3.23.2.tar.gz", hash = "sha256:c448ac6455ca4d794773f00bae22c2f351d62d739929f761dce5eacb5c468d7f"}, ] [package.dependencies] packaging = ">=17.0" [package.extras] dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"] docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.14)", "sphinx (==8.1.3)", "sphinx-issues (==5.0.0)", "sphinx-version-warning (==1.1.2)"] tests = ["pytest", "simplejson"] [[package]] name = "mashumaro" version = "3.15" description = "Fast and well tested serialization library" optional = false python-versions = ">=3.9" files = [ {file = "mashumaro-3.15-py3-none-any.whl", hash = "sha256:cdd45ef5a4d09860846a3ee37a4c2f5f4bc70eb158caa55648c4c99451ca6c4c"}, {file = "mashumaro-3.15.tar.gz", hash = "sha256:32a2a38a1e942a07f2cbf9c3061cb2a247714ee53e36a5958548b66bd116d0a9"}, ] [package.dependencies] typing-extensions = ">=4.1.0" [package.extras] msgpack = ["msgpack (>=0.5.6)"] orjson = ["orjson"] toml = ["tomli (>=1.1.0)", "tomli-w (>=1.0)"] yaml = ["pyyaml (>=3.13)"] [[package]] name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" optional = false python-versions = ">=3.6" files = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] [[package]] name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" optional = false python-versions = ">=3.7" files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] [[package]] name = "multidict" version = "6.1.0" description = "multidict implementation" optional = false python-versions = ">=3.8" files = [ {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, ] [[package]] name = "mypy" version = "1.14.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ {file = "mypy-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e971c1c667007f9f2b397ffa80fa8e1e0adccff336e5e77e74cb5f22868bee87"}, {file = "mypy-1.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e86aaeaa3221a278c66d3d673b297232947d873773d61ca3ee0e28b2ff027179"}, {file = "mypy-1.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1628c5c3ce823d296e41e2984ff88c5861499041cb416a8809615d0c1f41740e"}, {file = "mypy-1.14.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fadb29b77fc14a0dd81304ed73c828c3e5cde0016c7e668a86a3e0dfc9f3af3"}, {file = "mypy-1.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:3fa76988dc760da377c1e5069200a50d9eaaccf34f4ea18428a3337034ab5a44"}, {file = "mypy-1.14.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6e73c8a154eed31db3445fe28f63ad2d97b674b911c00191416cf7f6459fd49a"}, {file = "mypy-1.14.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:273e70fcb2e38c5405a188425aa60b984ffdcef65d6c746ea5813024b68c73dc"}, {file = "mypy-1.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1daca283d732943731a6a9f20fdbcaa927f160bc51602b1d4ef880a6fb252015"}, {file = "mypy-1.14.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7e68047bedb04c1c25bba9901ea46ff60d5eaac2d71b1f2161f33107e2b368eb"}, {file = "mypy-1.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:7a52f26b9c9b1664a60d87675f3bae00b5c7f2806e0c2800545a32c325920bcc"}, {file = "mypy-1.14.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d5326ab70a6db8e856d59ad4cb72741124950cbbf32e7b70e30166ba7bbf61dd"}, {file = "mypy-1.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bf4ec4980bec1e0e24e5075f449d014011527ae0055884c7e3abc6a99cd2c7f1"}, {file = "mypy-1.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:390dfb898239c25289495500f12fa73aa7f24a4c6d90ccdc165762462b998d63"}, {file = "mypy-1.14.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7e026d55ddcd76e29e87865c08cbe2d0104e2b3153a523c529de584759379d3d"}, {file = "mypy-1.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:585ed36031d0b3ee362e5107ef449a8b5dfd4e9c90ccbe36414ee405ee6b32ba"}, {file = "mypy-1.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9f6f4c0b27401d14c483c622bc5105eff3911634d576bbdf6695b9a7c1ba741"}, {file = "mypy-1.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56b2280cedcb312c7a79f5001ae5325582d0d339bce684e4a529069d0e7ca1e7"}, {file = "mypy-1.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:342de51c48bab326bfc77ce056ba08c076d82ce4f5a86621f972ed39970f94d8"}, {file = "mypy-1.14.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:00df23b42e533e02a6f0055e54de9a6ed491cd8b7ea738647364fd3a39ea7efc"}, {file = "mypy-1.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:e8c8387e5d9dff80e7daf961df357c80e694e942d9755f3ad77d69b0957b8e3f"}, {file = "mypy-1.14.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b16738b1d80ec4334654e89e798eb705ac0c36c8a5c4798496cd3623aa02286"}, {file = "mypy-1.14.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:10065fcebb7c66df04b05fc799a854b1ae24d9963c8bb27e9064a9bdb43aa8ad"}, {file = "mypy-1.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fbb7d683fa6bdecaa106e8368aa973ecc0ddb79a9eaeb4b821591ecd07e9e03c"}, {file = "mypy-1.14.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3498cb55448dc5533e438cd13d6ddd28654559c8c4d1fd4b5ca57a31b81bac01"}, {file = "mypy-1.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:c7b243408ea43755f3a21a0a08e5c5ae30eddb4c58a80f415ca6b118816e60aa"}, {file = "mypy-1.14.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:14117b9da3305b39860d0aa34b8f1ff74d209a368829a584eb77524389a9c13e"}, {file = "mypy-1.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af98c5a958f9c37404bd4eef2f920b94874507e146ed6ee559f185b8809c44cc"}, {file = "mypy-1.14.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b343a1d3989547024377c2ba0dca9c74a2428ad6ed24283c213af8dbb0710b"}, {file = "mypy-1.14.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cdb5563c1726c85fb201be383168f8c866032db95e1095600806625b3a648cb7"}, {file = "mypy-1.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:74e925649c1ee0a79aa7448baf2668d81cc287dc5782cff6a04ee93f40fb8d3f"}, {file = "mypy-1.14.0-py3-none-any.whl", hash = "sha256:2238d7f93fc4027ed1efc944507683df3ba406445a2b6c96e79666a045aadfab"}, {file = "mypy-1.14.0.tar.gz", hash = "sha256:822dbd184d4a9804df5a7d5335a68cf7662930e70b8c1bc976645d1509f9a9d6"}, ] [package.dependencies] mypy_extensions = ">=1.0.0" typing_extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] faster-cache = ["orjson"] install-types = ["pip"] mypyc = ["setuptools (>=50)"] reports = ["lxml"] [[package]] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] [[package]] name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] [[package]] name = "orjson" version = "3.10.13" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ {file = "orjson-3.10.13-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1232c5e873a4d1638ef957c5564b4b0d6f2a6ab9e207a9b3de9de05a09d1d920"}, {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d26a0eca3035619fa366cbaf49af704c7cb1d4a0e6c79eced9f6a3f2437964b6"}, {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d4b6acd7c9c829895e50d385a357d4b8c3fafc19c5989da2bae11783b0fd4977"}, {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1884e53c6818686891cc6fc5a3a2540f2f35e8c76eac8dc3b40480fb59660b00"}, {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a428afb5720f12892f64920acd2eeb4d996595bf168a26dd9190115dbf1130d"}, {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba5b13b8739ce5b630c65cb1c85aedbd257bcc2b9c256b06ab2605209af75a2e"}, {file = "orjson-3.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cab83e67f6aabda1b45882254b2598b48b80ecc112968fc6483fa6dae609e9f0"}, {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:62c3cc00c7e776c71c6b7b9c48c5d2701d4c04e7d1d7cdee3572998ee6dc57cc"}, {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:dc03db4922e75bbc870b03fc49734cefbd50fe975e0878327d200022210b82d8"}, {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:22f1c9a30b43d14a041a6ea190d9eca8a6b80c4beb0e8b67602c82d30d6eec3e"}, {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b42f56821c29e697c68d7d421410d7c1d8f064ae288b525af6a50cf99a4b1200"}, {file = "orjson-3.10.13-cp310-cp310-win32.whl", hash = "sha256:0dbf3b97e52e093d7c3e93eb5eb5b31dc7535b33c2ad56872c83f0160f943487"}, {file = "orjson-3.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:46c249b4e934453be4ff2e518cd1adcd90467da7391c7a79eaf2fbb79c51e8c7"}, {file = "orjson-3.10.13-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a36c0d48d2f084c800763473020a12976996f1109e2fcb66cfea442fdf88047f"}, {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0065896f85d9497990731dfd4a9991a45b0a524baec42ef0a63c34630ee26fd6"}, {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92b4ec30d6025a9dcdfe0df77063cbce238c08d0404471ed7a79f309364a3d19"}, {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a94542d12271c30044dadad1125ee060e7a2048b6c7034e432e116077e1d13d2"}, {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3723e137772639af8adb68230f2aa4bcb27c48b3335b1b1e2d49328fed5e244c"}, {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f00c7fb18843bad2ac42dc1ce6dd214a083c53f1e324a0fd1c8137c6436269b"}, {file = "orjson-3.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0e2759d3172300b2f892dee85500b22fca5ac49e0c42cfff101aaf9c12ac9617"}, {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ee948c6c01f6b337589c88f8e0bb11e78d32a15848b8b53d3f3b6fea48842c12"}, {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:aa6fe68f0981fba0d4bf9cdc666d297a7cdba0f1b380dcd075a9a3dd5649a69e"}, {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dbcd7aad6bcff258f6896abfbc177d54d9b18149c4c561114f47ebfe74ae6bfd"}, {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2149e2fcd084c3fd584881c7f9d7f9e5ad1e2e006609d8b80649655e0d52cd02"}, {file = "orjson-3.10.13-cp311-cp311-win32.whl", hash = "sha256:89367767ed27b33c25c026696507c76e3d01958406f51d3a2239fe9e91959df2"}, {file = "orjson-3.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:dca1d20f1af0daff511f6e26a27354a424f0b5cf00e04280279316df0f604a6f"}, {file = "orjson-3.10.13-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a3614b00621c77f3f6487792238f9ed1dd8a42f2ec0e6540ee34c2d4e6db813a"}, {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c976bad3996aa027cd3aef78aa57873f3c959b6c38719de9724b71bdc7bd14b"}, {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f74d878d1efb97a930b8a9f9898890067707d683eb5c7e20730030ecb3fb930"}, {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33ef84f7e9513fb13b3999c2a64b9ca9c8143f3da9722fbf9c9ce51ce0d8076e"}, {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd2bcde107221bb9c2fa0c4aaba735a537225104173d7e19cf73f70b3126c993"}, {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:064b9dbb0217fd64a8d016a8929f2fae6f3312d55ab3036b00b1d17399ab2f3e"}, {file = "orjson-3.10.13-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0044b0b8c85a565e7c3ce0a72acc5d35cda60793edf871ed94711e712cb637d"}, {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7184f608ad563032e398f311910bc536e62b9fbdca2041be889afcbc39500de8"}, {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d36f689e7e1b9b6fb39dbdebc16a6f07cbe994d3644fb1c22953020fc575935f"}, {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:54433e421618cd5873e51c0e9d0b9fb35f7bf76eb31c8eab20b3595bb713cd3d"}, {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e1ba0c5857dd743438acecc1cd0e1adf83f0a81fee558e32b2b36f89e40cee8b"}, {file = "orjson-3.10.13-cp312-cp312-win32.whl", hash = "sha256:a42b9fe4b0114b51eb5cdf9887d8c94447bc59df6dbb9c5884434eab947888d8"}, {file = "orjson-3.10.13-cp312-cp312-win_amd64.whl", hash = "sha256:3a7df63076435f39ec024bdfeb4c9767ebe7b49abc4949068d61cf4857fa6d6c"}, {file = "orjson-3.10.13-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2cdaf8b028a976ebab837a2c27b82810f7fc76ed9fb243755ba650cc83d07730"}, {file = "orjson-3.10.13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48a946796e390cbb803e069472de37f192b7a80f4ac82e16d6eb9909d9e39d56"}, {file = "orjson-3.10.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7d64f1db5ecbc21eb83097e5236d6ab7e86092c1cd4c216c02533332951afc"}, {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:711878da48f89df194edd2ba603ad42e7afed74abcd2bac164685e7ec15f96de"}, {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:cf16f06cb77ce8baf844bc222dbcb03838f61d0abda2c3341400c2b7604e436e"}, {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8257c3fb8dd7b0b446b5e87bf85a28e4071ac50f8c04b6ce2d38cb4abd7dff57"}, {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d9c3a87abe6f849a4a7ac8a8a1dede6320a4303d5304006b90da7a3cd2b70d2c"}, {file = "orjson-3.10.13-cp313-cp313-win32.whl", hash = "sha256:527afb6ddb0fa3fe02f5d9fba4920d9d95da58917826a9be93e0242da8abe94a"}, {file = "orjson-3.10.13-cp313-cp313-win_amd64.whl", hash = "sha256:b5f7c298d4b935b222f52d6c7f2ba5eafb59d690d9a3840b7b5c5cda97f6ec5c"}, {file = "orjson-3.10.13-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e49333d1038bc03a25fdfe11c86360df9b890354bfe04215f1f54d030f33c342"}, {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:003721c72930dbb973f25c5d8e68d0f023d6ed138b14830cc94e57c6805a2eab"}, {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:63664bf12addb318dc8f032160e0f5dc17eb8471c93601e8f5e0d07f95003784"}, {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6066729cf9552d70de297b56556d14b4f49c8f638803ee3c90fd212fa43cc6af"}, {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8a1152e2761025c5d13b5e1908d4b1c57f3797ba662e485ae6f26e4e0c466388"}, {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69b21d91c5c5ef8a201036d207b1adf3aa596b930b6ca3c71484dd11386cf6c3"}, {file = "orjson-3.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b12a63f48bb53dba8453d36ca2661f2330126d54e26c1661e550b32864b28ce3"}, {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a5a7624ab4d121c7e035708c8dd1f99c15ff155b69a1c0affc4d9d8b551281ba"}, {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:0fee076134398d4e6cb827002468679ad402b22269510cf228301b787fdff5ae"}, {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ae537fcf330b3947e82c6ae4271e092e6cf16b9bc2cef68b14ffd0df1fa8832a"}, {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f81b26c03f5fb5f0d0ee48d83cea4d7bc5e67e420d209cc1a990f5d1c62f9be0"}, {file = "orjson-3.10.13-cp38-cp38-win32.whl", hash = "sha256:0bc858086088b39dc622bc8219e73d3f246fb2bce70a6104abd04b3a080a66a8"}, {file = "orjson-3.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:3ca6f17467ebbd763f8862f1d89384a5051b461bb0e41074f583a0ebd7120e8e"}, {file = "orjson-3.10.13-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4a11532cbfc2f5752c37e84863ef8435b68b0e6d459b329933294f65fa4bda1a"}, {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c96d2fb80467d1d0dfc4d037b4e1c0f84f1fe6229aa7fea3f070083acef7f3d7"}, {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dda4ba4d3e6f6c53b6b9c35266788053b61656a716a7fef5c884629c2a52e7aa"}, {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4f998bbf300690be881772ee9c5281eb9c0044e295bcd4722504f5b5c6092ff"}, {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1cc42ed75b585c0c4dc5eb53a90a34ccb493c09a10750d1a1f9b9eff2bd12"}, {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03b0f29d485411e3c13d79604b740b14e4e5fb58811743f6f4f9693ee6480a8f"}, {file = "orjson-3.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:233aae4474078d82f425134bb6a10fb2b3fc5a1a1b3420c6463ddd1b6a97eda8"}, {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e384e330a67cf52b3597ee2646de63407da6f8fc9e9beec3eaaaef5514c7a1c9"}, {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4222881d0aab76224d7b003a8e5fdae4082e32c86768e0e8652de8afd6c4e2c1"}, {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e400436950ba42110a20c50c80dff4946c8e3ec09abc1c9cf5473467e83fd1c5"}, {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f47c9e7d224b86ffb086059cdcf634f4b3f32480f9838864aa09022fe2617ce2"}, {file = "orjson-3.10.13-cp39-cp39-win32.whl", hash = "sha256:a9ecea472f3eb653e1c0a3d68085f031f18fc501ea392b98dcca3e87c24f9ebe"}, {file = "orjson-3.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:5385935a73adce85cc7faac9d396683fd813566d3857fa95a0b521ef84a5b588"}, {file = "orjson-3.10.13.tar.gz", hash = "sha256:eb9bfb14ab8f68d9d9492d4817ae497788a15fd7da72e14dfabc289c3bb088ec"}, ] [[package]] name = "packaging" version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] name = "platformdirs" version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] type = ["mypy (>=1.11.2)"] [[package]] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] [[package]] name = "pre-commit" version = "4.0.1" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" files = [ {file = "pre_commit-4.0.1-py2.py3-none-any.whl", hash = "sha256:efde913840816312445dc98787724647c65473daefe420785f885e8ed9a06878"}, {file = "pre_commit-4.0.1.tar.gz", hash = "sha256:80905ac375958c0444c65e9cebebd948b3cdb518f335a091a670a89d652139d2"}, ] [package.dependencies] cfgv = ">=2.0.0" identify = ">=1.0.0" nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" [[package]] name = "pre-commit-hooks" version = "5.0.0" description = "Some out-of-the-box hooks for pre-commit." optional = false python-versions = ">=3.8" files = [ {file = "pre_commit_hooks-5.0.0-py2.py3-none-any.whl", hash = "sha256:8d71cfb582c5c314a5498d94e0104b6567a8b93fb35903ea845c491f4e290a7a"}, {file = "pre_commit_hooks-5.0.0.tar.gz", hash = "sha256:10626959a9eaf602fbfc22bc61b6e75801436f82326bfcee82bb1f2fc4bc646e"}, ] [package.dependencies] "ruamel.yaml" = ">=0.15" [[package]] name = "propcache" version = "0.2.1" description = "Accelerated property cache" optional = false python-versions = ">=3.9" files = [ {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6"}, {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2"}, {file = "propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea"}, {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212"}, {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3"}, {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d"}, {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634"}, {file = "propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2"}, {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958"}, {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c"}, {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583"}, {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf"}, {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034"}, {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b"}, {file = "propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4"}, {file = "propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba"}, {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16"}, {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717"}, {file = "propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3"}, {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9"}, {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787"}, {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465"}, {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af"}, {file = "propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7"}, {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f"}, {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54"}, {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505"}, {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82"}, {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca"}, {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e"}, {file = "propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034"}, {file = "propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3"}, {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a"}, {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0"}, {file = "propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d"}, {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4"}, {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d"}, {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5"}, {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24"}, {file = "propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff"}, {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f"}, {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec"}, {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348"}, {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6"}, {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6"}, {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518"}, {file = "propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246"}, {file = "propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1"}, {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc"}, {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9"}, {file = "propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439"}, {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536"}, {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629"}, {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b"}, {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052"}, {file = "propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce"}, {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d"}, {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce"}, {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95"}, {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf"}, {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f"}, {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30"}, {file = "propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6"}, {file = "propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1"}, {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6a9a8c34fb7bb609419a211e59da8887eeca40d300b5ea8e56af98f6fbbb1541"}, {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae1aa1cd222c6d205853b3013c69cd04515f9d6ab6de4b0603e2e1c33221303e"}, {file = "propcache-0.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:accb6150ce61c9c4b7738d45550806aa2b71c7668c6942f17b0ac182b6142fd4"}, {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eee736daafa7af6d0a2dc15cc75e05c64f37fc37bafef2e00d77c14171c2097"}, {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7a31fc1e1bd362874863fdeed71aed92d348f5336fd84f2197ba40c59f061bd"}, {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba4cfa1052819d16699e1d55d18c92b6e094d4517c41dd231a8b9f87b6fa681"}, {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f089118d584e859c62b3da0892b88a83d611c2033ac410e929cb6754eec0ed16"}, {file = "propcache-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:781e65134efaf88feb447e8c97a51772aa75e48b794352f94cb7ea717dedda0d"}, {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31f5af773530fd3c658b32b6bdc2d0838543de70eb9a2156c03e410f7b0d3aae"}, {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a7a078f5d37bee6690959c813977da5291b24286e7b962e62a94cec31aa5188b"}, {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cea7daf9fc7ae6687cf1e2c049752f19f146fdc37c2cc376e7d0032cf4f25347"}, {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:8b3489ff1ed1e8315674d0775dc7d2195fb13ca17b3808721b54dbe9fd020faf"}, {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9403db39be1393618dd80c746cb22ccda168efce239c73af13c3763ef56ffc04"}, {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5d97151bc92d2b2578ff7ce779cdb9174337390a535953cbb9452fb65164c587"}, {file = "propcache-0.2.1-cp39-cp39-win32.whl", hash = "sha256:9caac6b54914bdf41bcc91e7eb9147d331d29235a7c967c150ef5df6464fd1bb"}, {file = "propcache-0.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:92fc4500fcb33899b05ba73276dfb684a20d31caa567b7cb5252d48f896a91b1"}, {file = "propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54"}, {file = "propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64"}, ] [[package]] name = "psutil" version = "6.1.1" description = "Cross-platform lib for process and system monitoring in Python." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ {file = "psutil-6.1.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:9ccc4316f24409159897799b83004cb1e24f9819b0dcf9c0b68bdcb6cefee6a8"}, {file = "psutil-6.1.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ca9609c77ea3b8481ab005da74ed894035936223422dc591d6772b147421f777"}, {file = "psutil-6.1.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8df0178ba8a9e5bc84fed9cfa61d54601b371fbec5c8eebad27575f1e105c0d4"}, {file = "psutil-6.1.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:1924e659d6c19c647e763e78670a05dbb7feaf44a0e9c94bf9e14dfc6ba50468"}, {file = "psutil-6.1.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:018aeae2af92d943fdf1da6b58665124897cfc94faa2ca92098838f83e1b1bca"}, {file = "psutil-6.1.1-cp27-none-win32.whl", hash = "sha256:6d4281f5bbca041e2292be3380ec56a9413b790579b8e593b1784499d0005dac"}, {file = "psutil-6.1.1-cp27-none-win_amd64.whl", hash = "sha256:c777eb75bb33c47377c9af68f30e9f11bc78e0f07fbf907be4a5d70b2fe5f030"}, {file = "psutil-6.1.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed7fe2231a444fc219b9c42d0376e0a9a1a72f16c5cfa0f68d19f1a0663e8"}, {file = "psutil-6.1.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0bdd4eab935276290ad3cb718e9809412895ca6b5b334f5a9111ee6d9aff9377"}, {file = "psutil-6.1.1-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6e06c20c05fe95a3d7302d74e7097756d4ba1247975ad6905441ae1b5b66003"}, {file = "psutil-6.1.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97f7cb9921fbec4904f522d972f0c0e1f4fabbdd4e0287813b21215074a0f160"}, {file = "psutil-6.1.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33431e84fee02bc84ea36d9e2c4a6d395d479c9dd9bba2376c1f6ee8f3a4e0b3"}, {file = "psutil-6.1.1-cp36-cp36m-win32.whl", hash = "sha256:384636b1a64b47814437d1173be1427a7c83681b17a450bfc309a1953e329603"}, {file = "psutil-6.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8be07491f6ebe1a693f17d4f11e69d0dc1811fa082736500f649f79df7735303"}, {file = "psutil-6.1.1-cp37-abi3-win32.whl", hash = "sha256:eaa912e0b11848c4d9279a93d7e2783df352b082f40111e078388701fd479e53"}, {file = "psutil-6.1.1-cp37-abi3-win_amd64.whl", hash = "sha256:f35cfccb065fff93529d2afb4a2e89e363fe63ca1e4a5da22b603a85833c2649"}, {file = "psutil-6.1.1.tar.gz", hash = "sha256:cf8496728c18f2d0b45198f06895be52f36611711746b7f30c464b422b50e2f5"}, ] [package.extras] dev = ["abi3audit", "black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] test = ["pytest", "pytest-xdist", "setuptools"] [[package]] name = "pycparser" version = "2.22" description = "C parser in Python" optional = false python-versions = ">=3.8" files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] name = "pydantic" version = "2.9.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, ] [package.dependencies] annotated-types = ">=0.6.0" pydantic-core = "2.23.4" typing-extensions = [ {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, {version = ">=4.6.1", markers = "python_version < \"3.13\""}, ] [package.extras] email = ["email-validator (>=2.0.0)"] timezone = ["tzdata"] [[package]] name = "pydantic-core" version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, ] [package.dependencies] typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygments" version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" files = [ {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [package.extras] windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pylint" version = "3.3.3" description = "python code static checker" optional = false python-versions = ">=3.9.0" files = [ {file = "pylint-3.3.3-py3-none-any.whl", hash = "sha256:26e271a2bc8bce0fc23833805a9076dd9b4d5194e2a02164942cb3cdc37b4183"}, {file = "pylint-3.3.3.tar.gz", hash = "sha256:07c607523b17e6d16e2ae0d7ef59602e332caa762af64203c24b41c27139f36a"}, ] [package.dependencies] astroid = ">=3.3.8,<=3.4.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomlkit = ">=0.10.1" [package.extras] spelling = ["pyenchant (>=3.2,<4.0)"] testutils = ["gitpython (>3)"] [[package]] name = "pytest" version = "8.3.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} iniconfig = "*" packaging = "*" pluggy = ">=1.5,<2" [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-asyncio" version = "0.25.0" description = "Pytest support for asyncio" optional = false python-versions = ">=3.9" files = [ {file = "pytest_asyncio-0.25.0-py3-none-any.whl", hash = "sha256:db5432d18eac6b7e28b46dcd9b69921b55c3b1086e85febfe04e70b18d9e81b3"}, {file = "pytest_asyncio-0.25.0.tar.gz", hash = "sha256:8c0610303c9e0442a5db8604505fc0f545456ba1528824842b37b4a626cbf609"}, ] [package.dependencies] pytest = ">=8.2,<9" [package.extras] docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1)"] testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] [[package]] name = "pytest-cov" version = "6.0.0" description = "Pytest plugin for measuring coverage." optional = false python-versions = ">=3.9" files = [ {file = "pytest-cov-6.0.0.tar.gz", hash = "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0"}, {file = "pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35"}, ] [package.dependencies] coverage = {version = ">=7.5", extras = ["toml"]} pytest = ">=4.6" [package.extras] testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] [[package]] name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] name = "requests" version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] certifi = ">=2017.4.17" charset-normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rich" version = "13.9.4" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.8.0" files = [ {file = "rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90"}, {file = "rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098"}, ] [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "ruamel-yaml" version = "0.18.6" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" optional = false python-versions = ">=3.7" files = [ {file = "ruamel.yaml-0.18.6-py3-none-any.whl", hash = "sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636"}, {file = "ruamel.yaml-0.18.6.tar.gz", hash = "sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b"}, ] [package.dependencies] "ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\""} [package.extras] docs = ["mercurial (>5.7)", "ryd"] jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] [[package]] name = "ruamel-yaml-clib" version = "0.2.12" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" optional = false python-versions = ">=3.9" files = [ {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:fc4b630cd3fa2cf7fce38afa91d7cfe844a9f75d7f0f36393fa98815e911d987"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bc5f1e1c28e966d61d2519f2a3d451ba989f9ea0f2307de7bc45baa526de9e45"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a0e060aace4c24dcaf71023bbd7d42674e3b230f7e7b97317baf1e953e5b519"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2f1c3765db32be59d18ab3953f43ab62a761327aafc1594a2a1fbe038b8b8a7"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d85252669dc32f98ebcd5d36768f5d4faeaeaa2d655ac0473be490ecdae3c285"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e143ada795c341b56de9418c58d028989093ee611aa27ffb9b7f609c00d813ed"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win32.whl", hash = "sha256:beffaed67936fbbeffd10966a4eb53c402fafd3d6833770516bf7314bc6ffa12"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win_amd64.whl", hash = "sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b"}, {file = "ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f"}, ] [[package]] name = "ruff" version = "0.8.4" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ {file = "ruff-0.8.4-py3-none-linux_armv6l.whl", hash = "sha256:58072f0c06080276804c6a4e21a9045a706584a958e644353603d36ca1eb8a60"}, {file = "ruff-0.8.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ffb60904651c00a1e0b8df594591770018a0f04587f7deeb3838344fe3adabac"}, {file = "ruff-0.8.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:6ddf5d654ac0d44389f6bf05cee4caeefc3132a64b58ea46738111d687352296"}, {file = "ruff-0.8.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e248b1f0fa2749edd3350a2a342b67b43a2627434c059a063418e3d375cfe643"}, {file = "ruff-0.8.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf197b98ed86e417412ee3b6c893f44c8864f816451441483253d5ff22c0e81e"}, {file = "ruff-0.8.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c41319b85faa3aadd4d30cb1cffdd9ac6b89704ff79f7664b853785b48eccdf3"}, {file = "ruff-0.8.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9f8402b7c4f96463f135e936d9ab77b65711fcd5d72e5d67597b543bbb43cf3f"}, {file = "ruff-0.8.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4e56b3baa9c23d324ead112a4fdf20db9a3f8f29eeabff1355114dd96014604"}, {file = "ruff-0.8.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:736272574e97157f7edbbb43b1d046125fce9e7d8d583d5d65d0c9bf2c15addf"}, {file = "ruff-0.8.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fe710ab6061592521f902fca7ebcb9fabd27bc7c57c764298b1c1f15fff720"}, {file = "ruff-0.8.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:13e9ec6d6b55f6da412d59953d65d66e760d583dd3c1c72bf1f26435b5bfdbae"}, {file = "ruff-0.8.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:97d9aefef725348ad77d6db98b726cfdb075a40b936c7984088804dfd38268a7"}, {file = "ruff-0.8.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ab78e33325a6f5374e04c2ab924a3367d69a0da36f8c9cb6b894a62017506111"}, {file = "ruff-0.8.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:8ef06f66f4a05c3ddbc9121a8b0cecccd92c5bf3dd43b5472ffe40b8ca10f0f8"}, {file = "ruff-0.8.4-py3-none-win32.whl", hash = "sha256:552fb6d861320958ca5e15f28b20a3d071aa83b93caee33a87b471f99a6c0835"}, {file = "ruff-0.8.4-py3-none-win_amd64.whl", hash = "sha256:f21a1143776f8656d7f364bd264a9d60f01b7f52243fbe90e7670c0dfe0cf65d"}, {file = "ruff-0.8.4-py3-none-win_arm64.whl", hash = "sha256:9183dd615d8df50defa8b1d9a074053891ba39025cf5ae88e8bcb52edcc4bf08"}, {file = "ruff-0.8.4.tar.gz", hash = "sha256:0d5f89f254836799af1615798caa5f80b7f935d7a670fad66c5007928e57ace8"}, ] [[package]] name = "safety" version = "3.2.14" description = "Checks installed dependencies for known vulnerabilities and licenses." optional = false python-versions = ">=3.8" files = [ {file = "safety-3.2.14-py3-none-any.whl", hash = "sha256:23ceeb06038ff65607c7f1311bffa3e92b029148b367b360ad8287d9f3395194"}, {file = "safety-3.2.14.tar.gz", hash = "sha256:7a45d88b1903c5b7c370eaeb6ca131a52f147e0b8a0b302265f82824ef92adc7"}, ] [package.dependencies] Authlib = ">=1.2.0" Click = ">=8.0.2" dparse = ">=0.6.4" filelock = ">=3.16.1,<3.17.0" jinja2 = ">=3.1.0" marshmallow = ">=3.15.0" packaging = ">=21.0" psutil = ">=6.1.0,<6.2.0" pydantic = ">=2.6.0,<2.10.0" requests = "*" rich = "*" "ruamel.yaml" = ">=0.17.21" safety_schemas = "0.0.10" setuptools = ">=65.5.1" typer = ">=0.12.1" typing-extensions = ">=4.7.1" urllib3 = ">=1.26.5" [package.extras] github = ["pygithub (>=1.43.3)"] gitlab = ["python-gitlab (>=1.3.0)"] spdx = ["spdx-tools (>=0.8.2)"] [[package]] name = "safety-schemas" version = "0.0.10" description = "Schemas for Safety tools" optional = false python-versions = ">=3.7" files = [ {file = "safety_schemas-0.0.10-py3-none-any.whl", hash = "sha256:83978c14fcf598f00a6d98e70450e635d3deb33b3abbb5a886004ade7ca84b7f"}, {file = "safety_schemas-0.0.10.tar.gz", hash = "sha256:5ec83bb19e17003748d2a4b11e43e1f2b4471c9434329e9a0d80d1069966b96c"}, ] [package.dependencies] dparse = ">=0.6.4" packaging = ">=21.0" pydantic = ">=2.6.0,<2.10.0" ruamel-yaml = ">=0.17.21" typing-extensions = ">=4.7.1" [[package]] name = "setuptools" version = "75.6.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.9" files = [ {file = "setuptools-75.6.0-py3-none-any.whl", hash = "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d"}, {file = "setuptools-75.6.0.tar.gz", hash = "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6"}, ] [package.extras] check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.7.0)"] core = ["importlib_metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (>=1.12,<1.14)", "pytest-mypy"] [[package]] name = "shellingham" version = "1.5.4" description = "Tool to Detect Surrounding Shell" optional = false python-versions = ">=3.7" files = [ {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, ] [[package]] name = "syrupy" version = "4.8.0" description = "Pytest Snapshot Test Utility" optional = false python-versions = ">=3.8.1" files = [ {file = "syrupy-4.8.0-py3-none-any.whl", hash = "sha256:544f4ec6306f4b1c460fdab48fd60b2c7fe54a6c0a8243aeea15f9ad9c638c3f"}, {file = "syrupy-4.8.0.tar.gz", hash = "sha256:648f0e9303aaa8387c8365d7314784c09a6bab0a407455c6a01d6a4f5c6a8ede"}, ] [package.dependencies] pytest = ">=7.0.0,<9.0.0" [[package]] name = "tomlkit" version = "0.13.2" description = "Style preserving TOML library" optional = false python-versions = ">=3.8" files = [ {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, ] [[package]] name = "typer" version = "0.15.1" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." optional = false python-versions = ">=3.7" files = [ {file = "typer-0.15.1-py3-none-any.whl", hash = "sha256:7994fb7b8155b64d3402518560648446072864beefd44aa2dc36972a5972e847"}, {file = "typer-0.15.1.tar.gz", hash = "sha256:a0588c0a7fa68a1978a069818657778f86abe6ff5ea6abf472f940a08bfe4f0a"}, ] [package.dependencies] click = ">=8.0.0" rich = ">=10.11.0" shellingham = ">=1.3.0" typing-extensions = ">=3.7.4.3" [[package]] name = "typing-extensions" version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] name = "urllib3" version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" files = [ {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" version = "20.28.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" files = [ {file = "virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0"}, {file = "virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa"}, ] [package.dependencies] distlib = ">=0.3.7,<1" filelock = ">=3.12.2,<4" platformdirs = ">=3.9.1,<5" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] name = "yamllint" version = "1.35.1" description = "A linter for YAML files." optional = false python-versions = ">=3.8" files = [ {file = "yamllint-1.35.1-py3-none-any.whl", hash = "sha256:2e16e504bb129ff515b37823b472750b36b6de07963bd74b307341ef5ad8bdc3"}, {file = "yamllint-1.35.1.tar.gz", hash = "sha256:7a003809f88324fd2c877734f2d575ee7881dd9043360657cc8049c809eba6cd"}, ] [package.dependencies] pathspec = ">=0.5.3" pyyaml = "*" [package.extras] dev = ["doc8", "flake8", "flake8-import-order", "rstcheck[sphinx]", "sphinx"] [[package]] name = "yarl" version = "1.18.3" description = "Yet another URL library" optional = false python-versions = ">=3.9" files = [ {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34"}, {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7"}, {file = "yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed"}, {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde"}, {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b"}, {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5"}, {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc"}, {file = "yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd"}, {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990"}, {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db"}, {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62"}, {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760"}, {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b"}, {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690"}, {file = "yarl-1.18.3-cp310-cp310-win32.whl", hash = "sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6"}, {file = "yarl-1.18.3-cp310-cp310-win_amd64.whl", hash = "sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8"}, {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069"}, {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193"}, {file = "yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889"}, {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8"}, {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca"}, {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8"}, {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae"}, {file = "yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3"}, {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb"}, {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e"}, {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59"}, {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d"}, {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e"}, {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a"}, {file = "yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1"}, {file = "yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5"}, {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50"}, {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576"}, {file = "yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640"}, {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2"}, {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75"}, {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512"}, {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba"}, {file = "yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb"}, {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272"}, {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6"}, {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e"}, {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb"}, {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393"}, {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285"}, {file = "yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2"}, {file = "yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477"}, {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb"}, {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa"}, {file = "yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782"}, {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0"}, {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482"}, {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186"}, {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58"}, {file = "yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53"}, {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2"}, {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8"}, {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1"}, {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a"}, {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10"}, {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8"}, {file = "yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d"}, {file = "yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c"}, {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:61e5e68cb65ac8f547f6b5ef933f510134a6bf31bb178be428994b0cb46c2a04"}, {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe57328fbc1bfd0bd0514470ac692630f3901c0ee39052ae47acd1d90a436719"}, {file = "yarl-1.18.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a440a2a624683108a1b454705ecd7afc1c3438a08e890a1513d468671d90a04e"}, {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c7907c8548bcd6ab860e5f513e727c53b4a714f459b084f6580b49fa1b9cee"}, {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4f6450109834af88cb4cc5ecddfc5380ebb9c228695afc11915a0bf82116789"}, {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9ca04806f3be0ac6d558fffc2fdf8fcef767e0489d2684a21912cc4ed0cd1b8"}, {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77a6e85b90a7641d2e07184df5557132a337f136250caafc9ccaa4a2a998ca2c"}, {file = "yarl-1.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6333c5a377c8e2f5fae35e7b8f145c617b02c939d04110c76f29ee3676b5f9a5"}, {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0b3c92fa08759dbf12b3a59579a4096ba9af8dd344d9a813fc7f5070d86bbab1"}, {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ac515b860c36becb81bb84b667466885096b5fc85596948548b667da3bf9f24"}, {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:045b8482ce9483ada4f3f23b3774f4e1bf4f23a2d5c912ed5170f68efb053318"}, {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:a4bb030cf46a434ec0225bddbebd4b89e6471814ca851abb8696170adb163985"}, {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:54d6921f07555713b9300bee9c50fb46e57e2e639027089b1d795ecd9f7fa910"}, {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1d407181cfa6e70077df3377938c08012d18893f9f20e92f7d2f314a437c30b1"}, {file = "yarl-1.18.3-cp39-cp39-win32.whl", hash = "sha256:ac36703a585e0929b032fbaab0707b75dc12703766d0b53486eabd5139ebadd5"}, {file = "yarl-1.18.3-cp39-cp39-win_amd64.whl", hash = "sha256:ba87babd629f8af77f557b61e49e7c7cac36f22f871156b91e10a6e9d4f829e9"}, {file = "yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b"}, {file = "yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1"}, ] [package.dependencies] idna = ">=2.0" multidict = ">=4.0" propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.11" content-hash = "c4e1913612e8cc0d98fc77925e0a6a795e5805e153bb3d676300c9bfe0b0e049" joostlek-python-mealie-f3a7029/pyproject.toml000066400000000000000000000073771473452740400214160ustar00rootroot00000000000000[tool.poetry] name = "aiomealie" version = "0.1.0" description = "Asynchronous Python client for Mealie." authors = ["Joost Lekkerkerker "] maintainers = ["Joost Lekkerkerker "] license = "MIT" readme = "README.md" homepage = "https://github.com/joostlek/python-mealie" repository = "https://github.com/joostlek/python-mealie" documentation = "https://github.com/joostlek/python-mealie" keywords = ["mealie", "api", "async", "client"] classifiers = [ "Development Status :: 5 - Production/Stable", "Framework :: AsyncIO", "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules", ] packages = [ { include = "aiomealie", from = "src" }, ] [tool.poetry.dependencies] python = "^3.11" aiohttp = ">=3.0.0" yarl = ">=1.6.0" mashumaro = "^3.15" orjson = ">=3.9.0" awesomeversion = "^24.6.0" [tool.poetry.group.dev.dependencies] codespell = "2.3.0" covdefaults = "2.3.0" coverage = {version = "7.6.10", extras = ["toml"]} mypy = "1.14.0" pre-commit = "4.0.1" pre-commit-hooks = "5.0.0" pylint = "3.3.3" pytest = "8.3.4" pytest-asyncio = "0.25.0" pytest-cov = "6.0.0" ruff = "0.8.4" safety = "3.2.14" yamllint = "1.35.1" syrupy = "4.8.0" aioresponses = "0.7.7" [tool.poetry.urls] "Bug Tracker" = "https://github.com/joostlek/python-mealie/issues" Changelog = "https://github.com/joostlek/python-mealie/releases" [tool.coverage.report] show_missing = true fail_under = 50 [tool.coverage.run] plugins = ["covdefaults"] source = ["aiomealie"] [tool.mypy] # Specify the target platform details in config, so your developers are # free to run mypy on Windows, Linux, or macOS and get consistent # results. platform = "linux" python_version = "3.11" # show error messages from unrelated files follow_imports = "normal" # suppress errors about unsatisfied imports ignore_missing_imports = true # be strict check_untyped_defs = true disallow_any_generics = true disallow_incomplete_defs = true disallow_subclassing_any = true disallow_untyped_calls = true disallow_untyped_decorators = true disallow_untyped_defs = true no_implicit_optional = true strict_optional = true warn_incomplete_stub = true warn_no_return = true warn_redundant_casts = true warn_return_any = true warn_unused_configs = true warn_unused_ignores = true [tool.pylint.MASTER] ignore = [ "tests", ] [tool.pylint.BASIC] good-names = [ "_", "ex", "fp", "i", "id", "j", "k", "on", "Run", "T", ] [tool.pylint.DESIGN] max-attributes = 8 [tool.pylint."MESSAGES CONTROL"] disable = [ "duplicate-code", "format", "unsubscriptable-object", "too-many-instance-attributes", "too-many-arguments", "too-many-public-methods", "wrong-import-order", ] [tool.pylint.SIMILARITIES] ignore-imports = true [tool.pylint.FORMAT] max-line-length = 88 [tool.pytest.ini_options] addopts = "--cov" asyncio_mode = "auto" [tool.lint.ruff] ignore = [ "ANN101", # Self... explanatory "ANN102", # cls... just as useless "ANN401", # Opinioated warning on disallowing dynamically typed expressions "D203", # Conflicts with other rules "D213", # Conflicts with other rules "D417", # False positives in some occasions "PLR2004", # Just annoying, not really useful "PLR0913", # Too many arguments ] select = ["ALL"] [tool.ruff.lint.flake8-pytest-style] fixture-parentheses = false mark-parentheses = false [tool.ruff.lint.isort] known-first-party = ["aiomealie"] force-sort-within-sections = true split-on-trailing-comma = false combine-as-imports = true [tool.ruff.lint.mccabe] max-complexity = 25 [build-system] build-backend = "poetry.core.masonry.api" requires = ["poetry-core>=1.0.0"] joostlek-python-mealie-f3a7029/sonar-project.properties000066400000000000000000000011001473452740400233600ustar00rootroot00000000000000sonar.projectKey=joostlek_python-mealie sonar.organization=joostlek-github sonar.projectName=Asynchronous Python client for Mealie sonar.projectVersion=1.0 sonar.links.homepage=https://github.com/joostlek/python-mealie sonar.links.ci=https://github.com/joostlek/python-mealie/actions sonar.links.issue=https://github.com/joostlek/python-mealie/issues sonar.links.scm=https://github.com/joostlek/python-mealie/tree/main sonar.language=py sonar.sourceEncoding=UTF-8 sonar.sources=src sonar.tests=tests sonar.python.version=3.11 sonar.python.coverage.reportPaths=coverage.xml joostlek-python-mealie-f3a7029/src/000077500000000000000000000000001473452740400172535ustar00rootroot00000000000000joostlek-python-mealie-f3a7029/src/aiomealie/000077500000000000000000000000001473452740400212005ustar00rootroot00000000000000joostlek-python-mealie-f3a7029/src/aiomealie/__init__.py000066400000000000000000000023471473452740400233170ustar00rootroot00000000000000"""Asynchronous Python client for Mealie.""" from aiomealie.exceptions import ( MealieConnectionError, MealieError, MealieAuthenticationError, MealieValidationError, MealieBadRequestError, MealieNotFoundError, ) from aiomealie.mealie import MealieClient from aiomealie.models import ( About, StartupInfo, GroupSummary, Theme, BaseRecipe, RecipesResponse, Mealplan, MealplanResponse, MealplanEntryType, MutateShoppingItem, ShoppingList, ShoppingListsResponse, ShoppingItem, ShoppingItemsResponse, UserInfo, Recipe, Instruction, Ingredient, Tag, Statistics, ) __all__ = [ "About", "MealieConnectionError", "MealieError", "MealieAuthenticationError", "MealieBadRequestError", "MealieNotFoundError", "MealieValidationError", "MealieClient", "StartupInfo", "GroupSummary", "Theme", "BaseRecipe", "Recipe", "Instruction", "Ingredient", "Tag", "RecipesResponse", "Mealplan", "MealplanResponse", "MealplanEntryType", "ShoppingItem", "Statistics", "MutateShoppingItem", "ShoppingItemsResponse", "ShoppingList", "ShoppingListsResponse", "UserInfo", ] joostlek-python-mealie-f3a7029/src/aiomealie/exceptions.py000066400000000000000000000010171473452740400237320ustar00rootroot00000000000000"""Asynchronous Python client for Mealie.""" class MealieError(Exception): """Generic exception.""" class MealieConnectionError(MealieError): """Mealie connection exception.""" class MealieAuthenticationError(MealieError): """Mealie authentication exception.""" class MealieValidationError(MealieError): """Mealie validation exception.""" class MealieNotFoundError(MealieError): """Mealie not found exception.""" class MealieBadRequestError(MealieError): """Mealie bad request exception.""" joostlek-python-mealie-f3a7029/src/aiomealie/mealie.py000066400000000000000000000266731473452740400230240ustar00rootroot00000000000000"""Homeassistant Client.""" from __future__ import annotations import asyncio import json from awesomeversion import AwesomeVersion from dataclasses import dataclass from importlib import metadata from typing import TYPE_CHECKING, Any, Self from aiohttp import ClientSession, ClientConnectionError from aiohttp.hdrs import METH_GET, METH_POST, METH_PUT, METH_DELETE from mashumaro.codecs.orjson import ORJSONDecoder from yarl import URL from aiomealie.exceptions import ( MealieConnectionError, MealieError, MealieAuthenticationError, MealieValidationError, MealieNotFoundError, MealieBadRequestError, ) from aiomealie.models import ( About, GroupSummary, Mealplan, MealplanResponse, OrderDirection, RecipesResponse, ShoppingListsResponse, MutateShoppingItem, ShoppingItemsOrderBy, ShoppingItemsResponse, StartupInfo, Theme, UserInfo, Recipe, Statistics, MealplanEntryType, ) if TYPE_CHECKING: from datetime import date VERSION = metadata.version(__package__) @dataclass class MealieClient: """Main class for handling connections with Mealie.""" api_host: str token: str | None = None session: ClientSession | None = None request_timeout: int = 10 _close_session: bool = False household_support: bool | None = None _version: str | None = None async def _request( self, method: str, uri: str, *, data: dict[str, Any] | None = None, params: dict[str, Any] | None = None, ) -> str: """Handle a request to Mealie.""" url = URL(self.api_host).joinpath(uri) headers = { "User-Agent": f"AioMealie/{VERSION}", "Accept": "application/json, text/plain, */*", } if self.token: headers["Authorization"] = f"Bearer {self.token}" if self.session is None: self.session = ClientSession() self._close_session = True try: async with asyncio.timeout(self.request_timeout): response = await self.session.request( method, url, headers=headers, params=params, json=data ) except asyncio.TimeoutError as exception: msg = "Timeout occurred while connecting to Mealie" raise MealieConnectionError(msg) from exception except ClientConnectionError as exception: msg = "Client connection error while connecting to Mealie" raise MealieConnectionError(msg) from exception if response.status == 400: text = await response.text() msg = "Bad request to Mealie" raise MealieBadRequestError( msg, {"response": text}, ) if response.status == 401: msg = "Unauthorized access to Mealie" raise MealieAuthenticationError(msg) if response.status == 422: text = await response.text() msg = "Mealie validation error" raise MealieValidationError( msg, {"response": text}, ) if response.status == 404: text = await response.text() msg = "Object not found in Mealie" raise MealieNotFoundError( msg, {"response": text}, ) content_type = response.headers.get("Content-Type", "") if "application/json" not in content_type: text = await response.text() msg = "Unexpected response from Mealie" raise MealieError( msg, {"Content-Type": content_type, "response": text}, ) return await response.text() async def _get(self, uri: str, params: dict[str, Any] | None = None) -> str: """Handle a GET request to Mealie.""" return await self._request(METH_GET, uri, params=params) async def _post( self, uri: str, data: dict[str, Any] | None = None, params: dict[str, Any] | None = None, ) -> str: """Handle a POST request to Mealie.""" return await self._request(METH_POST, uri, data=data, params=params) async def _put( self, uri: str, data: dict[str, Any] | None = None, params: dict[str, Any] | None = None, ) -> str: """Handle a PUT request to Mealie.""" return await self._request(METH_PUT, uri, data=data, params=params) async def _delete( self, uri: str, data: dict[str, Any] | None = None, params: dict[str, Any] | None = None, ) -> str: """Handle a DELETE request to Mealie.""" return await self._request(METH_DELETE, uri, data=data, params=params) async def define_household_support(self) -> bool: """Check whether households are supported.""" try: await self._get("api/households/mealplans/today") except MealieError: self.household_support = False else: self.household_support = True return self.household_support @property async def version(self) -> str: """Return the version, retrieve from get_about if not stored.""" if not self._version: about = await self.get_about() self._version = about.version return self._version def _versioned_path(self, path_end: str) -> str: """Return the path with a prefix based on household support detected.""" if self.household_support: return "api/households/" + path_end return "api/groups/" + path_end async def get_startup_info(self) -> StartupInfo: """Get startup info.""" response = await self._get("api/app/about/startup-info") return StartupInfo.from_json(response) async def get_about(self) -> About: """Get about info.""" response = await self._get("api/app/about") return About.from_json(response) async def get_user_info(self) -> UserInfo: """Get user info.""" response = await self._get("api/users/self") return UserInfo.from_json(response) async def get_groups_self(self) -> GroupSummary: """Get groups self.""" response = await self._get("api/groups/self") return GroupSummary.from_json(response) async def get_theme(self) -> Theme: """Get theme.""" response = await self._get("api/app/about/theme") return Theme.from_json(response) async def get_recipes(self) -> RecipesResponse: """Get recipes.""" response = await self._get("api/recipes") return RecipesResponse.from_json(response) async def get_recipe(self, recipe_id_or_slug: str) -> Recipe: """Get recipe.""" response = await self._get(f"api/recipes/{recipe_id_or_slug}") return Recipe.from_json(response) async def import_recipe(self, url: str, include_tags: bool = False) -> Recipe: """Import a recipe.""" data = {"url": url, "include_tags": include_tags} version = AwesomeVersion(self._version) if version.valid and version < AwesomeVersion("2.0.0"): mealie_uri = "api/recipes/create-url" else: mealie_uri = "api/recipes/create/url" response = await self._post(mealie_uri, data) return await self.get_recipe(json.loads(response)) async def get_mealplan_today(self) -> list[Mealplan]: """Get mealplan.""" response = await self._get(self._versioned_path("mealplans/today")) return ORJSONDecoder(list[Mealplan]).decode(response) async def get_mealplans( self, start_date: date | None = None, end_date: date | None = None, ) -> MealplanResponse: """Get mealplans.""" params: dict[str, Any] = {} if start_date: params["start_date"] = start_date.isoformat() if end_date: params["end_date"] = end_date.isoformat() params["perPage"] = -1 response = await self._get(self._versioned_path("mealplans"), params) return MealplanResponse.from_json(response) async def get_shopping_lists(self) -> ShoppingListsResponse: """Get shopping lists.""" params: dict[str, Any] = {} params["perPage"] = -1 response = await self._get(self._versioned_path("shopping/lists"), params) return ShoppingListsResponse.from_json(response) async def get_shopping_items( self, shopping_list_id: str, ) -> ShoppingItemsResponse: """Get shopping items.""" params: dict[str, Any] = {} params["queryFilter"] = f"shoppingListId={shopping_list_id}" params["orderBy"] = ShoppingItemsOrderBy.POSITION params["orderDirection"] = OrderDirection.ASCENDING params["perPage"] = -1 response = await self._get(self._versioned_path("shopping/items"), params) return ShoppingItemsResponse.from_json(response) async def add_shopping_item( self, item: MutateShoppingItem, ) -> None: """Add a shopping item.""" await self._post( self._versioned_path("shopping/items"), data=item.to_dict(omit_none=True) ) async def update_shopping_item( self, item_id: str, item: MutateShoppingItem ) -> None: """Update a shopping item.""" await self._put( f"{self._versioned_path('shopping/items')}/{item_id}", data=item.to_dict(omit_none=True), ) async def delete_shopping_item(self, item_id: str) -> None: """Delete shopping item.""" await self._delete( f"{self._versioned_path('shopping/items')}/{item_id}", ) async def get_statistics(self) -> Statistics: """Get statistics.""" response = await self._get(self._versioned_path("statistics")) return Statistics.from_json(response) async def random_mealplan( self, at: date, entry_type: MealplanEntryType ) -> Mealplan: """Set a random mealplan for a specific date.""" response = await self._post( self._versioned_path("mealplans/random"), { "date": at.isoformat(), "entryType": entry_type.value, }, ) return Mealplan.from_json(response) async def set_mealplan( self, at: date, entry_type: MealplanEntryType, *, recipe_id: str | None = None, note_title: str | None = None, note_text: str | None = None, ) -> Mealplan: """Set a mealplan for a specific date.""" data = { "date": at.isoformat(), "entryType": entry_type.value, } if recipe_id: data["recipeId"] = recipe_id if note_title: data["title"] = note_title if note_text: data["text"] = note_text response = await self._post(self._versioned_path("mealplans"), data) return Mealplan.from_json(response) async def close(self) -> None: """Close open client session.""" if self.session and self._close_session: await self.session.close() async def __aenter__(self) -> Self: """Async enter. Returns ------- The MealieClient object. """ return self async def __aexit__(self, *_exc_info: object) -> None: """Async exit. Args: ---- _exc_info: Exec type. """ await self.close() joostlek-python-mealie-f3a7029/src/aiomealie/models.py000066400000000000000000000214111473452740400230340ustar00rootroot00000000000000"""Models for Mealie.""" from __future__ import annotations from dataclasses import dataclass, field from datetime import date from enum import StrEnum from mashumaro import DataClassDictMixin, field_options from mashumaro.mixins.orjson import DataClassORJSONMixin from mashumaro.types import SerializationStrategy from mashumaro.config import BaseConfig class OptionalStringSerializationStrategy(SerializationStrategy): """Serialization strategy for optional strings.""" def serialize(self, value: str | None) -> str | None: """Serialize optional string.""" return value def deserialize(self, value: str | None) -> str | None: """Deserialize optional string.""" if not value: return None val = value.strip() return val if val else None class OrderDirection(StrEnum): """OrderDirection type.""" ASCENDING = "asc" DESCENDING = "desc" class ShoppingItemsOrderBy(StrEnum): """ShoppingItemOrderBy type.""" POSITION = "position" @dataclass class About(DataClassORJSONMixin): """About model.""" version: str @dataclass class StartupInfo(DataClassORJSONMixin): """StartupInfo model.""" is_first_login: bool = field(metadata=field_options(alias="isFirstLogin")) @dataclass class GroupSummary(DataClassORJSONMixin): """GroupSummary model.""" name: str group_id: str = field(metadata=field_options(alias="id")) slug: str @dataclass class UserInfo(DataClassORJSONMixin): """UserInfo model.""" user_id: str = field(metadata=field_options(alias="id")) username: str email: str full_name: str = field(metadata=field_options(alias="fullName")) @dataclass class Theme(DataClassORJSONMixin): """Theme model.""" light_primary: str = field(metadata=field_options(alias="lightPrimary")) light_accent: str = field(metadata=field_options(alias="lightAccent")) light_secondary: str = field(metadata=field_options(alias="lightSecondary")) light_success: str = field(metadata=field_options(alias="lightSuccess")) light_info: str = field(metadata=field_options(alias="lightInfo")) light_warning: str = field(metadata=field_options(alias="lightWarning")) light_error: str = field(metadata=field_options(alias="lightError")) dark_primary: str = field(metadata=field_options(alias="darkPrimary")) dark_accent: str = field(metadata=field_options(alias="darkAccent")) dark_secondary: str = field(metadata=field_options(alias="darkSecondary")) dark_success: str = field(metadata=field_options(alias="darkSuccess")) dark_info: str = field(metadata=field_options(alias="darkInfo")) dark_warning: str = field(metadata=field_options(alias="darkWarning")) dark_error: str = field(metadata=field_options(alias="darkError")) @dataclass class Tag(DataClassORJSONMixin): """Tag model.""" tag_id: str = field(metadata=field_options(alias="id")) name: str slug: str @dataclass class Ingredient(DataClassORJSONMixin): """Ingredient model.""" quantity: float | None note: str unit: str | None is_food: bool = field(metadata=field_options(alias="isFood")) reference_id: str = field(metadata=field_options(alias="referenceId")) @dataclass class Instruction(DataClassORJSONMixin): """Instruction model.""" instruction_id: str = field(metadata=field_options(alias="id")) title: str | None = field( metadata=field_options( serialization_strategy=OptionalStringSerializationStrategy() ) ) text: str ingredient_references: list[str] = field( metadata=field_options(alias="ingredientReferences") ) @dataclass class BaseRecipe(DataClassORJSONMixin): """Recipe model.""" recipe_id: str = field(metadata=field_options(alias="id")) user_id: str = field(metadata=field_options(alias="userId")) group_id: str = field(metadata=field_options(alias="groupId")) name: str slug: str description: str image: str | None = None recipe_yield: str | None = field( default=None, metadata=field_options(alias="recipeYield") ) original_url: str | None = field( default=None, metadata=field_options(alias="orgURL") ) household_id: str | None = field( default=None, metadata=field_options( alias="householdId", serialization_strategy=OptionalStringSerializationStrategy(), ), ) @dataclass(kw_only=True) class Recipe(BaseRecipe): """Recipe model.""" tags: list[Tag] date_added: date = field(metadata=field_options(alias="dateAdded")) ingredients: list[Ingredient] = field( metadata=field_options(alias="recipeIngredient") ) instructions: list[Instruction] = field( metadata=field_options(alias="recipeInstructions") ) @dataclass class RecipesResponse(DataClassORJSONMixin): """RecipesResponse model.""" items: list[BaseRecipe] class MealplanEntryType(StrEnum): """MealplanEntryType model.""" DINNER = "dinner" LUNCH = "lunch" BREAKFAST = "breakfast" SIDE = "side" @dataclass class Mealplan(DataClassORJSONMixin): """Mealplan model.""" mealplan_id: int = field(metadata=field_options(alias="id")) user_id: str = field(metadata=field_options(alias="userId")) group_id: str = field(metadata=field_options(alias="groupId")) entry_type: MealplanEntryType = field(metadata=field_options(alias="entryType")) mealplan_date: date = field(metadata=field_options(alias="date")) title: str | None = field( metadata=field_options( serialization_strategy=OptionalStringSerializationStrategy() ) ) description: str | None = field( metadata=field_options( alias="text", serialization_strategy=OptionalStringSerializationStrategy() ) ) recipe: BaseRecipe | None household_id: str | None = field( default=None, metadata=field_options( alias="householdId", serialization_strategy=OptionalStringSerializationStrategy(), ), ) @dataclass class MealplanResponse(DataClassORJSONMixin): """MealplanResponse model.""" items: list[Mealplan] @dataclass class ShoppingList(DataClassORJSONMixin): """ShoppingList model.""" list_id: str = field(metadata=field_options(alias="id")) name: str @dataclass class ShoppingListsResponse(DataClassORJSONMixin): """ShoppingListsResponse model.""" items: list[ShoppingList] @dataclass class ShoppingItem(DataClassORJSONMixin): """ShoppingItem model.""" item_id: str = field(metadata=field_options(alias="id")) list_id: str = field(metadata=field_options(alias="shoppingListId")) note: str display: str checked: bool position: int is_food: bool = field(metadata=field_options(alias="isFood")) disable_amount: bool = field(metadata=field_options(alias="disableAmount")) quantity: float label_id: str | None = field(default=None, metadata=field_options(alias="labelId")) food_id: str | None = field(default=None, metadata=field_options(alias="foodId")) unit_id: str | None = field(default=None, metadata=field_options(alias="unitId")) @dataclass class MutateShoppingItem(DataClassDictMixin): """MutateShoppingItem model.""" item_id: str | None = field(default=None, metadata=field_options(alias="id")) list_id: str | None = field( default=None, metadata=field_options(alias="shoppingListId") ) note: str | None = None display: str | None = None checked: bool | None = None position: int | None = None is_food: bool | None = field(default=None, metadata=field_options(alias="isFood")) disable_amount: bool | None = field( default=None, metadata=field_options(alias="disableAmount") ) quantity: float | None = None label_id: str | None = field(default=None, metadata=field_options(alias="labelId")) food_id: str | None = field(default=None, metadata=field_options(alias="foodId")) unit_id: str | None = field(default=None, metadata=field_options(alias="unitId")) class Config(BaseConfig): # pylint: disable=too-few-public-methods """Mashumaro Config.""" serialize_by_alias = True code_generation_options = ["TO_DICT_ADD_OMIT_NONE_FLAG"] @dataclass class ShoppingItemsResponse(DataClassORJSONMixin): """ShoppingItemsResponse model.""" items: list[ShoppingItem] @dataclass class Statistics(DataClassORJSONMixin): """Statistics model.""" total_recipes: int = field(metadata=field_options(alias="totalRecipes")) total_users: int = field(metadata=field_options(alias="totalUsers")) total_categories: int = field(metadata=field_options(alias="totalCategories")) total_tags: int = field(metadata=field_options(alias="totalTags")) total_tools: int = field(metadata=field_options(alias="totalTools")) joostlek-python-mealie-f3a7029/src/aiomealie/py.typed000066400000000000000000000000001473452740400226650ustar00rootroot00000000000000joostlek-python-mealie-f3a7029/tests/000077500000000000000000000000001473452740400176265ustar00rootroot00000000000000joostlek-python-mealie-f3a7029/tests/__init__.py000066400000000000000000000003541473452740400217410ustar00rootroot00000000000000"""Asynchronous Python client for Mealie.""" from pathlib import Path def load_fixture(filename: str) -> str: """Load a fixture.""" path = Path(__package__) / "fixtures" / filename return path.read_text(encoding="utf-8") joostlek-python-mealie-f3a7029/tests/__snapshots__/000077500000000000000000000000001473452740400224445ustar00rootroot00000000000000joostlek-python-mealie-f3a7029/tests/__snapshots__/test_mealie.ambr000066400000000000000000002322561473452740400256140ustar00rootroot00000000000000# serializer version: 1 # name: test_about dict({ 'version': 'v2.4.1', }) # --- # name: test_groups_self dict({ 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'name': 'home', 'slug': 'home', }) # --- # name: test_importing_recipe dict({ 'date_added': datetime.date(2024, 6, 29), 'description': 'The worldโ€™s most famous cake, the Original Sacher-Torte, is the consequence of several lucky twists of fate. The first was in 1832, when the Austrian State Chancellor, Prince Klemens Wenzel von Metternich, tasked his kitchen staff with concocting an extraordinary dessert to impress his special guests. As fortune had it, the chef had fallen ill that evening, leaving the apprentice chef, the then-16-year-old Franz Sacher, to perform this culinary magic trick. Metternichโ€™s parting words to the talented teenager: โ€œI hope you wonโ€™t disgrace me tonight.โ€', 'group_id': '24477569-f6af-4b53-9e3f-6d04b0ca6916', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'SuPW', 'ingredients': list([ dict({ 'is_food': True, 'note': '130g dark couverture chocolate (min. 55% cocoa content)', 'quantity': 1.0, 'reference_id': 'a3adfe78-d157-44d8-98be-9c133e45bb4e', 'unit': None, }), dict({ 'is_food': True, 'note': '1 Vanilla Pod', 'quantity': 1.0, 'reference_id': '41d234d7-c040-48f9-91e6-f4636aebb77b', 'unit': None, }), dict({ 'is_food': True, 'note': '150g softened butter', 'quantity': 1.0, 'reference_id': 'f6ce06bf-8b02-43e6-8316-0dc3fb0da0fc', 'unit': None, }), dict({ 'is_food': True, 'note': '100g Icing sugar', 'quantity': 1.0, 'reference_id': 'f7fcd86e-b04b-4e07-b69c-513925811491', 'unit': None, }), dict({ 'is_food': True, 'note': '6 Eggs', 'quantity': 1.0, 'reference_id': 'a831fbc3-e2f5-452e-a745-450be8b4a130', 'unit': None, }), dict({ 'is_food': True, 'note': '100g Castor sugar', 'quantity': 1.0, 'reference_id': 'b5ee4bdc-0047-4de7-968b-f3360bbcb31e', 'unit': None, }), dict({ 'is_food': True, 'note': '140g Plain wheat flour', 'quantity': 1.0, 'reference_id': 'a67db09d-429c-4e77-919d-cfed3da675ad', 'unit': None, }), dict({ 'is_food': True, 'note': '200g apricot jam', 'quantity': 1.0, 'reference_id': '55479752-c062-4b25-aae3-2b210999d7b9', 'unit': None, }), dict({ 'is_food': True, 'note': '200g castor sugar', 'quantity': 1.0, 'reference_id': 'ff9cd404-24ec-4d38-b0aa-0120ce1df679', 'unit': None, }), dict({ 'is_food': True, 'note': '150g dark couverture chocolate (min. 55% cocoa content)', 'quantity': 1.0, 'reference_id': 'c7fca92e-971e-4728-a227-8b04783583ed', 'unit': None, }), dict({ 'is_food': True, 'note': 'Unsweetend whipped cream to garnish', 'quantity': 1.0, 'reference_id': 'ef023f23-7816-4871-87f6-4d29f9a283f7', 'unit': None, }), dict({ 'is_food': True, 'note': 'A little water', 'quantity': None, 'reference_id': '811328dc-a5d4-4104-80d2-e26fc52b5966', 'unit': None, }), ]), 'instructions': list([ dict({ 'ingredient_references': list([ ]), 'instruction_id': '2d558dbf-5361-4ef2-9d86-4161f5eb6146', 'text': 'Preheat oven to 170ยฐC. Line the base of a springform with baking paper, grease the sides, and dust with a little flour. Melt couverture over boiling water. Let cool slightly.', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': 'dbcc1c37-3cbf-4045-9902-8f7fd1e68f0a', 'text': 'Slit vanilla pod lengthwise and scrape out seeds. Using a hand mixer with whisks, beat the softened butter with the icing sugar and vanilla seeds until bubbles appear.', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '2265bd14-a691-40b1-9fe6-7b5dfeac8401', 'text': 'Separate the eggs. Whisk the egg yolks into the butter mixture one by one. Now gradually add melted couverture chocolate. Beat the egg whites with the castor sugar until stiff, then place on top of the butter and chocolate mixture. Sift the flour over the mixture, then fold in the flour and beaten egg whites.', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '0aade447-dfac-4aae-8e67-ac250ad13ae2', 'text': "Transfer the mixture to the springform, smooth the top, and bake in the oven (middle rack) for 10โ€“15 minutes, leaving the oven door a finger's width ajar. Then close the oven and bake for approximately 50 minutes. (The cake is done when it yields slightly to the touch.)", 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '5fdcb703-7103-468d-a65d-a92460b92eb3', 'text': 'Remove the cake from the oven and loosen the sides of the springform. Carefully tip the cake onto a cake rack lined with baking paper and let cool for approximately 20 minutes. Then pull off the baking paper, turn the cake over, and leave on rack to cool completely.', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '81474afc-b44e-49b3-bb67-5d7dab8f832a', 'text': 'Cut the cake in half horizontally. Warm the jam and stir until smooth. Brush the top of both cake halves with the jam and place one on top of the other. Brush the sides with the jam as well.', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '8fac8aee-0d3c-4f78-9ff8-56d20472e5f1', 'text': 'To make the glaze, put the castor sugar into a saucepan with 125 ml water and boil over high heat for approximately 5 minutes. Take the sugar syrup off the stove and leave to cool a little. Coarsely chop the couverture, gradually adding it to the syrup, and stir until it forms a thick liquid (see tip below).', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '7162e099-d651-4656-902a-a09a9b40c4e1', 'text': 'Pour all the lukewarm glaze liquid at once over the top of the cake and quickly spread using a palette knife. Leave the glaze to set for a few hours. Serve garnished with whipped cream.', 'title': None, }), ]), 'name': 'Original Sacher-Torte (2)', 'original_url': 'https://www.sacher.com/en/original-sacher-torte/recipe/', 'recipe_id': 'fada9582-709b-46aa-b384-d5952123ad93', 'recipe_yield': '4 servings', 'slug': 'original-sacher-torte-2', 'tags': list([ dict({ 'name': 'Sacher', 'slug': 'sacher', 'tag_id': '1b5789b9-3af6-412e-8c77-8a01caa0aac9', }), dict({ 'name': 'Cake', 'slug': 'cake', 'tag_id': '1cf17f96-58b5-4bd3-b1e8-1606a64b413d', }), dict({ 'name': 'Torte', 'slug': 'torte', 'tag_id': '3f5f0a3d-728f-440d-a6c7-5a68612e8c67', }), dict({ 'name': 'Sachertorte', 'slug': 'sachertorte', 'tag_id': '525f388d-6ee0-4ebe-91fc-dd320a7583f0', }), dict({ 'name': 'Sacher Torte Cake', 'slug': 'sacher-torte-cake', 'tag_id': '544a6e08-a899-4f63-9c72-bb2924df70cb', }), dict({ 'name': 'Sacher Torte', 'slug': 'sacher-torte', 'tag_id': '576c0a82-84ee-4e50-a14e-aa7a675b6352', }), dict({ 'name': 'Original Sachertorte', 'slug': 'original-sachertorte', 'tag_id': 'd530b8e4-275a-4093-804b-6d0de154c206', }), ]), 'user_id': 'bf1c62fe-4941-4332-9886-e54e88dbdba0', }) # --- # name: test_mealplan_today list([ dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': None, 'mealplan_date': datetime.date(2024, 1, 21), 'mealplan_id': 192, 'recipe': dict({ 'description': 'This is a wonderful option for picnics and grill outs when you are looking for a new take on potato salad. This simple side salad made with cauliflower, peas, and hard boiled eggs can be made the day ahead and chilled until party time!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'qLdv', 'name': 'Cauliflower Salad', 'original_url': 'https://www.allrecipes.com/recipe/142152/cauliflower-salad/', 'recipe_id': '40393996-417e-4487-a081-28608a668826', 'recipe_yield': '6 servings', 'slug': 'cauliflower-salad', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 21), 'mealplan_id': 206, 'recipe': dict({ 'description': 'Easy, cheesy, sausage pasta! In the whirlwind of mid-week mayhem, dinner doesnโ€™t have to be a chore โ€“ this 15-minute pasta, featuring HECKโ€™s Chicken Italia Chipolatas is your ticket to a delicious and hassle-free mid-week meal.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'BeNc', 'name': '15 Minute Cheesy Sausage & Veg Pasta', 'original_url': 'https://www.annabelkarmel.com/recipes/15-minute-cheesy-sausage-veg-pasta/', 'recipe_id': '872bb477-8d90-4025-98b0-07a9d0d9ce3a', 'recipe_yield': '', 'slug': '15-minute-cheesy-sausage-veg-pasta', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 21), 'mealplan_id': 207, 'recipe': dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'cake', 'original_url': None, 'recipe_id': '744a9831-fa56-4f61-9e12-fc5ebce58ed9', 'recipe_yield': None, 'slug': 'cake', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 21), 'mealplan_id': 208, 'recipe': dict({ 'description': 'Jazz up chicken breasts in this fruity, sweetly spiced sauce with pomegranate seeds, toasted almonds and tagine paste', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'lF4p', 'name': 'Pomegranate chicken with almond couscous', 'original_url': 'https://www.bbcgoodfood.com/recipes/pomegranate-chicken-almond-couscous', 'recipe_id': '27455eb2-31d3-4682-84ff-02a114bf293a', 'recipe_yield': '4 servings', 'slug': 'pomegranate-chicken-with-almond-couscous', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 21), 'mealplan_id': 209, 'recipe': dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'ALqz', 'name': 'Csirkรฉs รฉs tofus empanadas', 'original_url': 'https://streetkitchen.hu/street-kitchen/csirkes-es-tofus-empanadas/', 'recipe_id': '4233330e-6947-4042-90b7-44c405b70714', 'recipe_yield': '16 servings', 'slug': 'csirkes-es-tofus-empanadas', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 21), 'mealplan_id': 210, 'recipe': dict({ 'description': 'This All-American beef stew recipe includes tender beef coated in a rich, intense sauce and vegetables that bring complementary texture and flavor.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': '356X', 'name': 'All-American Beef Stew Recipe', 'original_url': 'https://www.seriouseats.com/all-american-beef-stew-recipe', 'recipe_id': '48f39d27-4b8e-4c14-bf36-4e1e6497e75e', 'recipe_yield': '6 servings', 'slug': 'all-american-beef-stew-recipe', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 21), 'mealplan_id': 223, 'recipe': dict({ 'description': 'Jazz up chicken breasts in this fruity, sweetly spiced sauce with pomegranate seeds, toasted almonds and tagine paste', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'lF4p', 'name': 'Pomegranate chicken with almond couscous', 'original_url': 'https://www.bbcgoodfood.com/recipes/pomegranate-chicken-almond-couscous', 'recipe_id': '27455eb2-31d3-4682-84ff-02a114bf293a', 'recipe_yield': '4 servings', 'slug': 'pomegranate-chicken-with-almond-couscous', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), ]) # --- # name: test_mealplans dict({ 'items': list([ dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 22), 'mealplan_id': 230, 'recipe': dict({ 'description': "Een traybake is eigenlijk altijd een goed idee. Deze zoete aardappel curry traybake dus ook. Waarom? Omdat je alleen maar wat groenten - en in dit geval kip - op een bakplaat (traybake dus) legt, hier wat kruiden aan toevoegt en deze in de oven schuift. Ideaal dus als je geen zin hebt om lang in de keuken te staan. Maar gewoon lekker op de bank wil ploffen om te wachten tot de oven klaar is. Joe! That\\'s what we like. Deze zoete aardappel curry traybake bevat behalve zoete aardappel en curry ook kikkererwten, kippendijfilet en bloemkoolroosjes. Je gebruikt yoghurt en limoen als een soort dressing. En je serveert deze heerlijke traybake met naanbrood. Je kunt natuurljk ook voor deze traybake met chipolataworstjes gaan. Wil je graag meer ovengerechten? Dan moet je eigenlijk even kijken naar onze Ovenbijbel. Onmisbaar in je keuken! We willen je deze zoete aardappelstamppot met prei ook niet onthouden. Megalekker bordje comfortfood als je \\'t ons vraagt.", 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'AiIo', 'name': 'Zoete aardappel curry traybake', 'original_url': 'https://chickslovefood.com/recept/zoete-aardappel-curry-traybake/', 'recipe_id': 'c5f00a93-71a2-4e48-900f-d9ad0bb9de93', 'recipe_yield': '2 servings', 'slug': 'zoete-aardappel-curry-traybake', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 23), 'mealplan_id': 229, 'recipe': dict({ 'description': 'The BEST Roast Chicken recipe is simple, budget friendly, and gives you a tender, mouth-watering chicken full of flavor! Served with roasted vegetables, this recipe is simple enough for any cook!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'JeQ2', 'name': 'Roast Chicken', 'original_url': 'https://tastesbetterfromscratch.com/roast-chicken/', 'recipe_id': '5b055066-d57d-4fd0-8dfd-a2c2f07b36f1', 'recipe_yield': '6 servings', 'slug': 'roast-chicken', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 23), 'mealplan_id': 226, 'recipe': dict({ 'description': 'Te explicamos paso a paso, de manera sencilla, la elaboraciรณn de la receta de pollo al curry con leche de coco en 10 minutos. Ingredientes, tiempo de...', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'INQz', 'name': 'Receta de pollo al curry en 10 minutos (con vรญdeo incluido)', 'original_url': 'https://www.directoalpaladar.com/recetas-de-carnes-y-aves/receta-de-pollo-al-curry-en-10-minutos', 'recipe_id': 'e360a0cc-18b0-4a84-a91b-8aa59e2451c9', 'recipe_yield': '2 servings', 'slug': 'receta-de-pollo-al-curry-en-10-minutos-con-video-incluido', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 23), 'mealplan_id': 224, 'recipe': dict({ 'description': 'bourguignon, oignon, carotte, bouquet garni, vin rouge, beurre, sel, poivre', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'nj5M', 'name': 'Boeuf bourguignon : la vraie recette (2)', 'original_url': 'https://www.marmiton.org/recettes/recette_boeuf-bourguignon_18889.aspx', 'recipe_id': '9c7b8aee-c93c-4b1b-ab48-2625d444743a', 'recipe_yield': '4 servings', 'slug': 'boeuf-bourguignon-la-vraie-recette-2', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 23), 'mealplan_id': 222, 'recipe': dict({ 'description': 'ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ ฮฑฯ€ฯŒ ฯ„ฮฟฮฝ ฮ†ฮบฮท ฮ ฮตฯ„ฯฮตฯ„ฮถฮฏฮบฮท. ฮฆฯ„ฮนฮฌฮพฯ„ฮต ฯ„ฮทฮฝ ฯ€ฮนฮฟ ฮตฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฮต ฮผฯŒฮฝฮฟ ฮญฮฝฮฑ ฯƒฮบฮตฯฮฟฯ‚.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'En9o', 'name': 'ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ (1)', 'original_url': 'https://akispetretzikis.com/recipe/7959/efkolh-makaronada-me-keftedakia-ston-fourno', 'recipe_id': 'f79f7e9d-4b58-4930-a586-2b127f16ee34', 'recipe_yield': '6 servings', 'slug': 'eukole-makaronada-me-kephtedakia-ston-phourno-1', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 23), 'mealplan_id': 221, 'recipe': dict({ 'description': 'Delicious Greek turkey meatballs with lemon orzo, tender veggies, and a creamy feta yogurt sauce. These healthy baked Greek turkey meatballs are filled with tons of wonderful herbs and make the perfect protein-packed weeknight meal!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'Kn62', 'name': 'Greek Turkey Meatballs with Lemon Orzo & Creamy Feta Yogurt Sauce', 'original_url': 'https://www.ambitiouskitchen.com/greek-turkey-meatballs/', 'recipe_id': '47595e4c-52bc-441d-b273-3edf4258806d', 'recipe_yield': '4 servings', 'slug': 'greek-turkey-meatballs-with-lemon-orzo-creamy-feta-yogurt-sauce', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 23), 'mealplan_id': 220, 'recipe': dict({ 'description': 'Einfacher Nudelauflauf mit Brokkoli, Sahnesauce und extra Kรคse. Dieses vegetarische 5 Zutaten Rezept ist super schnell gemacht und SO gut!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'nOPT', 'name': 'Einfacher Nudelauflauf mit Brokkoli', 'original_url': 'https://kochkarussell.com/einfacher-nudelauflauf-brokkoli/', 'recipe_id': '9d553779-607e-471b-acf3-84e6be27b159', 'recipe_yield': '4 servings', 'slug': 'einfacher-nudelauflauf-mit-brokkoli', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 23), 'mealplan_id': 219, 'recipe': dict({ 'description': 'This is a modified Pampered Chef recipe. You can use a trifle bowl or large glass punch/salad bowl to show it off. It is really easy to make and I never have any leftovers. Cook time includes chill time.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'ibL6', 'name': 'Pampered Chef Double Chocolate Mocha Trifle', 'original_url': 'https://www.food.com/recipe/pampered-chef-double-chocolate-mocha-trifle-74963', 'recipe_id': '92635fd0-f2dc-4e78-a6e4-ecd556ad361f', 'recipe_yield': '12 servings', 'slug': 'pampered-chef-double-chocolate-mocha-trifle', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 22), 'mealplan_id': 217, 'recipe': dict({ 'description': 'Cheeseburger Sliders are juicy, cheesy and beefy - everything we love about classic burgers! These sliders are quick and easy plus they are make-ahead and reheat really well.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'beGq', 'name': 'Cheeseburger Sliders (Easy, 30-min Recipe)', 'original_url': 'https://natashaskitchen.com/cheeseburger-sliders/', 'recipe_id': '8bdd3656-5e7e-45d3-a3c4-557390846a22', 'recipe_yield': '24 servings', 'slug': 'cheeseburger-sliders-easy-30-min-recipe', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 22), 'mealplan_id': 216, 'recipe': dict({ 'description': 'This All-American beef stew recipe includes tender beef coated in a rich, intense sauce and vegetables that bring complementary texture and flavor.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': '356X', 'name': 'All-American Beef Stew Recipe', 'original_url': 'https://www.seriouseats.com/all-american-beef-stew-recipe', 'recipe_id': '48f39d27-4b8e-4c14-bf36-4e1e6497e75e', 'recipe_yield': '6 servings', 'slug': 'all-american-beef-stew-recipe', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 23), 'mealplan_id': 212, 'recipe': dict({ 'description': 'This All-American beef stew recipe includes tender beef coated in a rich, intense sauce and vegetables that bring complementary texture and flavor.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': '356X', 'name': 'All-American Beef Stew Recipe', 'original_url': 'https://www.seriouseats.com/all-american-beef-stew-recipe', 'recipe_id': '48f39d27-4b8e-4c14-bf36-4e1e6497e75e', 'recipe_yield': '6 servings', 'slug': 'all-american-beef-stew-recipe', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 22), 'mealplan_id': 211, 'recipe': dict({ 'description': 'Einfacher Nudelauflauf mit Brokkoli, Sahnesauce und extra Kรคse. Dieses vegetarische 5 Zutaten Rezept ist super schnell gemacht und SO gut!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'nOPT', 'name': 'Einfacher Nudelauflauf mit Brokkoli', 'original_url': 'https://kochkarussell.com/einfacher-nudelauflauf-brokkoli/', 'recipe_id': '9d553779-607e-471b-acf3-84e6be27b159', 'recipe_yield': '4 servings', 'slug': 'einfacher-nudelauflauf-mit-brokkoli', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 23), 'mealplan_id': 196, 'recipe': dict({ 'description': 'Simple to prepare and ready in 25 minutes, this vegetarian miso noodle recipe can be eaten on its own or served as a side.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': '5G1v', 'name': 'Miso Udon Noodles with Spinach and Tofu', 'original_url': 'https://www.allrecipes.com/recipe/284039/miso-udon-noodles-with-spinach-and-tofu/', 'recipe_id': '25b814f2-d9bf-4df0-b40d-d2f2457b4317', 'recipe_yield': '2 servings', 'slug': 'miso-udon-noodles-with-spinach-and-tofu', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 22), 'mealplan_id': 195, 'recipe': dict({ 'description': 'Avis aux nostalgiques des annรฉes 1980, la mousse de saumon est de retour dans une prรฉsentation adaptรฉe au goรปt du jour. On utilise une technique sans faille : un saumon frais cuit au micro-ondes et mรฉlangรฉ au robot avec du fromage ร  la crรจme et de la crรจme sure. On obtient ainsi une texture onctueuse ร  tartiner, qui nโ€™a rien ร  envier aux prรฉparations gรฉlatineuses dโ€™antan !', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'rrNL', 'name': 'Mousse de saumon', 'original_url': 'https://www.ricardocuisine.com/recettes/8919-mousse-de-saumon', 'recipe_id': '55c88810-4cf1-4d86-ae50-63b15fd173fb', 'recipe_yield': '12 servings', 'slug': 'mousse-de-saumon', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Dineren met de boys', 'entry_type': , 'group_id': '3931df86-0679-4579-8c63-4bedc9ca9a85', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 6, 30), 'mealplan_id': 1, 'recipe': None, 'title': 'Aquavite', 'user_id': '6caa6e4d-521f-4ef4-9ed7-388bdd63f47d', }), ]), }) # --- # name: test_random_mealplan dict({ 'description': None, 'entry_type': , 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'mealplan_date': datetime.date(2024, 1, 21), 'mealplan_id': 192, 'recipe': dict({ 'description': 'This is a wonderful option for picnics and grill outs when you are looking for a new take on potato salad. This simple side salad made with cauliflower, peas, and hard boiled eggs can be made the day ahead and chilled until party time!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'qLdv', 'name': 'Cauliflower Salad', 'original_url': 'https://www.allrecipes.com/recipe/142152/cauliflower-salad/', 'recipe_id': '40393996-417e-4487-a081-28608a668826', 'recipe_yield': '6 servings', 'slug': 'cauliflower-salad', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), 'title': None, 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }) # --- # name: test_recipes dict({ 'items': list([ dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'tu6y', 'original_url': None, 'recipe_id': 'e82f5449-c33b-437c-b712-337587199264', 'recipe_yield': None, 'slug': 'tu6y', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ ฮฑฯ€ฯŒ ฯ„ฮฟฮฝ ฮ†ฮบฮท ฮ ฮตฯ„ฯฮตฯ„ฮถฮฏฮบฮท. ฮฆฯ„ฮนฮฌฮพฯ„ฮต ฯ„ฮทฮฝ ฯ€ฮนฮฟ ฮตฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฮต ฮผฯŒฮฝฮฟ ฮญฮฝฮฑ ฯƒฮบฮตฯฮฟฯ‚.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'En9o', 'name': 'ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ (1)', 'original_url': 'https://akispetretzikis.com/recipe/7959/efkolh-makaronada-me-keftedakia-ston-fourno', 'recipe_id': 'f79f7e9d-4b58-4930-a586-2b127f16ee34', 'recipe_yield': '6 servings', 'slug': 'eukole-makaronada-me-kephtedakia-ston-phourno-1', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Rรฉgalez vous avec ces patates douces cuites au four et lรฉgรจrement parfumรฉes au thym et au piment. Super bon avec un poulet rรดti par exemple.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'aAhk', 'name': 'Patates douces au four (1)', 'original_url': 'https://www.papillesetpupilles.fr/2018/10/patates-douces-au-four.html/', 'recipe_id': '90097c8b-9d80-468a-b497-73957ac0cd8b', 'recipe_yield': '', 'slug': 'patates-douces-au-four-1', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Rรฉgalez vous avec ces patates douces cuites au four et lรฉgรจrement parfumรฉes au thym et au piment. Super bon avec un poulet rรดti par exemple.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'kdhm', 'name': 'Sweet potatoes', 'original_url': 'https://www.papillesetpupilles.fr/2018/10/patates-douces-au-four.html/', 'recipe_id': '98845807-9365-41fd-acd1-35630b468c27', 'recipe_yield': '', 'slug': 'sweet-potatoes', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ ฮฑฯ€ฯŒ ฯ„ฮฟฮฝ ฮ†ฮบฮท ฮ ฮตฯ„ฯฮตฯ„ฮถฮฏฮบฮท. ฮฆฯ„ฮนฮฌฮพฯ„ฮต ฯ„ฮทฮฝ ฯ€ฮนฮฟ ฮตฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฮต ฮผฯŒฮฝฮฟ ฮญฮฝฮฑ ฯƒฮบฮตฯฮฟฯ‚.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'tNbG', 'name': 'ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ', 'original_url': 'https://akispetretzikis.com/recipe/7959/efkolh-makaronada-me-keftedakia-ston-fourno', 'recipe_id': '40c227e0-3c7e-41f7-866d-5de04eaecdd7', 'recipe_yield': '6 servings', 'slug': 'eukole-makaronada-me-kephtedakia-ston-phourno', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'bourguignon, oignon, carotte, bouquet garni, vin rouge, beurre, sel, poivre', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'nj5M', 'name': 'Boeuf bourguignon : la vraie recette (2)', 'original_url': 'https://www.marmiton.org/recettes/recette_boeuf-bourguignon_18889.aspx', 'recipe_id': '9c7b8aee-c93c-4b1b-ab48-2625d444743a', 'recipe_yield': '4 servings', 'slug': 'boeuf-bourguignon-la-vraie-recette-2', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'bourguignon, oignon, carotte, bouquet garni, vin rouge, beurre, sel, poivre', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'rbU7', 'name': 'Boeuf bourguignon : la vraie recette (1)', 'original_url': 'https://www.marmiton.org/recettes/recette_boeuf-bourguignon_18889.aspx', 'recipe_id': 'fc42c7d1-7b0f-4e04-b88a-dbd80b81540b', 'recipe_yield': '4 servings', 'slug': 'boeuf-bourguignon-la-vraie-recette-1', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Dieses einfache vegane Erdnussbutter-Schoko-Marmor-Bananenbrot Rezept enthรคlt kein ร–l und keinen raffiniernten Zucker, ist aber so fluffig, weich, saftig und lecker wie ein Kuchen! Zubereitet mit vielen gesunden Bananen, gelingt es auch glutenfrei und eignet sich perfekt zum Frรผhstรผck, als Dessert oder Snack fรผr Zwischendurch!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'JSp3', 'name': 'Veganes Marmor-Bananenbrot mit Erdnussbutter', 'original_url': 'https://biancazapatka.com/de/erdnussbutter-schoko-bananenbrot/', 'recipe_id': '89e63d72-7a51-4cef-b162-2e45035d0a91', 'recipe_yield': '14 servings', 'slug': 'veganes-marmor-bananenbrot-mit-erdnussbutter', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Es ist kein Geheimnis: Ich mag es gerne schnell und einfach. Und ich liebe Pasta! Deshalb habe ich mich vor ein paar Wochen auf die Suche nach der perfekten, schnellen TomatensoรŸe gemacht. Es muss da drauรŸen doch irgendein Rezept geben, das (fast) genauso schnell zuzubereiten ist, wie Miracoli und dabei aber das schรถne Gefรผhl hinterlรคsst, ...', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': '9QMh', 'name': 'Pasta mit Tomaten, Knoblauch und Basilikum - einfach (und) genial! - Kuechenchaotin', 'original_url': 'https://kuechenchaotin.de/pasta-mit-tomaten-knoblauch-basilikum/', 'recipe_id': 'eab64457-97ba-4d6c-871c-cb1c724ccb51', 'recipe_yield': '', 'slug': 'pasta-mit-tomaten-knoblauch-und-basilikum-einfach-und-genial-kuechenchaotin', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'test123', 'original_url': None, 'recipe_id': '12439e3d-3c1c-4dcc-9c6e-4afcea2a0542', 'recipe_yield': None, 'slug': 'test123', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'Bureeto', 'original_url': None, 'recipe_id': '6567f6ec-e410-49cb-a1a5-d08517184e78', 'recipe_yield': None, 'slug': 'bureeto', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'Subway Double Cookies', 'original_url': None, 'recipe_id': 'f7737d17-161c-4008-88d4-dd2616778cd0', 'recipe_yield': None, 'slug': 'subway-double-cookies', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'qwerty12345', 'original_url': None, 'recipe_id': '1904b717-4a8b-4de9-8909-56958875b5f4', 'recipe_yield': None, 'slug': 'qwerty12345', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Cheeseburger Sliders are juicy, cheesy and beefy - everything we love about classic burgers! These sliders are quick and easy plus they are make-ahead and reheat really well.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'beGq', 'name': 'Cheeseburger Sliders (Easy, 30-min Recipe)', 'original_url': 'https://natashaskitchen.com/cheeseburger-sliders/', 'recipe_id': '8bdd3656-5e7e-45d3-a3c4-557390846a22', 'recipe_yield': '24 servings', 'slug': 'cheeseburger-sliders-easy-30-min-recipe', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'meatloaf', 'original_url': None, 'recipe_id': '8a30d31d-aa14-411e-af0c-6b61a94f5291', 'recipe_yield': '4', 'slug': 'meatloaf', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': "Richtig rheinischer Sauerbraten - Rheinischer geht's nicht! รœber 536 Bewertungen und fรผr kรถstlich befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps!", 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'kCBh', 'name': 'Richtig rheinischer Sauerbraten', 'original_url': 'https://www.chefkoch.de/rezepte/937641199437984/Richtig-rheinischer-Sauerbraten.html', 'recipe_id': 'f2f7880b-1136-436f-91b7-129788d8c117', 'recipe_yield': '4 servings', 'slug': 'richtig-rheinischer-sauerbraten', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Orientalischer Gemรผse-Hรคhnchen Eintopf. รœber 164 Bewertungen und fรผr kรถstlich befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps! Jetzt entdecken und ausprobieren!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'kpBx', 'name': 'Orientalischer Gemรผse-Hรคhnchen Eintopf', 'original_url': 'https://www.chefkoch.de/rezepte/2307761368177614/Orientalischer-Gemuese-Haehnchen-Eintopf.html', 'recipe_id': 'cf634591-0f82-4254-8e00-2f7e8b0c9022', 'recipe_yield': '6 servings', 'slug': 'orientalischer-gemuse-hahnchen-eintopf', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'test 20240121', 'original_url': None, 'recipe_id': '05208856-d273-4cc9-bcfa-e0215d57108d', 'recipe_yield': '4', 'slug': 'test-20240121', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Zet in 20 minuten deze lekkere loempia bowl in elkaar. Makkelijk, snel en weer eens wat anders. Lekker met prei, sojasaus en kipgehakt.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'McEx', 'name': 'Loempia bowl', 'original_url': 'https://www.lekkerensimpel.com/loempia-bowl/', 'recipe_id': '145eeb05-781a-4eb0-a656-afa8bc8c0164', 'recipe_yield': '', 'slug': 'loempia-bowl', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': "Chocolate Mousse with Aquafaba, to make the fluffiest of mousses. Whip up this dessert in literally five minutes and chill in the fridge until you're ready to serve!", 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'bzqo', 'name': '5 Ingredient Chocolate Mousse', 'original_url': 'https://thehappypear.ie/aquafaba-chocolate-mousse/', 'recipe_id': '5c6532aa-ad84-424c-bc05-c32d50430fe4', 'recipe_yield': '6 servings', 'slug': '5-ingredient-chocolate-mousse', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Der perfekte Pfannkuchen - gelingt einfach immer - von Kindern geliebt und auch fรผr Kochneulinge super geeignet. รœber 2529 Bewertungen und fรผr vorzรผglich befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'KGK6', 'name': 'Der perfekte Pfannkuchen - gelingt einfach immer', 'original_url': 'https://www.chefkoch.de/rezepte/1208161226570428/Der-perfekte-Pfannkuchen-gelingt-einfach-immer.html', 'recipe_id': 'f2e684f2-49e0-45ee-90de-951344472f1c', 'recipe_yield': '4 servings', 'slug': 'der-perfekte-pfannkuchen-gelingt-einfach-immer', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Fรผr alle Liebhaber von Dinkel ist dieses Dinkel-Sauerteigbrot ein absolutes Muss. Aussen knusprig und innen herrlich feucht und grossporig.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'yNDq', 'name': 'Dinkel-Sauerteigbrot', 'original_url': 'https://www.besondersgut.ch/dinkel-sauerteigbrot/', 'recipe_id': 'cf239441-b75d-4dea-a48e-9d99b7cb5842', 'recipe_yield': '1', 'slug': 'dinkel-sauerteigbrot', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'test 234234', 'original_url': None, 'recipe_id': '2673eb90-6d78-4b95-af36-5db8c8a6da37', 'recipe_yield': None, 'slug': 'test-234234', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'test 243', 'original_url': None, 'recipe_id': '0a723c54-af53-40e9-a15f-c87aae5ac688', 'recipe_yield': None, 'slug': 'test-243', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Einfacher Nudelauflauf mit Brokkoli, Sahnesauce und extra Kรคse. Dieses vegetarische 5 Zutaten Rezept ist super schnell gemacht und SO gut!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'nOPT', 'name': 'Einfacher Nudelauflauf mit Brokkoli', 'original_url': 'https://kochkarussell.com/einfacher-nudelauflauf-brokkoli/', 'recipe_id': '9d553779-607e-471b-acf3-84e6be27b159', 'recipe_yield': '4 servings', 'slug': 'einfacher-nudelauflauf-mit-brokkoli', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': ''' Tarta cytrynowa z bezฤ… Lekko kwaล›na masa cytrynowa, ktรณra rรณwnowaลผy sล‚odycz bezy โ€“ jeล›li to brzmi jak ciasto, ktรณre chฤ™tnie zjesz na deser, wyprรณbuj nasz przepis! Tarta z bezฤ… i masฤ… cytrynowฤ… nawiฤ…zuje do kuchni francuskiej, znanej z wyล›mienitych quiche i tart. Tym razem proponujemy jฤ… w wersji na sล‚odko. Dla kogo? Lubisz ciasta o delikatnym, kruchym spodzie? Posmakuje ci tarta cytrynowa z bezฤ…. Przepis jest wprost stworzony dla miล‚oล›nikรณw lekko cierpkiego smaku cytrusรณw w wypiekach. Tarta cytrynowa z bezฤ… zdecydowanie nie jest mdล‚ym ciastem! Na jakฤ… okazjฤ™? Na rodzinnym stole, zamiast zwykล‚ego sernika lub ciasta czekoladowego, moลผe stanฤ…ฤ‡ wล‚aล›nie tarta cytrynowa z bezฤ…. Przepis ten skradnie serce twojej przyjaciรณล‚ki lub przyjaciela, ktรณrego zaprosisz na herbatฤ™ i ciasto. Naszym zdaniem ma teลผ duลผฤ… szansฤ™ staฤ‡ siฤ™ hitem urodzinowej imprezy, gdy pojawi siฤ™ tuลผ obok tortu. Tarta cytrynowa z bezฤ… smakuje doskonale w okresie ล›wiฤ…tecznym โ€“ upiecz jฤ… na Wielkanoc oprรณcz tradycyjnego mazurka i baby. Czy wiesz, ลผe? Zastanawiasz siฤ™, czy kupione kilka dni temu cytryny moลผesz przeznaczyฤ‡ do przepisu na tartฤ™? Jest wiele sposobรณw na przedล‚uลผenie ich ล›wieลผoล›ci. Niektรณrzy trzymajฤ… je w lodรณwce, w torebce zamykanej strunowo. Ciekawostka: im mocniej pachnie cytryna, tym kwaล›niejsza bฤ™dzie w smaku. Dla urozmaicenia: Martwisz siฤ™ o to, czy kaลผda warstwa tarty odpowiednio siฤ™ upiecze? Mamy na to sposรณb. Piecz jฤ… w piekarniku bez termoobiegu, ustawionym na grzanie gรณraโ€“dรณล‚. ''', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'vxuL', 'name': 'Tarta cytrynowa z bezฤ…', 'original_url': 'https://www.przepisy.pl/przepis/tarta-cytrynowa-z-beza', 'recipe_id': '9d3cb303-a996-4144-948a-36afaeeef554', 'recipe_yield': '8 servings', 'slug': 'tarta-cytrynowa-z-beza', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'Martins test Recipe', 'original_url': None, 'recipe_id': '77f05a49-e869-4048-aa62-0d8a1f5a8f1c', 'recipe_yield': None, 'slug': 'martins-test-recipe', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Muffinki czekoladowe to przepyszny i bardzo prosty w przygotowaniu mini deser pieczony w papilotkach. Przepis na najlepsze, bardzo wilgotne i puszyste muffinki czekoladowe polecam kaลผdemu miล‚oล›nikowi czekolady.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'xP1Q', 'name': 'Muffinki czekoladowe', 'original_url': 'https://aniagotuje.pl/przepis/muffinki-czekoladowe', 'recipe_id': '75a90207-9c10-4390-a265-c47a4b67fd69', 'recipe_yield': '12', 'slug': 'muffinki-czekoladowe', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'My Test Recipe', 'original_url': None, 'recipe_id': '4320ba72-377b-4657-8297-dce198f24cdf', 'recipe_yield': None, 'slug': 'my-test-recipe', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'My Test Receipe', 'original_url': None, 'recipe_id': '98dac844-31ee-426a-b16c-fb62a5dd2816', 'recipe_yield': None, 'slug': 'my-test-receipe', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Rรฉgalez vous avec ces patates douces cuites au four et lรฉgรจrement parfumรฉes au thym et au piment. Super bon avec un poulet rรดti par exemple.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'r1ck', 'name': 'Patates douces au four', 'original_url': 'https://www.papillesetpupilles.fr/2018/10/patates-douces-au-four.html/', 'recipe_id': 'c3c8f207-c704-415d-81b1-da9f032cf52f', 'recipe_yield': '', 'slug': 'patates-douces-au-four', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Follow these basic instructions for a thick, crisp, and chewy pizza crust at home. The recipe yields enough pizza dough for two 12-inch pizzas and you can freeze half of the dough for later. Close to 2 pounds of dough total.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'gD94', 'name': 'Easy Homemade Pizza Dough', 'original_url': 'https://sallysbakingaddiction.com/homemade-pizza-crust-recipe/', 'recipe_id': '1edb2f6e-133c-4be0-b516-3c23625a97ec', 'recipe_yield': '2 servings', 'slug': 'easy-homemade-pizza-dough', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'This All-American beef stew recipe includes tender beef coated in a rich, intense sauce and vegetables that bring complementary texture and flavor.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': '356X', 'name': 'All-American Beef Stew Recipe', 'original_url': 'https://www.seriouseats.com/all-american-beef-stew-recipe', 'recipe_id': '48f39d27-4b8e-4c14-bf36-4e1e6497e75e', 'recipe_yield': '6 servings', 'slug': 'all-american-beef-stew-recipe', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'This utterly faithful recipe perfectly recreates a New York City halal-cart classic: Chicken and Rice with White Sauce. The chicken is marinated with herbs, lemon, and spices; the rice golden; the sauce, as white and creamy as ever.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': '4Sys', 'name': "Serious Eats' Halal Cart-Style Chicken and Rice With White Sauce", 'original_url': 'https://www.seriouseats.com/serious-eats-halal-cart-style-chicken-and-rice-white-sauce-recipe', 'recipe_id': '6530ea6e-401e-4304-8a7a-12162ddf5b9c', 'recipe_yield': '4 servings', 'slug': 'serious-eats-halal-cart-style-chicken-and-rice-with-white-sauce', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Schnelle Kรคsespรคtzle. รœber 1201 Bewertungen und fรผr sehr gut befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps! Jetzt entdecken und ausprobieren!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': '8goY', 'name': 'Schnelle Kรคsespรคtzle', 'original_url': 'https://www.chefkoch.de/rezepte/1062121211526182/Schnelle-Kaesespaetzle.html', 'recipe_id': 'c496cf9c-1ece-448a-9d3f-ef772f078a4e', 'recipe_yield': '4 servings', 'slug': 'schnelle-kasespatzle', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'taco', 'original_url': None, 'recipe_id': '49aa6f42-6760-4adf-b6cd-59592da485c3', 'recipe_yield': None, 'slug': 'taco', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Har du inte provat denna trendiga pasta รคr det hรถg tid! Enkel och grรคddig vardagspasta med smak av tomat och chili och en hemlig ingrediens som ger denna rรคtt extra sting, nรคmligen vodka.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'z8BB', 'name': 'Vodkapasta', 'original_url': 'https://www.ica.se/recept/vodkapasta-729011/', 'recipe_id': '6402a253-2baa-460d-bf4f-b759bb655588', 'recipe_yield': '4 servings', 'slug': 'vodkapasta', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Har du inte provat denna trendiga pasta รคr det hรถg tid! Enkel och grรคddig vardagspasta med smak av tomat och chili och en hemlig ingrediens som ger denna rรคtt extra sting, nรคmligen vodka.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'Nqpz', 'name': 'Vodkapasta2', 'original_url': 'https://www.ica.se/recept/vodkapasta-729011/', 'recipe_id': '4f54e9e1-f21d-40ec-a135-91e633dfb733', 'recipe_yield': '4 servings', 'slug': 'vodkapasta2', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'Rub', 'original_url': None, 'recipe_id': 'e1a3edb0-49a0-49a3-83e3-95554e932670', 'recipe_yield': '1', 'slug': 'rub', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': "Tender and moist, these chocolate chip cookies were a HUGE hit in the Test Kitchen. They're like banana bread in a cookie form. Outside, there are crisp edges like a cookie. Inside, though, it's soft like banana bread. We opted to add chocolate chips and nuts. It's a classic flavor combination in banana bread and works just as well in these cookies.", 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': '03XS', 'name': 'Banana Bread Chocolate Chip Cookies', 'original_url': 'https://www.justapinch.com/recipes/dessert/cookies/banana-bread-chocolate-chip-cookies.html', 'recipe_id': '1a0f4e54-db5b-40f1-ab7e-166dab5f6523', 'recipe_yield': '', 'slug': 'banana-bread-chocolate-chip-cookies', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': "Hello friends, today I'm going to share with you how to make a delicious soup/bisque. A Cauliflower Bisques Recipe with Cheddar Cheese. One of my favorite soups to make when its cold outside. We will be continuing the soup collection so let me know what you think in the comments below!", 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'KuXV', 'name': 'Cauliflower Bisque Recipe with Cheddar Cheese', 'original_url': 'https://chefjeanpierre.com/recipes/soups/creamy-cauliflower-bisque/', 'recipe_id': '447acae6-3424-4c16-8c26-c09040ad8041', 'recipe_yield': '', 'slug': 'cauliflower-bisque-recipe-with-cheddar-cheese', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'Prova ', 'original_url': None, 'recipe_id': '864136a3-27b0-4f3b-a90f-486f42d6df7a', 'recipe_yield': '', 'slug': 'prova', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'pate au beurre (1)', 'original_url': None, 'recipe_id': 'c7ccf4c7-c5f4-4191-a79b-1a49d068f6a4', 'recipe_yield': None, 'slug': 'pate-au-beurre-1', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': '', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': None, 'name': 'pate au beurre', 'original_url': None, 'recipe_id': 'd01865c3-0f18-4e8d-84c0-c14c345fdf9c', 'recipe_yield': None, 'slug': 'pate-au-beurre', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Individual foolproof mason jar cheesecakes with strawberry compote and a Graham cracker crumble topping. Foolproof, simple, and delicious.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'tmwm', 'name': 'Sous Vide Cheesecake Recipe', 'original_url': 'https://saltpepperskillet.com/recipes/sous-vide-cheesecake/', 'recipe_id': '2cec2bb2-19b6-40b8-a36c-1a76ea29c517', 'recipe_yield': '4 servings', 'slug': 'sous-vide-cheesecake-recipe', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'This is a variation of the several cheese cake recipes that have been used for sous vide. These make a fabulous 4oz cheese cake for dessert. Garnish with a raspberry or blackberry and impress your family and friends. Theyโ€™ll keep great in the fridge for a week easily.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'xCYc', 'name': 'The Bomb Mini Cheesecakes', 'original_url': 'https://recipes.anovaculinary.com/recipe/the-bomb-cheesecakes', 'recipe_id': '8e0e4566-9caf-4c2e-a01c-dcead23db86b', 'recipe_yield': '10 servings', 'slug': 'the-bomb-mini-cheesecakes', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Tagliatelle al Salmone - wie beim Italiener. รœber 1568 Bewertungen und fรผr vorzรผglich befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'qzaN', 'name': 'Tagliatelle al Salmone', 'original_url': 'https://www.chefkoch.de/rezepte/2109501340136606/Tagliatelle-al-Salmone.html', 'recipe_id': 'a051eafd-9712-4aee-a8e5-0cd10a6772ee', 'recipe_yield': '4 servings', 'slug': 'tagliatelle-al-salmone', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Hier ist der Name Programm: Den "Tod durch Schokolade" mรผsst ihr zwar hoffentlich nicht erleiden, aber Chocoholics werden diesen Kuchen lieben!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'K9qP', 'name': 'Death by Chocolate', 'original_url': 'https://www.backenmachtgluecklich.de/rezepte/death-by-chocolate-kuchen.html', 'recipe_id': '093d51e9-0823-40ad-8e0e-a1d5790dd627', 'recipe_yield': '1 serving', 'slug': 'death-by-chocolate', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Palak Dal ist in Grunde genommen Spinat (Palak) mit Linsen oder anderen Hรผlsenfrรผchten (Dal) vom indischen Subkontinent. Es kommen noch Zwiebeln, Tomaten und einige indische Gewรผrze dazu. Damit ist das Palak Dal ein super einfaches und zugleich veganes indisches Rezept. Es schmeckt hervorragend mit Naan-Brot und etwas gewรผrztem Joghurt.', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'jKQ3', 'name': 'Palak Dal Rezept aus Indien', 'original_url': 'https://www.fernweh-koch.de/palak-dal-indischer-spinat-linsen-rezept/', 'recipe_id': '2d1f62ec-4200-4cfd-987e-c75755d7607c', 'recipe_yield': '4 servings', 'slug': 'palak-dal-rezept-aus-indien', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), dict({ 'description': 'Tortelline - รก la Romana. รœber 13 Bewertungen und fรผr vorzรผglich befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps! Jetzt entdecken und ausprobieren!', 'group_id': '0bf60b2e-ca89-42a9-94d4-8f67ca72b157', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'rkSn', 'name': 'Tortelline - รก la Romana', 'original_url': 'https://www.chefkoch.de/rezepte/74441028021809/Tortelline-a-la-Romana.html', 'recipe_id': '973dc36d-1661-49b4-ad2d-0b7191034fb3', 'recipe_yield': '4 servings', 'slug': 'tortelline-a-la-romana', 'user_id': '1ce8b5fe-04e8-4b80-aab1-d92c94685c6d', }), ]), }) # --- # name: test_retrieving_recipe dict({ 'date_added': datetime.date(2024, 6, 29), 'description': 'The worldโ€™s most famous cake, the Original Sacher-Torte, is the consequence of several lucky twists of fate. The first was in 1832, when the Austrian State Chancellor, Prince Klemens Wenzel von Metternich, tasked his kitchen staff with concocting an extraordinary dessert to impress his special guests. As fortune had it, the chef had fallen ill that evening, leaving the apprentice chef, the then-16-year-old Franz Sacher, to perform this culinary magic trick. Metternichโ€™s parting words to the talented teenager: โ€œI hope you wonโ€™t disgrace me tonight.โ€', 'group_id': '24477569-f6af-4b53-9e3f-6d04b0ca6916', 'household_id': 'cd2bb87f-5e4c-4dc6-8477-af9537200014', 'image': 'SuPW', 'ingredients': list([ dict({ 'is_food': True, 'note': '130g dark couverture chocolate (min. 55% cocoa content)', 'quantity': 1.0, 'reference_id': 'a3adfe78-d157-44d8-98be-9c133e45bb4e', 'unit': None, }), dict({ 'is_food': True, 'note': '1 Vanilla Pod', 'quantity': 1.0, 'reference_id': '41d234d7-c040-48f9-91e6-f4636aebb77b', 'unit': None, }), dict({ 'is_food': True, 'note': '150g softened butter', 'quantity': 1.0, 'reference_id': 'f6ce06bf-8b02-43e6-8316-0dc3fb0da0fc', 'unit': None, }), dict({ 'is_food': True, 'note': '100g Icing sugar', 'quantity': 1.0, 'reference_id': 'f7fcd86e-b04b-4e07-b69c-513925811491', 'unit': None, }), dict({ 'is_food': True, 'note': '6 Eggs', 'quantity': 1.0, 'reference_id': 'a831fbc3-e2f5-452e-a745-450be8b4a130', 'unit': None, }), dict({ 'is_food': True, 'note': '100g Castor sugar', 'quantity': 1.0, 'reference_id': 'b5ee4bdc-0047-4de7-968b-f3360bbcb31e', 'unit': None, }), dict({ 'is_food': True, 'note': '140g Plain wheat flour', 'quantity': 1.0, 'reference_id': 'a67db09d-429c-4e77-919d-cfed3da675ad', 'unit': None, }), dict({ 'is_food': True, 'note': '200g apricot jam', 'quantity': 1.0, 'reference_id': '55479752-c062-4b25-aae3-2b210999d7b9', 'unit': None, }), dict({ 'is_food': True, 'note': '200g castor sugar', 'quantity': 1.0, 'reference_id': 'ff9cd404-24ec-4d38-b0aa-0120ce1df679', 'unit': None, }), dict({ 'is_food': True, 'note': '150g dark couverture chocolate (min. 55% cocoa content)', 'quantity': 1.0, 'reference_id': 'c7fca92e-971e-4728-a227-8b04783583ed', 'unit': None, }), dict({ 'is_food': True, 'note': 'Unsweetend whipped cream to garnish', 'quantity': 1.0, 'reference_id': 'ef023f23-7816-4871-87f6-4d29f9a283f7', 'unit': None, }), dict({ 'is_food': True, 'note': 'A little water', 'quantity': None, 'reference_id': '811328dc-a5d4-4104-80d2-e26fc52b5966', 'unit': None, }), ]), 'instructions': list([ dict({ 'ingredient_references': list([ ]), 'instruction_id': '2d558dbf-5361-4ef2-9d86-4161f5eb6146', 'text': 'Preheat oven to 170ยฐC. Line the base of a springform with baking paper, grease the sides, and dust with a little flour. Melt couverture over boiling water. Let cool slightly.', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': 'dbcc1c37-3cbf-4045-9902-8f7fd1e68f0a', 'text': 'Slit vanilla pod lengthwise and scrape out seeds. Using a hand mixer with whisks, beat the softened butter with the icing sugar and vanilla seeds until bubbles appear.', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '2265bd14-a691-40b1-9fe6-7b5dfeac8401', 'text': 'Separate the eggs. Whisk the egg yolks into the butter mixture one by one. Now gradually add melted couverture chocolate. Beat the egg whites with the castor sugar until stiff, then place on top of the butter and chocolate mixture. Sift the flour over the mixture, then fold in the flour and beaten egg whites.', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '0aade447-dfac-4aae-8e67-ac250ad13ae2', 'text': "Transfer the mixture to the springform, smooth the top, and bake in the oven (middle rack) for 10โ€“15 minutes, leaving the oven door a finger's width ajar. Then close the oven and bake for approximately 50 minutes. (The cake is done when it yields slightly to the touch.)", 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '5fdcb703-7103-468d-a65d-a92460b92eb3', 'text': 'Remove the cake from the oven and loosen the sides of the springform. Carefully tip the cake onto a cake rack lined with baking paper and let cool for approximately 20 minutes. Then pull off the baking paper, turn the cake over, and leave on rack to cool completely.', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '81474afc-b44e-49b3-bb67-5d7dab8f832a', 'text': 'Cut the cake in half horizontally. Warm the jam and stir until smooth. Brush the top of both cake halves with the jam and place one on top of the other. Brush the sides with the jam as well.', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '8fac8aee-0d3c-4f78-9ff8-56d20472e5f1', 'text': 'To make the glaze, put the castor sugar into a saucepan with 125 ml water and boil over high heat for approximately 5 minutes. Take the sugar syrup off the stove and leave to cool a little. Coarsely chop the couverture, gradually adding it to the syrup, and stir until it forms a thick liquid (see tip below).', 'title': None, }), dict({ 'ingredient_references': list([ ]), 'instruction_id': '7162e099-d651-4656-902a-a09a9b40c4e1', 'text': 'Pour all the lukewarm glaze liquid at once over the top of the cake and quickly spread using a palette knife. Leave the glaze to set for a few hours. Serve garnished with whipped cream.', 'title': None, }), ]), 'name': 'Original Sacher-Torte (2)', 'original_url': 'https://www.sacher.com/en/original-sacher-torte/recipe/', 'recipe_id': 'fada9582-709b-46aa-b384-d5952123ad93', 'recipe_yield': '4 servings', 'slug': 'original-sacher-torte-2', 'tags': list([ dict({ 'name': 'Sacher', 'slug': 'sacher', 'tag_id': '1b5789b9-3af6-412e-8c77-8a01caa0aac9', }), dict({ 'name': 'Cake', 'slug': 'cake', 'tag_id': '1cf17f96-58b5-4bd3-b1e8-1606a64b413d', }), dict({ 'name': 'Torte', 'slug': 'torte', 'tag_id': '3f5f0a3d-728f-440d-a6c7-5a68612e8c67', }), dict({ 'name': 'Sachertorte', 'slug': 'sachertorte', 'tag_id': '525f388d-6ee0-4ebe-91fc-dd320a7583f0', }), dict({ 'name': 'Sacher Torte Cake', 'slug': 'sacher-torte-cake', 'tag_id': '544a6e08-a899-4f63-9c72-bb2924df70cb', }), dict({ 'name': 'Sacher Torte', 'slug': 'sacher-torte', 'tag_id': '576c0a82-84ee-4e50-a14e-aa7a675b6352', }), dict({ 'name': 'Original Sachertorte', 'slug': 'original-sachertorte', 'tag_id': 'd530b8e4-275a-4093-804b-6d0de154c206', }), ]), 'user_id': 'bf1c62fe-4941-4332-9886-e54e88dbdba0', }) # --- # name: test_shopping_items dict({ 'items': list([ dict({ 'checked': False, 'disable_amount': True, 'display': '2 Apples', 'food_id': None, 'is_food': False, 'item_id': 'f45430f7-3edf-45a9-a50f-73bb375090be', 'label_id': None, 'list_id': '9ce096fe-ded2-4077-877d-78ba450ab13e', 'note': 'Apples', 'position': 0, 'quantity': 2.0, 'unit_id': None, }), dict({ 'checked': False, 'disable_amount': False, 'display': '1 can acorn squash', 'food_id': '09322430-d24c-4b1a-abb6-22b6ed3a88f5', 'is_food': True, 'item_id': '84d8fd74-8eb0-402e-84b6-71f251bfb7cc', 'label_id': None, 'list_id': '9ce096fe-ded2-4077-877d-78ba450ab13e', 'note': '', 'position': 1, 'quantity': 1.0, 'unit_id': '7bf539d4-fc78-48bc-b48e-c35ccccec34a', }), dict({ 'checked': False, 'disable_amount': False, 'display': 'aubergine', 'food_id': '96801494-4e26-4148-849a-8155deb76327', 'is_food': True, 'item_id': '69913b9a-7c75-4935-abec-297cf7483f88', 'label_id': None, 'list_id': '9ce096fe-ded2-4077-877d-78ba450ab13e', 'note': '', 'position': 2, 'quantity': 0.0, 'unit_id': None, }), ]), }) # --- # name: test_shopping_lists dict({ 'items': list([ dict({ 'list_id': '27edbaab-2ec6-441f-8490-0283ea77585f', 'name': 'Supermarket', }), dict({ 'list_id': 'f8438635-8211-4be8-80d0-0aa42e37a5f2', 'name': 'Special groceries', }), dict({ 'list_id': 'e9d78ff2-4b23-4b77-a3a8-464827100b46', 'name': 'Freezer', }), ]), }) # --- # name: test_startup_info dict({ 'is_first_login': True, }) # --- # name: test_statistics dict({ 'total_categories': 24, 'total_recipes': 765, 'total_tags': 454, 'total_tools': 11, 'total_users': 3, }) # --- # name: test_theme dict({ 'dark_accent': '#007A99', 'dark_error': '#EF5350', 'dark_info': '#1976D2', 'dark_primary': '#E58325', 'dark_secondary': '#973542', 'dark_success': '#43A047', 'dark_warning': '#FF6D00', 'light_accent': '#007A99', 'light_error': '#EF5350', 'light_info': '#1976D2', 'light_primary': '#E58325', 'light_secondary': '#973542', 'light_success': '#43A047', 'light_warning': '#FF6D00', }) # --- # name: test_user_info dict({ 'email': 'changeme@example.com', 'full_name': 'Change Me', 'user_id': 'bf1c62fe-4941-4332-9886-e54e88dbdba0', 'username': 'admin', }) # --- joostlek-python-mealie-f3a7029/tests/conftest.py000066400000000000000000000021461473452740400220300ustar00rootroot00000000000000"""Asynchronous Python client for Mealie.""" from typing import AsyncGenerator, Generator import aiohttp from aioresponses import aioresponses import pytest from aiomealie import MealieClient from syrupy import SnapshotAssertion from .syrupy import MealieSnapshotExtension @pytest.fixture(name="snapshot") def snapshot_assertion(snapshot: SnapshotAssertion) -> SnapshotAssertion: """Return snapshot assertion fixture with the Mealie extension.""" return snapshot.use_extension(MealieSnapshotExtension) @pytest.fixture(name="mealie_client") async def client() -> AsyncGenerator[MealieClient, None]: """Return a Mealie client.""" async with ( aiohttp.ClientSession() as session, MealieClient( "https://demo.mealie.io", session=session, ) as mealie_client, ): mealie_client.household_support = True yield mealie_client @pytest.fixture(name="responses") def aioresponses_fixture() -> Generator[aioresponses, None, None]: """Return aioresponses fixture.""" with aioresponses() as mocked_responses: yield mocked_responses joostlek-python-mealie-f3a7029/tests/const.py000066400000000000000000000003241473452740400213250ustar00rootroot00000000000000"""Constants for tests.""" from aiomealie.mealie import VERSION MEALIE_URL = "https://demo.mealie.io" HEADERS = { "User-Agent": f"AioMealie/{VERSION}", "Accept": "application/json, text/plain, */*", } joostlek-python-mealie-f3a7029/tests/fixtures/000077500000000000000000000000001473452740400214775ustar00rootroot00000000000000joostlek-python-mealie-f3a7029/tests/fixtures/about.json000066400000000000000000000000341473452740400235010ustar00rootroot00000000000000{ "version": "v2.4.1" } joostlek-python-mealie-f3a7029/tests/fixtures/authentication_error.json000066400000000000000000000000631473452740400266210ustar00rootroot00000000000000{ "detail": "Could not validate credentials" } joostlek-python-mealie-f3a7029/tests/fixtures/bad_request_error.json000066400000000000000000000000771473452740400261050ustar00rootroot00000000000000{ "detail": { "details": "BAD_RECIPE_DATA" } } joostlek-python-mealie-f3a7029/tests/fixtures/groups_self.json000066400000000000000000000007751473452740400247330ustar00rootroot00000000000000{ "name": "home", "id": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "slug": "home", "preferences": { "privateGroup": true, "firstDayOfWeek": 1, "recipePublic": true, "recipeShowNutrition": true, "recipeShowAssets": true, "recipeLandscapeView": false, "recipeDisableComments": false, "recipeDisableAmount": false, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "id": "1994bf96-92c8-4697-bee6-3ad714571102" } } joostlek-python-mealie-f3a7029/tests/fixtures/mealplan.json000066400000000000000000000032771473452740400241740ustar00rootroot00000000000000{ "date": "2024-01-21", "entryType": "dinner", "title": "", "text": "", "recipeId": "40393996-417e-4487-a081-28608a668826", "id": 192, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "40393996-417e-4487-a081-28608a668826", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Cauliflower Salad", "slug": "cauliflower-salad", "image": "qLdv", "recipeYield": "6 servings", "totalTime": "2 Hours 35 Minutes", "prepTime": "25 Minutes", "cookTime": null, "performTime": "10 Minutes", "description": "This is a wonderful option for picnics and grill outs when you are looking for a new take on potato salad. This simple side salad made with cauliflower, peas, and hard boiled eggs can be made the day ahead and chilled until party time!", "recipeCategory": [], "tags": [], "tools": [ { "id": "6e199f62-8356-46cf-8f6f-ea923780a1e3", "name": "Stove", "slug": "stove", "onHand": false } ], "rating": null, "orgURL": "https://www.allrecipes.com/recipe/142152/cauliflower-salad/", "dateAdded": "2023-12-29", "dateUpdated": "2024-01-06T13:38:55.116185", "createdAt": "2023-12-29T00:46:50.138612", "updateAt": "2024-01-06T13:38:55.119029", "lastMade": "2024-01-06T22:59:59" } } joostlek-python-mealie-f3a7029/tests/fixtures/mealplan_today.json000066400000000000000000000256671473452740400254030ustar00rootroot00000000000000[ { "date": "2024-01-21", "entryType": "dinner", "title": "", "text": "", "recipeId": "40393996-417e-4487-a081-28608a668826", "id": 192, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "40393996-417e-4487-a081-28608a668826", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Cauliflower Salad", "slug": "cauliflower-salad", "image": "qLdv", "recipeYield": "6 servings", "totalTime": "2 Hours 35 Minutes", "prepTime": "25 Minutes", "cookTime": null, "performTime": "10 Minutes", "description": "This is a wonderful option for picnics and grill outs when you are looking for a new take on potato salad. This simple side salad made with cauliflower, peas, and hard boiled eggs can be made the day ahead and chilled until party time!", "recipeCategory": [], "tags": [], "tools": [ { "id": "6e199f62-8356-46cf-8f6f-ea923780a1e3", "name": "Stove", "slug": "stove", "onHand": false } ], "rating": null, "orgURL": "https://www.allrecipes.com/recipe/142152/cauliflower-salad/", "dateAdded": "2023-12-29", "dateUpdated": "2024-01-06T13:38:55.116185", "createdAt": "2023-12-29T00:46:50.138612", "updateAt": "2024-01-06T13:38:55.119029", "lastMade": "2024-01-06T22:59:59" } }, { "date": "2024-01-21", "entryType": "dinner", "title": "", "text": "", "recipeId": "872bb477-8d90-4025-98b0-07a9d0d9ce3a", "id": 206, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "872bb477-8d90-4025-98b0-07a9d0d9ce3a", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "15 Minute Cheesy Sausage & Veg Pasta", "slug": "15-minute-cheesy-sausage-veg-pasta", "image": "BeNc", "recipeYield": "", "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "Easy, cheesy, sausage pasta! In the whirlwind of mid-week mayhem, dinner doesnโ€™t have to be a chore โ€“ this 15-minute pasta, featuring HECKโ€™s Chicken Italia Chipolatas is your ticket to a delicious and hassle-free mid-week meal.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.annabelkarmel.com/recipes/15-minute-cheesy-sausage-veg-pasta/", "dateAdded": "2024-01-01", "dateUpdated": "2024-01-01T20:40:40.441381", "createdAt": "2024-01-01T20:40:40.443048", "updateAt": "2024-01-01T20:40:40.443050", "lastMade": null } }, { "date": "2024-01-21", "entryType": "lunch", "title": "", "text": "", "recipeId": "744a9831-fa56-4f61-9e12-fc5ebce58ed9", "id": 207, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "744a9831-fa56-4f61-9e12-fc5ebce58ed9", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "cake", "slug": "cake", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-01", "dateUpdated": "2024-01-01T14:39:11.214806", "createdAt": "2024-01-01T14:39:11.216709", "updateAt": "2024-01-01T14:39:11.216711", "lastMade": null } }, { "date": "2024-01-21", "entryType": "lunch", "title": "", "text": "", "recipeId": "27455eb2-31d3-4682-84ff-02a114bf293a", "id": 208, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "27455eb2-31d3-4682-84ff-02a114bf293a", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Pomegranate chicken with almond couscous", "slug": "pomegranate-chicken-with-almond-couscous", "image": "lF4p", "recipeYield": "4 servings", "totalTime": "20 Minutes", "prepTime": "5 Minutes", "cookTime": null, "performTime": "15 Minutes", "description": "Jazz up chicken breasts in this fruity, sweetly spiced sauce with pomegranate seeds, toasted almonds and tagine paste", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.bbcgoodfood.com/recipes/pomegranate-chicken-almond-couscous", "dateAdded": "2023-12-29", "dateUpdated": "2023-12-29T08:29:03.178355", "createdAt": "2023-12-29T08:29:03.180819", "updateAt": "2023-12-29T08:29:03.180820", "lastMade": null } }, { "date": "2024-01-21", "entryType": "dinner", "title": "", "text": "", "recipeId": "4233330e-6947-4042-90b7-44c405b70714", "id": 209, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "4233330e-6947-4042-90b7-44c405b70714", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Csirkรฉs รฉs tofus empanadas", "slug": "csirkes-es-tofus-empanadas", "image": "ALqz", "recipeYield": "16 servings", "totalTime": "95", "prepTime": "40", "cookTime": null, "performTime": "15", "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://streetkitchen.hu/street-kitchen/csirkes-es-tofus-empanadas/", "dateAdded": "2023-12-29", "dateUpdated": "2023-12-29T07:56:20.087496", "createdAt": "2023-12-29T07:53:47.765573", "updateAt": "2023-12-29T07:56:20.090890", "lastMade": null } }, { "date": "2024-01-21", "entryType": "dinner", "title": "", "text": "", "recipeId": "48f39d27-4b8e-4c14-bf36-4e1e6497e75e", "id": 210, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "48f39d27-4b8e-4c14-bf36-4e1e6497e75e", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "All-American Beef Stew Recipe", "slug": "all-american-beef-stew-recipe", "image": "356X", "recipeYield": "6 servings", "totalTime": "3 Hours 15 Minutes", "prepTime": "5 Minutes", "cookTime": null, "performTime": "3 Hours 10 Minutes", "description": "This All-American beef stew recipe includes tender beef coated in a rich, intense sauce and vegetables that bring complementary texture and flavor.", "recipeCategory": [], "tags": [ { "id": "78318c97-75c7-4d06-95b6-51ef8f4a0257", "name": "< 4 Hours", "slug": "4-hours" } ], "tools": [], "rating": null, "orgURL": "https://www.seriouseats.com/all-american-beef-stew-recipe", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-21T03:04:45.606075", "createdAt": "2024-01-20T20:41:29.266390", "updateAt": "2024-01-21T03:04:45.609563", "lastMade": null } }, { "date": "2024-01-21", "entryType": "dinner", "title": "", "text": "", "recipeId": "27455eb2-31d3-4682-84ff-02a114bf293a", "id": 223, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "27455eb2-31d3-4682-84ff-02a114bf293a", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Pomegranate chicken with almond couscous", "slug": "pomegranate-chicken-with-almond-couscous", "image": "lF4p", "recipeYield": "4 servings", "totalTime": "20 Minutes", "prepTime": "5 Minutes", "cookTime": null, "performTime": "15 Minutes", "description": "Jazz up chicken breasts in this fruity, sweetly spiced sauce with pomegranate seeds, toasted almonds and tagine paste", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.bbcgoodfood.com/recipes/pomegranate-chicken-almond-couscous", "dateAdded": "2023-12-29", "dateUpdated": "2023-12-29T08:29:03.178355", "createdAt": "2023-12-29T08:29:03.180819", "updateAt": "2023-12-29T08:29:03.180820", "lastMade": null } } ] joostlek-python-mealie-f3a7029/tests/fixtures/mealplans.json000066400000000000000000000753011473452740400243540ustar00rootroot00000000000000{ "page": 1, "per_page": 50, "total": 14, "total_pages": 1, "items": [ { "date": "2024-01-22", "entryType": "dinner", "title": "", "text": "", "recipeId": "c5f00a93-71a2-4e48-900f-d9ad0bb9de93", "id": 230, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "c5f00a93-71a2-4e48-900f-d9ad0bb9de93", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Zoete aardappel curry traybake", "slug": "zoete-aardappel-curry-traybake", "image": "AiIo", "recipeYield": "2 servings", "totalTime": "40 Minutes", "prepTime": null, "cookTime": null, "performTime": null, "description": "Een traybake is eigenlijk altijd een goed idee. Deze zoete aardappel curry traybake dus ook. Waarom? Omdat je alleen maar wat groenten - en in dit geval kip - op een bakplaat (traybake dus) legt, hier wat kruiden aan toevoegt en deze in de oven schuift. Ideaal dus als je geen zin hebt om lang in de keuken te staan. Maar gewoon lekker op de bank wil ploffen om te wachten tot de oven klaar is. Joe! That\\'s what we like. Deze zoete aardappel curry traybake bevat behalve zoete aardappel en curry ook kikkererwten, kippendijfilet en bloemkoolroosjes. Je gebruikt yoghurt en limoen als een soort dressing. En je serveert deze heerlijke traybake met naanbrood. Je kunt natuurljk ook voor deze traybake met chipolataworstjes gaan. Wil je graag meer ovengerechten? Dan moet je eigenlijk even kijken naar onze Ovenbijbel. Onmisbaar in je keuken! We willen je deze zoete aardappelstamppot met prei ook niet onthouden. Megalekker bordje comfortfood als je \\'t ons vraagt.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://chickslovefood.com/recept/zoete-aardappel-curry-traybake/", "dateAdded": "2024-01-22", "dateUpdated": "2024-01-22T00:27:46.324512", "createdAt": "2024-01-22T00:27:46.327546", "updateAt": "2024-01-22T00:27:46.327548", "lastMade": null } }, { "date": "2024-01-23", "entryType": "breakfast", "title": "", "text": "", "recipeId": "5b055066-d57d-4fd0-8dfd-a2c2f07b36f1", "id": 229, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "5b055066-d57d-4fd0-8dfd-a2c2f07b36f1", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Roast Chicken", "slug": "roast-chicken", "image": "JeQ2", "recipeYield": "6 servings", "totalTime": "1 Hour 35 Minutes", "prepTime": "15 Minutes", "cookTime": null, "performTime": "1 Hour 20 Minutes", "description": "The BEST Roast Chicken recipe is simple, budget friendly, and gives you a tender, mouth-watering chicken full of flavor! Served with roasted vegetables, this recipe is simple enough for any cook!", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://tastesbetterfromscratch.com/roast-chicken/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T15:29:25.664540", "createdAt": "2024-01-21T15:29:25.667450", "updateAt": "2024-01-21T15:29:25.667452", "lastMade": null } }, { "date": "2024-01-23", "entryType": "lunch", "title": "", "text": "", "recipeId": "e360a0cc-18b0-4a84-a91b-8aa59e2451c9", "id": 226, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "e360a0cc-18b0-4a84-a91b-8aa59e2451c9", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Receta de pollo al curry en 10 minutos (con vรญdeo incluido)", "slug": "receta-de-pollo-al-curry-en-10-minutos-con-video-incluido", "image": "INQz", "recipeYield": "2 servings", "totalTime": "10 Minutes", "prepTime": "3 Minutes", "cookTime": null, "performTime": "7 Minutes", "description": "Te explicamos paso a paso, de manera sencilla, la elaboraciรณn de la receta de pollo al curry con leche de coco en 10 minutos. Ingredientes, tiempo de...", "recipeCategory": [], "tags": [], "tools": [ { "id": "1170e609-20d3-45b8-b0c7-3a4cfa614e88", "name": "Backofen", "slug": "backofen", "onHand": false }, { "id": "9ab522ad-c3be-4dad-8b4f-d9d53817f4d0", "name": "Magimix blender", "slug": "magimix-blender", "onHand": false }, { "id": "b4ca27dc-9bf6-48be-ad10-3e7056cb24bc", "name": "Alluminio", "slug": "alluminio", "onHand": false } ], "rating": null, "orgURL": "https://www.directoalpaladar.com/recetas-de-carnes-y-aves/receta-de-pollo-al-curry-en-10-minutos", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T12:56:31.483701", "createdAt": "2024-01-21T12:45:28.589669", "updateAt": "2024-01-21T12:56:31.487406", "lastMade": null } }, { "date": "2024-01-23", "entryType": "lunch", "title": "", "text": "", "recipeId": "9c7b8aee-c93c-4b1b-ab48-2625d444743a", "id": 224, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "9c7b8aee-c93c-4b1b-ab48-2625d444743a", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Boeuf bourguignon : la vraie recette (2)", "slug": "boeuf-bourguignon-la-vraie-recette-2", "image": "nj5M", "recipeYield": "4 servings", "totalTime": "5 Hours", "prepTime": "1 Hour", "cookTime": null, "performTime": "4 Hours", "description": "bourguignon, oignon, carotte, bouquet garni, vin rouge, beurre, sel, poivre", "recipeCategory": [], "tags": [ { "id": "01c2f4ac-54ce-49bc-9bd7-8a49f353a3a4", "name": "Poivre", "slug": "poivre" }, { "id": "90a26cea-a8a1-41a1-9e8c-e94e3c40f7a7", "name": "Sel", "slug": "sel" }, { "id": "d7b01a4b-5206-4bd2-b9c4-d13b95ca0edb", "name": "Beurre", "slug": "beurre" }, { "id": "304faaf8-13ec-4537-91f3-9f39a3585545", "name": "Facile", "slug": "facile" }, { "id": "6508fb05-fb60-4bed-90c4-584bd6d74cb5", "name": "Daube", "slug": "daube" }, { "id": "18ff59b6-b599-456a-896b-4b76448b08ca", "name": "Bourguignon", "slug": "bourguignon" }, { "id": "685a0d90-8de4-494e-8eb8-68e7f5d5ffbe", "name": "Vin Rouge", "slug": "vin-rouge" }, { "id": "5dedc8b5-30f5-4d6e-875f-34deefd01883", "name": "Oignon", "slug": "oignon" }, { "id": "065b79e0-6276-4ebb-9428-7018b40c55bb", "name": "Bouquet Garni", "slug": "bouquet-garni" }, { "id": "d858b1d9-2ca1-46d4-acc2-3d03f991f03f", "name": "Moyen", "slug": "moyen" }, { "id": "bded0bd8-8d41-4ec5-ad73-e0107fb60908", "name": "Boeuf Bourguignon : La Vraie Recette", "slug": "boeuf-bourguignon-la-vraie-recette" }, { "id": "7f99b04f-914a-408b-a057-511ca1125734", "name": "Carotte", "slug": "carotte" } ], "tools": [], "rating": null, "orgURL": "https://www.marmiton.org/recettes/recette_boeuf-bourguignon_18889.aspx", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T08:45:28.780361", "createdAt": "2024-01-21T08:45:28.782322", "updateAt": "2024-01-21T08:45:28.782324", "lastMade": null } }, { "date": "2024-01-23", "entryType": "dinner", "title": "", "text": "", "recipeId": "f79f7e9d-4b58-4930-a586-2b127f16ee34", "id": 222, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "f79f7e9d-4b58-4930-a586-2b127f16ee34", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ (1)", "slug": "eukole-makaronada-me-kephtedakia-ston-phourno-1", "image": "En9o", "recipeYield": "6 servings", "totalTime": null, "prepTime": "15 Minutes", "cookTime": null, "performTime": "50 Minutes", "description": "ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ ฮฑฯ€ฯŒ ฯ„ฮฟฮฝ ฮ†ฮบฮท ฮ ฮตฯ„ฯฮตฯ„ฮถฮฏฮบฮท. ฮฆฯ„ฮนฮฌฮพฯ„ฮต ฯ„ฮทฮฝ ฯ€ฮนฮฟ ฮตฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฮต ฮผฯŒฮฝฮฟ ฮญฮฝฮฑ ฯƒฮบฮตฯฮฟฯ‚.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://akispetretzikis.com/recipe/7959/efkolh-makaronada-me-keftedakia-ston-fourno", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T09:08:58.056854", "createdAt": "2024-01-21T09:08:58.059401", "updateAt": "2024-01-21T09:08:58.059403", "lastMade": null } }, { "date": "2024-01-23", "entryType": "dinner", "title": "", "text": "", "recipeId": "47595e4c-52bc-441d-b273-3edf4258806d", "id": 221, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "47595e4c-52bc-441d-b273-3edf4258806d", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Greek Turkey Meatballs with Lemon Orzo & Creamy Feta Yogurt Sauce", "slug": "greek-turkey-meatballs-with-lemon-orzo-creamy-feta-yogurt-sauce", "image": "Kn62", "recipeYield": "4 servings", "totalTime": "1 Hour", "prepTime": "40 Minutes", "cookTime": null, "performTime": "20 Minutes", "description": "Delicious Greek turkey meatballs with lemon orzo, tender veggies, and a creamy feta yogurt sauce. These healthy baked Greek turkey meatballs are filled with tons of wonderful herbs and make the perfect protein-packed weeknight meal!", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.ambitiouskitchen.com/greek-turkey-meatballs/", "dateAdded": "2024-01-04", "dateUpdated": "2024-01-04T11:51:00.843570", "createdAt": "2024-01-04T11:51:00.847033", "updateAt": "2024-01-04T11:51:00.847035", "lastMade": null } }, { "date": "2024-01-23", "entryType": "side", "title": "", "text": "", "recipeId": "9d553779-607e-471b-acf3-84e6be27b159", "id": 220, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "9d553779-607e-471b-acf3-84e6be27b159", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Einfacher Nudelauflauf mit Brokkoli", "slug": "einfacher-nudelauflauf-mit-brokkoli", "image": "nOPT", "recipeYield": "4 servings", "totalTime": "35 Minutes", "prepTime": "15 Minutes", "cookTime": null, "performTime": "20 Minutes", "description": "Einfacher Nudelauflauf mit Brokkoli, Sahnesauce und extra Kรคse. Dieses vegetarische 5 Zutaten Rezept ist super schnell gemacht und SO gut!", "recipeCategory": [], "tags": [ { "id": "78318c97-75c7-4d06-95b6-51ef8f4a0257", "name": "< 4 Hours", "slug": "4-hours" } ], "tools": [], "rating": null, "orgURL": "https://kochkarussell.com/einfacher-nudelauflauf-brokkoli/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T03:04:25.718367", "createdAt": "2024-01-21T02:13:11.323363", "updateAt": "2024-01-21T03:04:25.721489", "lastMade": null } }, { "date": "2024-01-23", "entryType": "dinner", "title": "", "text": "", "recipeId": "92635fd0-f2dc-4e78-a6e4-ecd556ad361f", "id": 219, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "92635fd0-f2dc-4e78-a6e4-ecd556ad361f", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Pampered Chef Double Chocolate Mocha Trifle", "slug": "pampered-chef-double-chocolate-mocha-trifle", "image": "ibL6", "recipeYield": "12 servings", "totalTime": "1 Hour 15 Minutes", "prepTime": "15 Minutes", "cookTime": null, "performTime": "1 Hour", "description": "This is a modified Pampered Chef recipe. You can use a trifle bowl or large glass punch/salad bowl to show it off. It is really easy to make and I never have any leftovers. Cook time includes chill time.", "recipeCategory": [], "tags": [ { "id": "0248c21d-c85a-47b2-aaf6-fb6caf1b7726", "name": "Weeknight", "slug": "weeknight" }, { "id": "78318c97-75c7-4d06-95b6-51ef8f4a0257", "name": "< 4 Hours", "slug": "4-hours" } ], "tools": [], "rating": 3, "orgURL": "https://www.food.com/recipe/pampered-chef-double-chocolate-mocha-trifle-74963", "dateAdded": "2024-01-06", "dateUpdated": "2024-01-06T08:11:21.427447", "createdAt": "2024-01-06T06:29:24.966994", "updateAt": "2024-01-06T08:11:21.430079", "lastMade": null } }, { "date": "2024-01-22", "entryType": "dinner", "title": "", "text": "", "recipeId": "8bdd3656-5e7e-45d3-a3c4-557390846a22", "id": 217, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "8bdd3656-5e7e-45d3-a3c4-557390846a22", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Cheeseburger Sliders (Easy, 30-min Recipe)", "slug": "cheeseburger-sliders-easy-30-min-recipe", "image": "beGq", "recipeYield": "24 servings", "totalTime": "30 Minutes", "prepTime": "8 Minutes", "cookTime": null, "performTime": "22 Minutes", "description": "Cheeseburger Sliders are juicy, cheesy and beefy - everything we love about classic burgers! These sliders are quick and easy plus they are make-ahead and reheat really well.", "recipeCategory": [], "tags": [ { "id": "7a4ca427-642f-4428-8dc7-557ea9c8d1b4", "name": "Cheeseburger Sliders", "slug": "cheeseburger-sliders" }, { "id": "941558d2-50d5-4c9d-8890-a0258f18d493", "name": "Sliders", "slug": "sliders" } ], "tools": [], "rating": 5, "orgURL": "https://natashaskitchen.com/cheeseburger-sliders/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T07:43:24.261010", "createdAt": "2024-01-21T06:49:35.466777", "updateAt": "2024-01-21T06:49:35.466778", "lastMade": "2024-01-22T04:59:59" } }, { "date": "2024-01-22", "entryType": "lunch", "title": "", "text": "", "recipeId": "48f39d27-4b8e-4c14-bf36-4e1e6497e75e", "id": 216, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "48f39d27-4b8e-4c14-bf36-4e1e6497e75e", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "All-American Beef Stew Recipe", "slug": "all-american-beef-stew-recipe", "image": "356X", "recipeYield": "6 servings", "totalTime": "3 Hours 15 Minutes", "prepTime": "5 Minutes", "cookTime": null, "performTime": "3 Hours 10 Minutes", "description": "This All-American beef stew recipe includes tender beef coated in a rich, intense sauce and vegetables that bring complementary texture and flavor.", "recipeCategory": [], "tags": [ { "id": "78318c97-75c7-4d06-95b6-51ef8f4a0257", "name": "< 4 Hours", "slug": "4-hours" } ], "tools": [], "rating": null, "orgURL": "https://www.seriouseats.com/all-american-beef-stew-recipe", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-21T03:04:45.606075", "createdAt": "2024-01-20T20:41:29.266390", "updateAt": "2024-01-21T03:04:45.609563", "lastMade": null } }, { "date": "2024-01-23", "entryType": "dinner", "title": "", "text": "", "recipeId": "48f39d27-4b8e-4c14-bf36-4e1e6497e75e", "id": 212, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "48f39d27-4b8e-4c14-bf36-4e1e6497e75e", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "All-American Beef Stew Recipe", "slug": "all-american-beef-stew-recipe", "image": "356X", "recipeYield": "6 servings", "totalTime": "3 Hours 15 Minutes", "prepTime": "5 Minutes", "cookTime": null, "performTime": "3 Hours 10 Minutes", "description": "This All-American beef stew recipe includes tender beef coated in a rich, intense sauce and vegetables that bring complementary texture and flavor.", "recipeCategory": [], "tags": [ { "id": "78318c97-75c7-4d06-95b6-51ef8f4a0257", "name": "< 4 Hours", "slug": "4-hours" } ], "tools": [], "rating": null, "orgURL": "https://www.seriouseats.com/all-american-beef-stew-recipe", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-21T03:04:45.606075", "createdAt": "2024-01-20T20:41:29.266390", "updateAt": "2024-01-21T03:04:45.609563", "lastMade": null } }, { "date": "2024-01-22", "entryType": "dinner", "title": "", "text": "", "recipeId": "9d553779-607e-471b-acf3-84e6be27b159", "id": 211, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "9d553779-607e-471b-acf3-84e6be27b159", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Einfacher Nudelauflauf mit Brokkoli", "slug": "einfacher-nudelauflauf-mit-brokkoli", "image": "nOPT", "recipeYield": "4 servings", "totalTime": "35 Minutes", "prepTime": "15 Minutes", "cookTime": null, "performTime": "20 Minutes", "description": "Einfacher Nudelauflauf mit Brokkoli, Sahnesauce und extra Kรคse. Dieses vegetarische 5 Zutaten Rezept ist super schnell gemacht und SO gut!", "recipeCategory": [], "tags": [ { "id": "78318c97-75c7-4d06-95b6-51ef8f4a0257", "name": "< 4 Hours", "slug": "4-hours" } ], "tools": [], "rating": null, "orgURL": "https://kochkarussell.com/einfacher-nudelauflauf-brokkoli/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T03:04:25.718367", "createdAt": "2024-01-21T02:13:11.323363", "updateAt": "2024-01-21T03:04:25.721489", "lastMade": null } }, { "date": "2024-01-23", "entryType": "dinner", "title": "", "text": "", "recipeId": "25b814f2-d9bf-4df0-b40d-d2f2457b4317", "id": 196, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "25b814f2-d9bf-4df0-b40d-d2f2457b4317", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Miso Udon Noodles with Spinach and Tofu", "slug": "miso-udon-noodles-with-spinach-and-tofu", "image": "5G1v", "recipeYield": "2 servings", "totalTime": "25 Minutes", "prepTime": "10 Minutes", "cookTime": null, "performTime": "15 Minutes", "description": "Simple to prepare and ready in 25 minutes, this vegetarian miso noodle recipe can be eaten on its own or served as a side.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.allrecipes.com/recipe/284039/miso-udon-noodles-with-spinach-and-tofu/", "dateAdded": "2024-01-05", "dateUpdated": "2024-01-05T16:35:00.264511", "createdAt": "2024-01-05T16:00:45.090493", "updateAt": "2024-01-05T16:35:00.267508", "lastMade": null } }, { "date": "2024-01-22", "entryType": "dinner", "title": "", "text": "", "recipeId": "55c88810-4cf1-4d86-ae50-63b15fd173fb", "id": 195, "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "recipe": { "id": "55c88810-4cf1-4d86-ae50-63b15fd173fb", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Mousse de saumon", "slug": "mousse-de-saumon", "image": "rrNL", "recipeYield": "12 servings", "totalTime": "17 Minutes", "prepTime": "15 Minutes", "cookTime": null, "performTime": "2 Minutes", "description": "Avis aux nostalgiques des annรฉes 1980, la mousse de saumon est de retour dans une prรฉsentation adaptรฉe au goรปt du jour. On utilise une technique sans faille : un saumon frais cuit au micro-ondes et mรฉlangรฉ au robot avec du fromage ร  la crรจme et de la crรจme sure. On obtient ainsi une texture onctueuse ร  tartiner, qui nโ€™a rien ร  envier aux prรฉparations gรฉlatineuses dโ€™antan !", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.ricardocuisine.com/recettes/8919-mousse-de-saumon", "dateAdded": "2024-01-02", "dateUpdated": "2024-01-02T06:35:05.206948", "createdAt": "2024-01-02T06:33:15.329794", "updateAt": "2024-01-02T06:35:05.209189", "lastMade": "2024-01-02T22:59:59" } }, { "date": "2024-06-30", "entryType": "dinner", "title": "Aquavite ", "text": "Dineren met de boys ", "recipeId": null, "id": 1, "groupId": "3931df86-0679-4579-8c63-4bedc9ca9a85", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "userId": "6caa6e4d-521f-4ef4-9ed7-388bdd63f47d", "recipe": null } ], "next": null, "previous": null } joostlek-python-mealie-f3a7029/tests/fixtures/not_found_error.json000066400000000000000000000001601473452740400255730ustar00rootroot00000000000000{ "detail": { "message": "No Entry Found", "error": true, "exception": null } } joostlek-python-mealie-f3a7029/tests/fixtures/recipe.json000066400000000000000000000253621473452740400236510ustar00rootroot00000000000000{ "id": "fada9582-709b-46aa-b384-d5952123ad93", "userId": "bf1c62fe-4941-4332-9886-e54e88dbdba0", "groupId": "24477569-f6af-4b53-9e3f-6d04b0ca6916", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Original Sacher-Torte (2)", "slug": "original-sacher-torte-2", "image": "SuPW", "recipeYield": "4 servings", "totalTime": "2 hours 30 minutes", "prepTime": "1 hour 30 minutes", "cookTime": null, "performTime": "1 hour", "description": "The worldโ€™s most famous cake, the Original Sacher-Torte, is the consequence of several lucky twists of fate. The first was in 1832, when the Austrian State Chancellor, Prince Klemens Wenzel von Metternich, tasked his kitchen staff with concocting an extraordinary dessert to impress his special guests. As fortune had it, the chef had fallen ill that evening, leaving the apprentice chef, the then-16-year-old Franz Sacher, to perform this culinary magic trick. Metternichโ€™s parting words to the talented teenager: โ€œI hope you wonโ€™t disgrace me tonight.โ€", "recipeCategory": [], "tags": [ { "id": "1b5789b9-3af6-412e-8c77-8a01caa0aac9", "name": "Sacher", "slug": "sacher" }, { "id": "1cf17f96-58b5-4bd3-b1e8-1606a64b413d", "name": "Cake", "slug": "cake" }, { "id": "3f5f0a3d-728f-440d-a6c7-5a68612e8c67", "name": "Torte", "slug": "torte" }, { "id": "525f388d-6ee0-4ebe-91fc-dd320a7583f0", "name": "Sachertorte", "slug": "sachertorte" }, { "id": "544a6e08-a899-4f63-9c72-bb2924df70cb", "name": "Sacher Torte Cake", "slug": "sacher-torte-cake" }, { "id": "576c0a82-84ee-4e50-a14e-aa7a675b6352", "name": "Sacher Torte", "slug": "sacher-torte" }, { "id": "d530b8e4-275a-4093-804b-6d0de154c206", "name": "Original Sachertorte", "slug": "original-sachertorte" } ], "tools": [], "rating": null, "orgURL": "https://www.sacher.com/en/original-sacher-torte/recipe/", "dateAdded": "2024-06-29", "dateUpdated": "2024-06-29T06:10:34.412665", "createdAt": "2024-06-29T06:10:34.414927", "updateAt": "2024-06-29T06:10:34.414928", "lastMade": null, "recipeIngredient": [ { "quantity": 1.0, "unit": null, "food": null, "note": "130g dark couverture chocolate (min. 55% cocoa content)", "isFood": true, "disableAmount": false, "display": "1 130g dark couverture chocolate (min. 55% cocoa content)", "title": null, "originalText": null, "referenceId": "a3adfe78-d157-44d8-98be-9c133e45bb4e" }, { "quantity": 1.0, "unit": null, "food": null, "note": "1 Vanilla Pod", "isFood": true, "disableAmount": false, "display": "1 1 Vanilla Pod", "title": null, "originalText": null, "referenceId": "41d234d7-c040-48f9-91e6-f4636aebb77b" }, { "quantity": 1.0, "unit": null, "food": null, "note": "150g softened butter", "isFood": true, "disableAmount": false, "display": "1 150g softened butter", "title": null, "originalText": null, "referenceId": "f6ce06bf-8b02-43e6-8316-0dc3fb0da0fc" }, { "quantity": 1.0, "unit": null, "food": null, "note": "100g Icing sugar", "isFood": true, "disableAmount": false, "display": "1 100g Icing sugar", "title": null, "originalText": null, "referenceId": "f7fcd86e-b04b-4e07-b69c-513925811491" }, { "quantity": 1.0, "unit": null, "food": null, "note": "6 Eggs", "isFood": true, "disableAmount": false, "display": "1 6 Eggs", "title": null, "originalText": null, "referenceId": "a831fbc3-e2f5-452e-a745-450be8b4a130" }, { "quantity": 1.0, "unit": null, "food": null, "note": "100g Castor sugar", "isFood": true, "disableAmount": false, "display": "1 100g Castor sugar", "title": null, "originalText": null, "referenceId": "b5ee4bdc-0047-4de7-968b-f3360bbcb31e" }, { "quantity": 1.0, "unit": null, "food": null, "note": "140g Plain wheat flour", "isFood": true, "disableAmount": false, "display": "1 140g Plain wheat flour", "title": null, "originalText": null, "referenceId": "a67db09d-429c-4e77-919d-cfed3da675ad" }, { "quantity": 1.0, "unit": null, "food": null, "note": "200g apricot jam", "isFood": true, "disableAmount": false, "display": "1 200g apricot jam", "title": null, "originalText": null, "referenceId": "55479752-c062-4b25-aae3-2b210999d7b9" }, { "quantity": 1.0, "unit": null, "food": null, "note": "200g castor sugar", "isFood": true, "disableAmount": false, "display": "1 200g castor sugar", "title": null, "originalText": null, "referenceId": "ff9cd404-24ec-4d38-b0aa-0120ce1df679" }, { "quantity": 1.0, "unit": null, "food": null, "note": "150g dark couverture chocolate (min. 55% cocoa content)", "isFood": true, "disableAmount": false, "display": "1 150g dark couverture chocolate (min. 55% cocoa content)", "title": null, "originalText": null, "referenceId": "c7fca92e-971e-4728-a227-8b04783583ed" }, { "quantity": 1.0, "unit": null, "food": null, "note": "Unsweetend whipped cream to garnish", "isFood": true, "disableAmount": false, "display": "1 Unsweetend whipped cream to garnish", "title": null, "originalText": null, "referenceId": "ef023f23-7816-4871-87f6-4d29f9a283f7" }, { "quantity": null, "unit": null, "food": null, "note": "A little water", "isFood": true, "disableAmount": false, "display": "A little water", "title": null, "originalText": null, "referenceId": "811328dc-a5d4-4104-80d2-e26fc52b5966" } ], "recipeInstructions": [ { "id": "2d558dbf-5361-4ef2-9d86-4161f5eb6146", "title": "", "text": "Preheat oven to 170ยฐC. Line the base of a springform with baking paper, grease the sides, and dust with a little flour. Melt couverture over boiling water. Let cool slightly.", "ingredientReferences": [] }, { "id": "dbcc1c37-3cbf-4045-9902-8f7fd1e68f0a", "title": "", "text": "Slit vanilla pod lengthwise and scrape out seeds. Using a hand mixer with whisks, beat the softened butter with the icing sugar and vanilla seeds until bubbles appear.", "ingredientReferences": [] }, { "id": "2265bd14-a691-40b1-9fe6-7b5dfeac8401", "title": "", "text": "Separate the eggs. Whisk the egg yolks into the butter mixture one by one. Now gradually add melted couverture chocolate. Beat the egg whites with the castor sugar until stiff, then place on top of the butter and chocolate mixture. Sift the flour over the mixture, then fold in the flour and beaten egg whites.", "ingredientReferences": [] }, { "id": "0aade447-dfac-4aae-8e67-ac250ad13ae2", "title": "", "text": "Transfer the mixture to the springform, smooth the top, and bake in the oven (middle rack) for 10โ€“15 minutes, leaving the oven door a finger's width ajar. Then close the oven and bake for approximately 50 minutes. (The cake is done when it yields slightly to the touch.)", "ingredientReferences": [] }, { "id": "5fdcb703-7103-468d-a65d-a92460b92eb3", "title": "", "text": "Remove the cake from the oven and loosen the sides of the springform. Carefully tip the cake onto a cake rack lined with baking paper and let cool for approximately 20 minutes. Then pull off the baking paper, turn the cake over, and leave on rack to cool completely.", "ingredientReferences": [] }, { "id": "81474afc-b44e-49b3-bb67-5d7dab8f832a", "title": "", "text": "Cut the cake in half horizontally. Warm the jam and stir until smooth. Brush the top of both cake halves with the jam and place one on top of the other. Brush the sides with the jam as well.", "ingredientReferences": [] }, { "id": "8fac8aee-0d3c-4f78-9ff8-56d20472e5f1", "title": "", "text": "To make the glaze, put the castor sugar into a saucepan with 125 ml water and boil over high heat for approximately 5 minutes. Take the sugar syrup off the stove and leave to cool a little. Coarsely chop the couverture, gradually adding it to the syrup, and stir until it forms a thick liquid (see tip below).", "ingredientReferences": [] }, { "id": "7162e099-d651-4656-902a-a09a9b40c4e1", "title": "", "text": "Pour all the lukewarm glaze liquid at once over the top of the cake and quickly spread using a palette knife. Leave the glaze to set for a few hours. Serve garnished with whipped cream.", "ingredientReferences": [] } ], "nutrition": { "calories": "400", "fatContent": "17", "proteinContent": null, "carbohydrateContent": null, "fiberContent": null, "sodiumContent": null, "sugarContent": null }, "settings": { "public": true, "showNutrition": true, "showAssets": true, "landscapeView": false, "disableComments": false, "disableAmount": false, "locked": false }, "assets": [], "notes": [], "extras": {}, "comments": [] } joostlek-python-mealie-f3a7029/tests/fixtures/recipes.json000066400000000000000000002212151473452740400240270ustar00rootroot00000000000000{ "page": 1, "per_page": 50, "total": 662, "total_pages": 14, "items": [ { "id": "e82f5449-c33b-437c-b712-337587199264", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "tu6y", "slug": "tu6y", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T11:10:14.866359", "createdAt": "2024-01-21T11:10:14.880721", "updateAt": "2024-01-21T11:10:14.880723", "lastMade": null }, { "id": "f79f7e9d-4b58-4930-a586-2b127f16ee34", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ (1)", "slug": "eukole-makaronada-me-kephtedakia-ston-phourno-1", "image": "En9o", "recipeYield": "6 servings", "totalTime": null, "prepTime": "15 Minutes", "cookTime": null, "performTime": "50 Minutes", "description": "ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ ฮฑฯ€ฯŒ ฯ„ฮฟฮฝ ฮ†ฮบฮท ฮ ฮตฯ„ฯฮตฯ„ฮถฮฏฮบฮท. ฮฆฯ„ฮนฮฌฮพฯ„ฮต ฯ„ฮทฮฝ ฯ€ฮนฮฟ ฮตฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฮต ฮผฯŒฮฝฮฟ ฮญฮฝฮฑ ฯƒฮบฮตฯฮฟฯ‚.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://akispetretzikis.com/recipe/7959/efkolh-makaronada-me-keftedakia-ston-fourno", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T09:08:58.056854", "createdAt": "2024-01-21T09:08:58.059401", "updateAt": "2024-01-21T09:08:58.059403", "lastMade": null }, { "id": "90097c8b-9d80-468a-b497-73957ac0cd8b", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Patates douces au four (1)", "slug": "patates-douces-au-four-1", "image": "aAhk", "recipeYield": "", "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "Rรฉgalez vous avec ces patates douces cuites au four et lรฉgรจrement parfumรฉes au thym et au piment. Super bon avec un poulet rรดti par exemple.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.papillesetpupilles.fr/2018/10/patates-douces-au-four.html/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T10:27:39.409746", "createdAt": "2024-01-21T09:08:53.846294", "updateAt": "2024-01-21T09:08:53.846295", "lastMade": null }, { "id": "98845807-9365-41fd-acd1-35630b468c27", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Sweet potatoes", "slug": "sweet-potatoes", "image": "kdhm", "recipeYield": "", "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "Rรฉgalez vous avec ces patates douces cuites au four et lรฉgรจrement parfumรฉes au thym et au piment. Super bon avec un poulet rรดti par exemple.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.papillesetpupilles.fr/2018/10/patates-douces-au-four.html/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T10:28:05.977615", "createdAt": "2024-01-21T09:08:53.846294", "updateAt": "2024-01-21T09:08:53.846295", "lastMade": null }, { "id": "40c227e0-3c7e-41f7-866d-5de04eaecdd7", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ", "slug": "eukole-makaronada-me-kephtedakia-ston-phourno", "image": "tNbG", "recipeYield": "6 servings", "totalTime": null, "prepTime": "15 Minutes", "cookTime": null, "performTime": "50 Minutes", "description": "ฮ•ฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฯ„ฮฟฮฝ ฯ†ฮฟฯฯฮฝฮฟ ฮฑฯ€ฯŒ ฯ„ฮฟฮฝ ฮ†ฮบฮท ฮ ฮตฯ„ฯฮตฯ„ฮถฮฏฮบฮท. ฮฆฯ„ฮนฮฌฮพฯ„ฮต ฯ„ฮทฮฝ ฯ€ฮนฮฟ ฮตฯฮบฮฟฮปฮท ฮผฮฑฮบฮฑฯฮฟฮฝฮฌฮดฮฑ ฮผฮต ฮบฮตฯ†ฯ„ฮตฮดฮฌฮบฮนฮฑ ฯƒฮต ฮผฯŒฮฝฮฟ ฮญฮฝฮฑ ฯƒฮบฮตฯฮฟฯ‚.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://akispetretzikis.com/recipe/7959/efkolh-makaronada-me-keftedakia-ston-fourno", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T09:06:44.015829", "createdAt": "2024-01-21T09:06:44.019650", "updateAt": "2024-01-21T09:06:44.019653", "lastMade": null }, { "id": "9c7b8aee-c93c-4b1b-ab48-2625d444743a", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Boeuf bourguignon : la vraie recette (2)", "slug": "boeuf-bourguignon-la-vraie-recette-2", "image": "nj5M", "recipeYield": "4 servings", "totalTime": "5 Hours", "prepTime": "1 Hour", "cookTime": null, "performTime": "4 Hours", "description": "bourguignon, oignon, carotte, bouquet garni, vin rouge, beurre, sel, poivre", "recipeCategory": [], "tags": [ { "id": "01c2f4ac-54ce-49bc-9bd7-8a49f353a3a4", "name": "Poivre", "slug": "poivre" }, { "id": "90a26cea-a8a1-41a1-9e8c-e94e3c40f7a7", "name": "Sel", "slug": "sel" }, { "id": "d7b01a4b-5206-4bd2-b9c4-d13b95ca0edb", "name": "Beurre", "slug": "beurre" }, { "id": "304faaf8-13ec-4537-91f3-9f39a3585545", "name": "Facile", "slug": "facile" }, { "id": "6508fb05-fb60-4bed-90c4-584bd6d74cb5", "name": "Daube", "slug": "daube" }, { "id": "18ff59b6-b599-456a-896b-4b76448b08ca", "name": "Bourguignon", "slug": "bourguignon" }, { "id": "685a0d90-8de4-494e-8eb8-68e7f5d5ffbe", "name": "Vin Rouge", "slug": "vin-rouge" }, { "id": "5dedc8b5-30f5-4d6e-875f-34deefd01883", "name": "Oignon", "slug": "oignon" }, { "id": "065b79e0-6276-4ebb-9428-7018b40c55bb", "name": "Bouquet Garni", "slug": "bouquet-garni" }, { "id": "d858b1d9-2ca1-46d4-acc2-3d03f991f03f", "name": "Moyen", "slug": "moyen" }, { "id": "bded0bd8-8d41-4ec5-ad73-e0107fb60908", "name": "Boeuf Bourguignon : La Vraie Recette", "slug": "boeuf-bourguignon-la-vraie-recette" }, { "id": "7f99b04f-914a-408b-a057-511ca1125734", "name": "Carotte", "slug": "carotte" } ], "tools": [], "rating": null, "orgURL": "https://www.marmiton.org/recettes/recette_boeuf-bourguignon_18889.aspx", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T08:45:28.780361", "createdAt": "2024-01-21T08:45:28.782322", "updateAt": "2024-01-21T08:45:28.782324", "lastMade": null }, { "id": "fc42c7d1-7b0f-4e04-b88a-dbd80b81540b", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Boeuf bourguignon : la vraie recette (1)", "slug": "boeuf-bourguignon-la-vraie-recette-1", "image": "rbU7", "recipeYield": "4 servings", "totalTime": "5 Hours", "prepTime": "1 Hour", "cookTime": null, "performTime": "4 Hours", "description": "bourguignon, oignon, carotte, bouquet garni, vin rouge, beurre, sel, poivre", "recipeCategory": [], "tags": [ { "id": "01c2f4ac-54ce-49bc-9bd7-8a49f353a3a4", "name": "Poivre", "slug": "poivre" }, { "id": "90a26cea-a8a1-41a1-9e8c-e94e3c40f7a7", "name": "Sel", "slug": "sel" }, { "id": "d7b01a4b-5206-4bd2-b9c4-d13b95ca0edb", "name": "Beurre", "slug": "beurre" }, { "id": "304faaf8-13ec-4537-91f3-9f39a3585545", "name": "Facile", "slug": "facile" }, { "id": "6508fb05-fb60-4bed-90c4-584bd6d74cb5", "name": "Daube", "slug": "daube" }, { "id": "18ff59b6-b599-456a-896b-4b76448b08ca", "name": "Bourguignon", "slug": "bourguignon" }, { "id": "685a0d90-8de4-494e-8eb8-68e7f5d5ffbe", "name": "Vin Rouge", "slug": "vin-rouge" }, { "id": "5dedc8b5-30f5-4d6e-875f-34deefd01883", "name": "Oignon", "slug": "oignon" }, { "id": "065b79e0-6276-4ebb-9428-7018b40c55bb", "name": "Bouquet Garni", "slug": "bouquet-garni" }, { "id": "d858b1d9-2ca1-46d4-acc2-3d03f991f03f", "name": "Moyen", "slug": "moyen" }, { "id": "bded0bd8-8d41-4ec5-ad73-e0107fb60908", "name": "Boeuf Bourguignon : La Vraie Recette", "slug": "boeuf-bourguignon-la-vraie-recette" }, { "id": "7f99b04f-914a-408b-a057-511ca1125734", "name": "Carotte", "slug": "carotte" } ], "tools": [], "rating": null, "orgURL": "https://www.marmiton.org/recettes/recette_boeuf-bourguignon_18889.aspx", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T08:43:36.105722", "createdAt": "2024-01-21T08:43:36.108116", "updateAt": "2024-01-21T08:43:36.108118", "lastMade": null }, { "id": "89e63d72-7a51-4cef-b162-2e45035d0a91", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Veganes Marmor-Bananenbrot mit Erdnussbutter", "slug": "veganes-marmor-bananenbrot-mit-erdnussbutter", "image": "JSp3", "recipeYield": "14 servings", "totalTime": null, "prepTime": "15 Minutes", "cookTime": null, "performTime": "55 Minutes", "description": "Dieses einfache vegane Erdnussbutter-Schoko-Marmor-Bananenbrot Rezept enthรคlt kein ร–l und keinen raffiniernten Zucker, ist aber so fluffig, weich, saftig und lecker wie ein Kuchen! Zubereitet mit vielen gesunden Bananen, gelingt es auch glutenfrei und eignet sich perfekt zum Frรผhstรผck, als Dessert oder Snack fรผr Zwischendurch!", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://biancazapatka.com/de/erdnussbutter-schoko-bananenbrot/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T08:28:11.008440", "createdAt": "2024-01-21T08:28:11.011427", "updateAt": "2024-01-21T08:28:11.011428", "lastMade": null }, { "id": "eab64457-97ba-4d6c-871c-cb1c724ccb51", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Pasta mit Tomaten, Knoblauch und Basilikum - einfach (und) genial! - Kuechenchaotin", "slug": "pasta-mit-tomaten-knoblauch-und-basilikum-einfach-und-genial-kuechenchaotin", "image": "9QMh", "recipeYield": "", "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "Es ist kein Geheimnis: Ich mag es gerne schnell und einfach. Und ich liebe Pasta! Deshalb habe ich mich vor ein paar Wochen auf die Suche nach der perfekten, schnellen TomatensoรŸe gemacht. Es muss da drauรŸen doch irgendein Rezept geben, das (fast) genauso schnell zuzubereiten ist, wie Miracoli und dabei aber das schรถne Gefรผhl hinterlรคsst, ...", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://kuechenchaotin.de/pasta-mit-tomaten-knoblauch-basilikum/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T08:24:50.952774", "createdAt": "2024-01-21T08:24:50.955843", "updateAt": "2024-01-21T08:24:50.955845", "lastMade": null }, { "id": "12439e3d-3c1c-4dcc-9c6e-4afcea2a0542", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "test123", "slug": "test123", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T08:00:02.755328", "createdAt": "2024-01-21T08:00:02.757103", "updateAt": "2024-01-21T08:00:02.757105", "lastMade": null }, { "id": "6567f6ec-e410-49cb-a1a5-d08517184e78", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Bureeto", "slug": "bureeto", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T07:37:39.940578", "createdAt": "2024-01-21T07:37:39.942535", "updateAt": "2024-01-21T07:37:39.942537", "lastMade": null }, { "id": "f7737d17-161c-4008-88d4-dd2616778cd0", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Subway Double Cookies", "slug": "subway-double-cookies", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T07:34:53.944858", "createdAt": "2024-01-21T07:34:53.946852", "updateAt": "2024-01-21T07:34:53.946854", "lastMade": null }, { "id": "1904b717-4a8b-4de9-8909-56958875b5f4", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "qwerty12345", "slug": "qwerty12345", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T07:37:55.795675", "createdAt": "2024-01-21T07:28:05.395272", "updateAt": "2024-01-21T07:28:05.395274", "lastMade": null }, { "id": "8bdd3656-5e7e-45d3-a3c4-557390846a22", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Cheeseburger Sliders (Easy, 30-min Recipe)", "slug": "cheeseburger-sliders-easy-30-min-recipe", "image": "beGq", "recipeYield": "24 servings", "totalTime": "30 Minutes", "prepTime": "8 Minutes", "cookTime": null, "performTime": "22 Minutes", "description": "Cheeseburger Sliders are juicy, cheesy and beefy - everything we love about classic burgers! These sliders are quick and easy plus they are make-ahead and reheat really well.", "recipeCategory": [], "tags": [ { "id": "7a4ca427-642f-4428-8dc7-557ea9c8d1b4", "name": "Cheeseburger Sliders", "slug": "cheeseburger-sliders" }, { "id": "941558d2-50d5-4c9d-8890-a0258f18d493", "name": "Sliders", "slug": "sliders" } ], "tools": [], "rating": 5, "orgURL": "https://natashaskitchen.com/cheeseburger-sliders/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T07:43:24.261010", "createdAt": "2024-01-21T06:49:35.466777", "updateAt": "2024-01-21T06:49:35.466778", "lastMade": "2024-01-22T04:59:59" }, { "id": "8a30d31d-aa14-411e-af0c-6b61a94f5291", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "meatloaf", "slug": "meatloaf", "image": null, "recipeYield": "4", "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T06:37:09.426467", "createdAt": "2024-01-21T06:36:57.645658", "updateAt": "2024-01-21T06:37:09.428351", "lastMade": null }, { "id": "f2f7880b-1136-436f-91b7-129788d8c117", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Richtig rheinischer Sauerbraten", "slug": "richtig-rheinischer-sauerbraten", "image": "kCBh", "recipeYield": "4 servings", "totalTime": "3 Hours 20 Minutes", "prepTime": "1 Hour", "cookTime": null, "performTime": "2 Hours 20 Minutes", "description": "Richtig rheinischer Sauerbraten - Rheinischer geht's nicht! รœber 536 Bewertungen und fรผr kรถstlich befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps!", "recipeCategory": [], "tags": [], "tools": [], "rating": 3, "orgURL": "https://www.chefkoch.de/rezepte/937641199437984/Richtig-rheinischer-Sauerbraten.html", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T05:37:55.419788", "createdAt": "2024-01-21T05:24:03.402973", "updateAt": "2024-01-21T05:37:55.422471", "lastMade": null }, { "id": "cf634591-0f82-4254-8e00-2f7e8b0c9022", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Orientalischer Gemรผse-Hรคhnchen Eintopf", "slug": "orientalischer-gemuse-hahnchen-eintopf", "image": "kpBx", "recipeYield": "6 servings", "totalTime": "35 Minutes", "prepTime": "15 Minutes", "cookTime": null, "performTime": "20 Minutes", "description": "Orientalischer Gemรผse-Hรคhnchen Eintopf. รœber 164 Bewertungen und fรผr kรถstlich befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps! Jetzt entdecken und ausprobieren!", "recipeCategory": [], "tags": [ { "id": "518f3081-a919-4c80-9cad-75ffbd0e73d3", "name": "Gemรผse", "slug": "gemuse" }, { "id": "a3fff625-1902-4112-b169-54aec4f52ea7", "name": "Hauptspeise", "slug": "hauptspeise" }, { "id": "4c79c0b7-c2d0-415a-b5cf-138cfce92c7e", "name": "Einfach", "slug": "einfach" }, { "id": "1f87d43d-7d9d-4806-993a-fdb89117d64e", "name": "Fleisch", "slug": "fleisch" }, { "id": "7caa64df-c65d-4fb0-9075-b788e6a05e1d", "name": "Geflรผgel", "slug": "geflugel" }, { "id": "38d18d57-d817-491e-94f8-da923d2c540e", "name": "Eintopf", "slug": "eintopf" }, { "id": "398fbd98-4175-4652-92a4-51e55482dc9b", "name": "Schmoren", "slug": "schmoren" }, { "id": "ec303c13-a4f7-4de3-8a4f-d13b72ddd500", "name": "Hรผlsenfrรผchte", "slug": "hulsenfruchte" } ], "tools": [], "rating": null, "orgURL": "https://www.chefkoch.de/rezepte/2307761368177614/Orientalischer-Gemuese-Haehnchen-Eintopf.html", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T04:58:54.661618", "createdAt": "2024-01-21T04:58:54.665601", "updateAt": "2024-01-21T04:58:54.665603", "lastMade": null }, { "id": "05208856-d273-4cc9-bcfa-e0215d57108d", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "test 20240121", "slug": "test-20240121", "image": null, "recipeYield": "4", "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T04:56:20.569413", "createdAt": "2024-01-21T04:55:49.820247", "updateAt": "2024-01-21T04:56:20.571564", "lastMade": null }, { "id": "145eeb05-781a-4eb0-a656-afa8bc8c0164", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Loempia bowl", "slug": "loempia-bowl", "image": "McEx", "recipeYield": "", "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "Zet in 20 minuten deze lekkere loempia bowl in elkaar. Makkelijk, snel en weer eens wat anders. Lekker met prei, sojasaus en kipgehakt.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.lekkerensimpel.com/loempia-bowl/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T04:39:48.558572", "createdAt": "2024-01-21T04:39:48.560422", "updateAt": "2024-01-21T04:39:48.560424", "lastMade": null }, { "id": "5c6532aa-ad84-424c-bc05-c32d50430fe4", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "5 Ingredient Chocolate Mousse", "slug": "5-ingredient-chocolate-mousse", "image": "bzqo", "recipeYield": "6 servings", "totalTime": null, "prepTime": "10 Minutes", "cookTime": null, "performTime": null, "description": "Chocolate Mousse with Aquafaba, to make the fluffiest of mousses. Whip up this dessert in literally five minutes and chill in the fridge until you're ready to serve!", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://thehappypear.ie/aquafaba-chocolate-mousse/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T06:06:26.305680", "createdAt": "2024-01-21T04:14:34.624708", "updateAt": "2024-01-21T06:06:26.308017", "lastMade": null }, { "id": "f2e684f2-49e0-45ee-90de-951344472f1c", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Der perfekte Pfannkuchen - gelingt einfach immer", "slug": "der-perfekte-pfannkuchen-gelingt-einfach-immer", "image": "KGK6", "recipeYield": "4 servings", "totalTime": "15 Minutes", "prepTime": "5 Minutes", "cookTime": null, "performTime": "10 Minutes", "description": "Der perfekte Pfannkuchen - gelingt einfach immer - von Kindern geliebt und auch fรผr Kochneulinge super geeignet. รœber 2529 Bewertungen und fรผr vorzรผglich befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps!", "recipeCategory": [], "tags": [ { "id": "4ec445c6-fc2f-4a1e-b666-93435a46ec42", "name": "Schnell", "slug": "schnell" }, { "id": "4c79c0b7-c2d0-415a-b5cf-138cfce92c7e", "name": "Einfach", "slug": "einfach" }, { "id": "66bc0f60-ff95-44e4-afef-8437b2c2d9af", "name": "Backen", "slug": "backen" }, { "id": "48d2a71c-ed17-4c07-bf9f-bc9216936f54", "name": "Kuchen", "slug": "kuchen" }, { "id": "b2821b25-94ea-4576-b488-276331b3d76e", "name": "Kinder", "slug": "kinder" }, { "id": "fee5e626-792c-479d-a265-81a0029047f2", "name": "Mehlspeisen", "slug": "mehlspeisen" } ], "tools": [], "rating": null, "orgURL": "https://www.chefkoch.de/rezepte/1208161226570428/Der-perfekte-Pfannkuchen-gelingt-einfach-immer.html", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T04:06:40.503968", "createdAt": "2024-01-21T04:04:43.296547", "updateAt": "2024-01-21T04:06:40.506886", "lastMade": null }, { "id": "cf239441-b75d-4dea-a48e-9d99b7cb5842", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Dinkel-Sauerteigbrot", "slug": "dinkel-sauerteigbrot", "image": "yNDq", "recipeYield": "1", "totalTime": "24h", "prepTime": "1h", "cookTime": null, "performTime": "35min", "description": "Fรผr alle Liebhaber von Dinkel ist dieses Dinkel-Sauerteigbrot ein absolutes Muss. Aussen knusprig und innen herrlich feucht und grossporig.", "recipeCategory": [ { "id": "6d54ca14-eb71-4d3a-933d-5e88f68edb68", "name": "Brot", "slug": "brot" } ], "tags": [ { "id": "0f80c5d5-d1ee-41ac-a949-54a76b446459", "name": "Sourdough", "slug": "sourdough" } ], "tools": [ { "id": "1170e609-20d3-45b8-b0c7-3a4cfa614e88", "name": "Backofen", "slug": "backofen", "onHand": false } ], "rating": null, "orgURL": "https://www.besondersgut.ch/dinkel-sauerteigbrot/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T03:57:41.588112", "createdAt": "2024-01-21T03:44:30.512149", "updateAt": "2024-01-21T03:44:30.512151", "lastMade": null }, { "id": "2673eb90-6d78-4b95-af36-5db8c8a6da37", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "test 234234", "slug": "test-234234", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T04:07:55.643655", "createdAt": "2024-01-21T03:14:59.852966", "updateAt": "2024-01-21T04:07:55.646291", "lastMade": null }, { "id": "0a723c54-af53-40e9-a15f-c87aae5ac688", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "test 243", "slug": "test-243", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T02:20:32.570339", "createdAt": "2024-01-21T02:20:32.572744", "updateAt": "2024-01-21T02:20:32.572746", "lastMade": null }, { "id": "9d553779-607e-471b-acf3-84e6be27b159", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Einfacher Nudelauflauf mit Brokkoli", "slug": "einfacher-nudelauflauf-mit-brokkoli", "image": "nOPT", "recipeYield": "4 servings", "totalTime": "35 Minutes", "prepTime": "15 Minutes", "cookTime": null, "performTime": "20 Minutes", "description": "Einfacher Nudelauflauf mit Brokkoli, Sahnesauce und extra Kรคse. Dieses vegetarische 5 Zutaten Rezept ist super schnell gemacht und SO gut!", "recipeCategory": [], "tags": [ { "id": "78318c97-75c7-4d06-95b6-51ef8f4a0257", "name": "< 4 Hours", "slug": "4-hours" } ], "tools": [], "rating": null, "orgURL": "https://kochkarussell.com/einfacher-nudelauflauf-brokkoli/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T03:04:25.718367", "createdAt": "2024-01-21T02:13:11.323363", "updateAt": "2024-01-21T03:04:25.721489", "lastMade": null }, { "id": "9d3cb303-a996-4144-948a-36afaeeef554", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Tarta cytrynowa z bezฤ…", "slug": "tarta-cytrynowa-z-beza", "image": "vxuL", "recipeYield": "8 servings", "totalTime": "1 Hour", "prepTime": "1 Hour", "cookTime": null, "performTime": null, "description": "Tarta cytrynowa z bezฤ…\r\nLekko kwaล›na masa cytrynowa, ktรณra rรณwnowaลผy sล‚odycz bezy โ€“ jeล›li to brzmi jak ciasto, ktรณre chฤ™tnie zjesz na deser, wyprรณbuj nasz przepis! Tarta z bezฤ… i masฤ… cytrynowฤ… nawiฤ…zuje do kuchni francuskiej, znanej z wyล›mienitych quiche i tart. Tym razem proponujemy jฤ… w wersji na sล‚odko.\r\nDla kogo?\r\nLubisz ciasta o delikatnym, kruchym spodzie? Posmakuje ci tarta cytrynowa z bezฤ…. Przepis jest wprost stworzony dla miล‚oล›nikรณw lekko cierpkiego smaku cytrusรณw w wypiekach. Tarta cytrynowa z bezฤ… zdecydowanie nie jest mdล‚ym ciastem!\r\nNa jakฤ… okazjฤ™?\r\nNa rodzinnym stole, zamiast zwykล‚ego sernika lub ciasta czekoladowego, moลผe stanฤ…ฤ‡ wล‚aล›nie tarta cytrynowa z bezฤ…. Przepis ten skradnie serce twojej przyjaciรณล‚ki lub przyjaciela, ktรณrego zaprosisz na herbatฤ™ i ciasto. Naszym zdaniem ma teลผ duลผฤ… szansฤ™ staฤ‡ siฤ™ hitem urodzinowej imprezy, gdy pojawi siฤ™ tuลผ obok tortu. Tarta cytrynowa z bezฤ… smakuje doskonale w okresie ล›wiฤ…tecznym โ€“ upiecz jฤ… na Wielkanoc oprรณcz tradycyjnego mazurka i baby.\r\nCzy wiesz, ลผe?\r\nZastanawiasz siฤ™, czy kupione kilka dni temu cytryny moลผesz przeznaczyฤ‡ do przepisu na tartฤ™? Jest wiele sposobรณw na przedล‚uลผenie ich ล›wieลผoล›ci. Niektรณrzy trzymajฤ… je w lodรณwce, w torebce zamykanej strunowo. Ciekawostka: im mocniej pachnie cytryna, tym kwaล›niejsza bฤ™dzie w smaku.\r\nDla urozmaicenia:\r\nMartwisz siฤ™ o to, czy kaลผda warstwa tarty odpowiednio siฤ™ upiecze? Mamy na to sposรณb. Piecz jฤ… w piekarniku bez termoobiegu, ustawionym na grzanie gรณraโ€“dรณล‚.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.przepisy.pl/przepis/tarta-cytrynowa-z-beza", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T01:27:12.082247", "createdAt": "2024-01-21T01:27:12.088594", "updateAt": "2024-01-21T01:27:12.088596", "lastMade": null }, { "id": "77f05a49-e869-4048-aa62-0d8a1f5a8f1c", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Martins test Recipe", "slug": "martins-test-recipe", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T01:26:38.793372", "createdAt": "2024-01-21T01:26:38.802872", "updateAt": "2024-01-21T01:26:38.802874", "lastMade": null }, { "id": "75a90207-9c10-4390-a265-c47a4b67fd69", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Muffinki czekoladowe", "slug": "muffinki-czekoladowe", "image": "xP1Q", "recipeYield": "12", "totalTime": null, "prepTime": "25 Minutes", "cookTime": null, "performTime": "30 Minutes", "description": "Muffinki czekoladowe to przepyszny i bardzo prosty w przygotowaniu mini deser pieczony w papilotkach. Przepis na najlepsze, bardzo wilgotne i puszyste muffinki czekoladowe polecam kaลผdemu miล‚oล›nikowi czekolady.", "recipeCategory": [], "tags": [ { "id": "ed2eed99-1285-4507-b5cb-b3047d64855c", "name": "Muffinki Czekoladowe", "slug": "muffinki-czekoladowe" }, { "id": "e94d5223-5337-4e1b-b36e-7968c8823176", "name": "Babeczki I Muffiny", "slug": "babeczki-i-muffiny" }, { "id": "2d06a44a-331a-4922-abb4-8047ee5e7c1c", "name": "Sylwester", "slug": "sylwester" }, { "id": "c78edd8c-c96b-43fb-86c0-917ea5a08ac7", "name": "Wegetariaล„ska", "slug": "wegetarianska" } ], "tools": [], "rating": null, "orgURL": "https://aniagotuje.pl/przepis/muffinki-czekoladowe", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T01:25:53.529639", "createdAt": "2024-01-21T01:25:03.838184", "updateAt": "2024-01-21T01:25:53.534515", "lastMade": null }, { "id": "4320ba72-377b-4657-8297-dce198f24cdf", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "My Test Recipe", "slug": "my-test-recipe", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T01:22:10.331488", "createdAt": "2024-01-21T01:22:10.361617", "updateAt": "2024-01-21T01:22:10.361618", "lastMade": null }, { "id": "98dac844-31ee-426a-b16c-fb62a5dd2816", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "My Test Receipe", "slug": "my-test-receipe", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T01:22:10.309993", "createdAt": "2024-01-21T01:22:10.357806", "updateAt": "2024-01-21T01:22:10.357807", "lastMade": null }, { "id": "c3c8f207-c704-415d-81b1-da9f032cf52f", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Patates douces au four", "slug": "patates-douces-au-four", "image": "r1ck", "recipeYield": "", "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "Rรฉgalez vous avec ces patates douces cuites au four et lรฉgรจrement parfumรฉes au thym et au piment. Super bon avec un poulet rรดti par exemple.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.papillesetpupilles.fr/2018/10/patates-douces-au-four.html/", "dateAdded": "2024-01-21", "dateUpdated": "2024-01-21T00:34:57.419501", "createdAt": "2024-01-21T00:34:57.422137", "updateAt": "2024-01-21T00:34:57.422139", "lastMade": null }, { "id": "1edb2f6e-133c-4be0-b516-3c23625a97ec", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Easy Homemade Pizza Dough", "slug": "easy-homemade-pizza-dough", "image": "gD94", "recipeYield": "2 servings", "totalTime": "2 Hours 30 Minutes", "prepTime": "2 Hours 15 Minutes", "cookTime": null, "performTime": "15 Minutes", "description": "Follow these basic instructions for a thick, crisp, and chewy pizza crust at home. The recipe yields enough pizza dough for two 12-inch pizzas and you can freeze half of the dough for later. Close to 2 pounds of dough total.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://sallysbakingaddiction.com/homemade-pizza-crust-recipe/", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T22:41:09.255367", "createdAt": "2024-01-20T22:41:09.258070", "updateAt": "2024-01-20T22:41:09.258071", "lastMade": null }, { "id": "48f39d27-4b8e-4c14-bf36-4e1e6497e75e", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "All-American Beef Stew Recipe", "slug": "all-american-beef-stew-recipe", "image": "356X", "recipeYield": "6 servings", "totalTime": "3 Hours 15 Minutes", "prepTime": "5 Minutes", "cookTime": null, "performTime": "3 Hours 10 Minutes", "description": "This All-American beef stew recipe includes tender beef coated in a rich, intense sauce and vegetables that bring complementary texture and flavor.", "recipeCategory": [], "tags": [ { "id": "78318c97-75c7-4d06-95b6-51ef8f4a0257", "name": "< 4 Hours", "slug": "4-hours" } ], "tools": [], "rating": null, "orgURL": "https://www.seriouseats.com/all-american-beef-stew-recipe", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-21T03:04:45.606075", "createdAt": "2024-01-20T20:41:29.266390", "updateAt": "2024-01-21T03:04:45.609563", "lastMade": null }, { "id": "6530ea6e-401e-4304-8a7a-12162ddf5b9c", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Serious Eats' Halal Cart-Style Chicken and Rice With White Sauce", "slug": "serious-eats-halal-cart-style-chicken-and-rice-with-white-sauce", "image": "4Sys", "recipeYield": "4 servings", "totalTime": "2 Hours 15 Minutes", "prepTime": "20 Minutes", "cookTime": null, "performTime": "55 Minutes", "description": "This utterly faithful recipe perfectly recreates a New York City halal-cart classic: Chicken and Rice with White Sauce. The chicken is marinated with herbs, lemon, and spices; the rice golden; the sauce, as white and creamy as ever.", "recipeCategory": [], "tags": [ { "id": "d7aea128-0e7b-4e0c-a236-e500717701bb", "name": "Rice", "slug": "rice" }, { "id": "1dd3541c-ed6b-4a25-b829-9a71358409ef", "name": "Chicken", "slug": "chicken" }, { "id": "eb871b57-ea46-4cb5-88a5-98064514e593", "name": "Chicken And Rice", "slug": "chicken-and-rice" }, { "id": "2b0a0ed2-e799-4ab2-8a24-d5ce15827a8e", "name": "Cook The Book", "slug": "cook-the-book" }, { "id": "e6783087-0cee-4f31-b588-268380f75335", "name": "Halal", "slug": "halal" }, { "id": "a2d99845-8bd0-4a2a-9a56-f8a34f51039e", "name": "Middle Eastern", "slug": "middle-eastern" }, { "id": "6b7b95b0-b3f8-467f-857d-ef036009d5e1", "name": "New York City", "slug": "new-york-city" }, { "id": "6bd6c577-9d00-411f-88de-b8679c37ac58", "name": "Serious Eats Book", "slug": "serious-eats-book" }, { "id": "d77a2071-43ae-40b1-854d-ae995a766fba", "name": "Street Food", "slug": "street-food" } ], "tools": [], "rating": 5, "orgURL": "https://www.seriouseats.com/serious-eats-halal-cart-style-chicken-and-rice-white-sauce-recipe", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T20:32:14.736668", "createdAt": "2024-01-20T20:25:43.655397", "updateAt": "2024-01-20T20:32:14.740947", "lastMade": null }, { "id": "c496cf9c-1ece-448a-9d3f-ef772f078a4e", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Schnelle Kรคsespรคtzle", "slug": "schnelle-kasespatzle", "image": "8goY", "recipeYield": "4 servings", "totalTime": "40 Minutes", "prepTime": "10 Minutes", "cookTime": null, "performTime": "30 Minutes", "description": "Schnelle Kรคsespรคtzle. รœber 1201 Bewertungen und fรผr sehr gut befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps! Jetzt entdecken und ausprobieren!", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.chefkoch.de/rezepte/1062121211526182/Schnelle-Kaesespaetzle.html", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T18:31:51.652135", "createdAt": "2024-01-20T18:31:51.654414", "updateAt": "2024-01-20T18:31:51.654415", "lastMade": null }, { "id": "49aa6f42-6760-4adf-b6cd-59592da485c3", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "taco", "slug": "taco", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T17:25:27.960087", "createdAt": "2024-01-20T17:25:27.961639", "updateAt": "2024-01-20T17:25:27.961641", "lastMade": null }, { "id": "6402a253-2baa-460d-bf4f-b759bb655588", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Vodkapasta", "slug": "vodkapasta", "image": "z8BB", "recipeYield": "4 servings", "totalTime": "30 Minutes", "prepTime": null, "cookTime": null, "performTime": null, "description": "Har du inte provat denna trendiga pasta รคr det hรถg tid! Enkel och grรคddig vardagspasta med smak av tomat och chili och en hemlig ingrediens som ger denna rรคtt extra sting, nรคmligen vodka.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.ica.se/recept/vodkapasta-729011/", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-21T01:58:25.398326", "createdAt": "2024-01-20T15:35:35.492234", "updateAt": "2024-01-21T01:58:25.400556", "lastMade": "2024-01-21T22:59:59" }, { "id": "4f54e9e1-f21d-40ec-a135-91e633dfb733", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Vodkapasta2", "slug": "vodkapasta2", "image": "Nqpz", "recipeYield": "4 servings", "totalTime": "30 Minutes", "prepTime": null, "cookTime": null, "performTime": null, "description": "Har du inte provat denna trendiga pasta รคr det hรถg tid! Enkel och grรคddig vardagspasta med smak av tomat och chili och en hemlig ingrediens som ger denna rรคtt extra sting, nรคmligen vodka.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.ica.se/recept/vodkapasta-729011/", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T17:35:32.077132", "createdAt": "2024-01-20T15:35:35.492234", "updateAt": "2024-01-20T17:24:19.620474", "lastMade": "2024-01-21T04:59:59" }, { "id": "e1a3edb0-49a0-49a3-83e3-95554e932670", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Rub", "slug": "rub", "image": null, "recipeYield": "1", "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T13:55:15.172744", "createdAt": "2024-01-20T13:53:34.298477", "updateAt": "2024-01-20T13:55:15.174780", "lastMade": null }, { "id": "1a0f4e54-db5b-40f1-ab7e-166dab5f6523", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Banana Bread Chocolate Chip Cookies", "slug": "banana-bread-chocolate-chip-cookies", "image": "03XS", "recipeYield": "", "totalTime": null, "prepTime": "10 Minutes", "cookTime": null, "performTime": "15 Minutes", "description": "Tender and moist, these chocolate chip cookies were a HUGE hit in the Test Kitchen. They're like banana bread in a cookie form. Outside, there are crisp edges like a cookie. Inside, though, it's soft like banana bread. We opted to add chocolate chips and nuts. It's a classic flavor combination in banana bread and works just as well in these cookies.", "recipeCategory": [], "tags": [ { "id": "6a59e597-9aff-4716-961f-f236b93c34cc", "name": "Cookies", "slug": "cookies" }, { "id": "1249f351-4b45-455d-b5f0-64eb0124a41e", "name": "Banana", "slug": "banana" }, { "id": "81a446b9-4d8d-451d-a472-486987fad85a", "name": "Bread", "slug": "bread" }, { "id": "c2536221-b1c3-4402-a104-46c632663748", "name": "Chocolate Chip", "slug": "chocolate-chip" }, { "id": "c026c67f-0211-419f-9db8-7cd4c7608589", "name": "Cookie", "slug": "cookie" }, { "id": "2f9e0bf5-02e2-4bdc-9b5d-a16d2fec885b", "name": "American", "slug": "american" }, { "id": "2a7c5386-5d26-44fa-8a08-81747ee7f132", "name": "Bake", "slug": "bake" } ], "tools": [], "rating": null, "orgURL": "https://www.justapinch.com/recipes/dessert/cookies/banana-bread-chocolate-chip-cookies.html", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T13:52:21.817496", "createdAt": "2024-01-20T13:51:46.727976", "updateAt": "2024-01-20T13:52:21.821329", "lastMade": null }, { "id": "447acae6-3424-4c16-8c26-c09040ad8041", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Cauliflower Bisque Recipe with Cheddar Cheese", "slug": "cauliflower-bisque-recipe-with-cheddar-cheese", "image": "KuXV", "recipeYield": "", "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "Hello friends, today I'm going to share with you how to make a delicious soup/bisque. A Cauliflower Bisques Recipe with Cheddar Cheese. One of my favorite soups to make when its cold outside. We will be continuing the soup collection so let me know what you think in the comments below!", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://chefjeanpierre.com/recipes/soups/creamy-cauliflower-bisque/", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T13:45:10.848270", "createdAt": "2024-01-20T13:44:59.990057", "updateAt": "2024-01-20T13:45:10.851647", "lastMade": null }, { "id": "864136a3-27b0-4f3b-a90f-486f42d6df7a", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Prova ", "slug": "prova", "image": null, "recipeYield": "", "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T13:44:41.788771", "createdAt": "2024-01-20T13:42:56.178473", "updateAt": "2024-01-20T13:42:56.178475", "lastMade": null }, { "id": "c7ccf4c7-c5f4-4191-a79b-1a49d068f6a4", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "pate au beurre (1)", "slug": "pate-au-beurre-1", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T13:17:47.586659", "createdAt": "2024-01-20T13:17:47.592852", "updateAt": "2024-01-20T13:17:47.592854", "lastMade": null }, { "id": "d01865c3-0f18-4e8d-84c0-c14c345fdf9c", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "pate au beurre", "slug": "pate-au-beurre", "image": null, "recipeYield": null, "totalTime": null, "prepTime": null, "cookTime": null, "performTime": null, "description": "", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": null, "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T13:16:49.702039", "createdAt": "2024-01-20T13:16:49.704498", "updateAt": "2024-01-20T13:16:49.704500", "lastMade": null }, { "id": "2cec2bb2-19b6-40b8-a36c-1a76ea29c517", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Sous Vide Cheesecake Recipe", "slug": "sous-vide-cheesecake-recipe", "image": "tmwm", "recipeYield": "4 servings", "totalTime": "2 Hours 10 Minutes", "prepTime": "10 Minutes", "cookTime": null, "performTime": "1 Hour 30 Minutes", "description": "Individual foolproof mason jar cheesecakes with strawberry compote and a Graham cracker crumble topping. Foolproof, simple, and delicious.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://saltpepperskillet.com/recipes/sous-vide-cheesecake/", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T13:07:19.939939", "createdAt": "2024-01-20T13:07:19.946260", "updateAt": "2024-01-20T13:07:19.946263", "lastMade": null }, { "id": "8e0e4566-9caf-4c2e-a01c-dcead23db86b", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "The Bomb Mini Cheesecakes", "slug": "the-bomb-mini-cheesecakes", "image": "xCYc", "recipeYield": "10 servings", "totalTime": "1 Hour 30 Minutes", "prepTime": "30 Minutes", "cookTime": null, "performTime": null, "description": "This is a variation of the several cheese cake recipes that have been used for sous vide. These make a fabulous 4oz cheese cake for dessert. Garnish with a raspberry or blackberry and impress your family and friends. Theyโ€™ll keep great in the fridge for a week easily.", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://recipes.anovaculinary.com/recipe/the-bomb-cheesecakes", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T13:05:24.037000", "createdAt": "2024-01-20T13:05:24.039558", "updateAt": "2024-01-20T13:05:24.039560", "lastMade": null }, { "id": "a051eafd-9712-4aee-a8e5-0cd10a6772ee", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Tagliatelle al Salmone", "slug": "tagliatelle-al-salmone", "image": "qzaN", "recipeYield": "4 servings", "totalTime": "25 Minutes", "prepTime": "10 Minutes", "cookTime": null, "performTime": "15 Minutes", "description": "Tagliatelle al Salmone - wie beim Italiener. รœber 1568 Bewertungen und fรผr vorzรผglich befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps!", "recipeCategory": [], "tags": [ { "id": "518f3081-a919-4c80-9cad-75ffbd0e73d3", "name": "Gemรผse", "slug": "gemuse" }, { "id": "a3fff625-1902-4112-b169-54aec4f52ea7", "name": "Hauptspeise", "slug": "hauptspeise" }, { "id": "4ec445c6-fc2f-4a1e-b666-93435a46ec42", "name": "Schnell", "slug": "schnell" }, { "id": "4c79c0b7-c2d0-415a-b5cf-138cfce92c7e", "name": "Einfach", "slug": "einfach" }, { "id": "6f349f84-655b-4740-8fa6-ed2716f17df7", "name": "Gekocht", "slug": "gekocht" }, { "id": "77bc190f-dc6d-440b-aa82-f32bfe836018", "name": "Europa", "slug": "europa" }, { "id": "7997c911-14ee-4e76-9895-debad7949ae2", "name": "Pasta", "slug": "pasta" }, { "id": "04d2aea8-fc9a-4f9b-9a87-8f15189ab6f9", "name": "Nudeln", "slug": "nudeln" }, { "id": "c56cd402-3ac7-479e-b96c-d4b64d177dd3", "name": "Fisch", "slug": "fisch" }, { "id": "88015586-0885-4397-9098-039ae1109cd1", "name": "Italien", "slug": "italien" }, { "id": "024b30ca-53cb-4243-ba6b-d830610f2f48", "name": "Saucen", "slug": "saucen" } ], "tools": [], "rating": null, "orgURL": "https://www.chefkoch.de/rezepte/2109501340136606/Tagliatelle-al-Salmone.html", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T13:02:16.760030", "createdAt": "2024-01-20T13:02:16.763188", "updateAt": "2024-01-20T13:02:16.763189", "lastMade": null }, { "id": "093d51e9-0823-40ad-8e0e-a1d5790dd627", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Death by Chocolate", "slug": "death-by-chocolate", "image": "K9qP", "recipeYield": "1 serving", "totalTime": null, "prepTime": "25 Minutes", "cookTime": null, "performTime": "25 Minutes", "description": "Hier ist der Name Programm: Den \"Tod durch Schokolade\" mรผsst ihr zwar hoffentlich nicht erleiden, aber Chocoholics werden diesen Kuchen lieben!", "recipeCategory": [], "tags": [], "tools": [], "rating": null, "orgURL": "https://www.backenmachtgluecklich.de/rezepte/death-by-chocolate-kuchen.html", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T12:58:50.926224", "createdAt": "2024-01-20T12:58:50.928810", "updateAt": "2024-01-20T12:58:50.928812", "lastMade": null }, { "id": "2d1f62ec-4200-4cfd-987e-c75755d7607c", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Palak Dal Rezept aus Indien", "slug": "palak-dal-rezept-aus-indien", "image": "jKQ3", "recipeYield": "4 servings", "totalTime": "30 Minutes", "prepTime": "10 Minutes", "cookTime": null, "performTime": "20 Minutes", "description": "Palak Dal ist in Grunde genommen Spinat (Palak) mit Linsen oder anderen Hรผlsenfrรผchten (Dal) vom indischen Subkontinent. Es kommen noch Zwiebeln, Tomaten und einige indische Gewรผrze dazu. Damit ist das Palak Dal ein super einfaches und zugleich veganes indisches Rezept. Es schmeckt hervorragend mit Naan-Brot und etwas gewรผrztem Joghurt.", "recipeCategory": [], "tags": [ { "id": "38d18d57-d817-491e-94f8-da923d2c540e", "name": "Eintopf", "slug": "eintopf" }, { "id": "43f12acf-a8df-45bd-b33d-20bfe7a7e607", "name": "Indisch", "slug": "indisch" }, { "id": "ede834ac-ab8f-4c79-8a42-dfa0270fd18b", "name": "Linsen", "slug": "linsen" }, { "id": "2b6283e2-b8e0-4b3d-90d9-66f322ca77aa", "name": "Spinat", "slug": "spinat" } ], "tools": [], "rating": null, "orgURL": "https://www.fernweh-koch.de/palak-dal-indischer-spinat-linsen-rezept/", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T12:46:54.570376", "createdAt": "2024-01-20T12:46:54.573341", "updateAt": "2024-01-20T12:46:54.573342", "lastMade": null }, { "id": "973dc36d-1661-49b4-ad2d-0b7191034fb3", "userId": "1ce8b5fe-04e8-4b80-aab1-d92c94685c6d", "groupId": "0bf60b2e-ca89-42a9-94d4-8f67ca72b157", "householdId": "cd2bb87f-5e4c-4dc6-8477-af9537200014", "name": "Tortelline - รก la Romana", "slug": "tortelline-a-la-romana", "image": "rkSn", "recipeYield": "4 servings", "totalTime": "30 Minutes", "prepTime": "30 Minutes", "cookTime": null, "performTime": null, "description": "Tortelline - รก la Romana. รœber 13 Bewertungen und fรผr vorzรผglich befunden. Mit โ–บ Portionsrechner โ–บ Kochbuch โ–บ Video-Tipps! Jetzt entdecken und ausprobieren!", "recipeCategory": [], "tags": [ { "id": "4c79c0b7-c2d0-415a-b5cf-138cfce92c7e", "name": "Einfach", "slug": "einfach" }, { "id": "7997c911-14ee-4e76-9895-debad7949ae2", "name": "Pasta", "slug": "pasta" }, { "id": "04d2aea8-fc9a-4f9b-9a87-8f15189ab6f9", "name": "Nudeln", "slug": "nudeln" } ], "tools": [], "rating": null, "orgURL": "https://www.chefkoch.de/rezepte/74441028021809/Tortelline-a-la-Romana.html", "dateAdded": "2024-01-20", "dateUpdated": "2024-01-20T13:44:42.215472", "createdAt": "2024-01-20T12:29:47.825708", "updateAt": "2024-01-20T13:44:42.218635", "lastMade": "2024-01-21T20:59:59" } ], "next": "/recipes?page=2&perPage=50&orderDirection=desc", "previous": null } joostlek-python-mealie-f3a7029/tests/fixtures/scrape_recipe.json000066400000000000000000000000321473452740400251710ustar00rootroot00000000000000"original-sacher-torte-2" joostlek-python-mealie-f3a7029/tests/fixtures/shopping_items.json000066400000000000000000000071471473452740400254330ustar00rootroot00000000000000{ "page": 1, "per_page": 1000, "total": 3, "total_pages": 1, "items": [ { "quantity": 2.0, "unit": null, "food": null, "note": "Apples", "isFood": false, "disableAmount": true, "display": "2 Apples", "shoppingListId": "9ce096fe-ded2-4077-877d-78ba450ab13e", "checked": false, "position": 0, "foodId": null, "labelId": null, "unitId": null, "extras": {}, "id": "f45430f7-3edf-45a9-a50f-73bb375090be", "label": null, "recipeReferences": [], "createdAt": "2024-06-25T10:45:03.362623", "updateAt": "2024-06-25T11:57:22.412650" }, { "quantity": 1.0, "unit": { "id": "7bf539d4-fc78-48bc-b48e-c35ccccec34a", "name": "can", "pluralName": null, "description": "", "extras": {}, "fraction": true, "abbreviation": "", "pluralAbbreviation": "", "useAbbreviation": false, "aliases": [], "createdAt": "2024-05-14T14:45:02.464122", "updateAt": "2024-05-14T14:45:02.464124" }, "food": { "id": "09322430-d24c-4b1a-abb6-22b6ed3a88f5", "name": "acorn squash", "pluralName": null, "description": "", "extras": {}, "labelId": null, "aliases": [], "label": null, "createdAt": "2024-05-14T14:45:04.454134", "updateAt": "2024-05-14T14:45:04.454141" }, "note": "", "isFood": true, "disableAmount": false, "display": "1 can acorn squash", "shoppingListId": "9ce096fe-ded2-4077-877d-78ba450ab13e", "checked": false, "position": 1, "foodId": "09322430-d24c-4b1a-abb6-22b6ed3a88f5", "labelId": null, "unitId": "7bf539d4-fc78-48bc-b48e-c35ccccec34a", "extras": {}, "id": "84d8fd74-8eb0-402e-84b6-71f251bfb7cc", "label": null, "recipeReferences": [], "createdAt": "2024-06-25T10:45:14.547922", "updateAt": "2024-06-25T10:45:14.547925" }, { "quantity": 0.0, "unit": null, "food": { "id": "96801494-4e26-4148-849a-8155deb76327", "name": "aubergine", "pluralName": null, "description": "", "extras": {}, "labelId": null, "aliases": [], "label": null, "createdAt": "2024-05-14T14:45:03.868792", "updateAt": "2024-05-14T14:45:03.868794" }, "note": "", "isFood": true, "disableAmount": false, "display": "aubergine", "shoppingListId": "9ce096fe-ded2-4077-877d-78ba450ab13e", "checked": false, "position": 2, "foodId": "96801494-4e26-4148-849a-8155deb76327", "labelId": null, "unitId": null, "extras": {}, "id": "69913b9a-7c75-4935-abec-297cf7483f88", "label": null, "recipeReferences": [], "createdAt": "2024-06-25T11:56:59.656699", "updateAt": "2024-06-25T11:56:59.656701" } ], "next": null, "previous": null } joostlek-python-mealie-f3a7029/tests/fixtures/shopping_lists.json000066400000000000000000001146571473452740400254550ustar00rootroot00000000000000{ "page": 1, "per_page": 50, "total": 3, "total_pages": 1, "items": [ { "name": "Supermarket", "extras": {}, "createdAt": "2024-06-17T11:01:54.267314", "updateAt": "2024-06-22T10:22:13.555389", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "userId": "90b03954-00e1-46de-9520-f0305022b84f", "id": "27edbaab-2ec6-441f-8490-0283ea77585f", "recipeReferences": [], "labelSettings": [ { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "0f63545a-606a-47ea-a784-452d45de6158", "position": 0, "id": "ad5f48b0-5b26-4c2d-a2aa-79b0beae1e42", "label": { "name": "Alcohol", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "0f63545a-606a-47ea-a784-452d45de6158" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "0c2d6111-9837-4319-acb5-490a32979993", "position": 1, "id": "c9b8289a-6693-4bec-9841-d7d08c3b240b", "label": { "name": "Baked Goods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "0c2d6111-9837-4319-acb5-490a32979993" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "3922802c-8e8c-47d4-9c68-e60b0a1338b6", "position": 2, "id": "9be06f8a-6c23-476b-a8cc-334884bcdd40", "label": { "name": "Beverages", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "3922802c-8e8c-47d4-9c68-e60b0a1338b6" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "4111bfff-d834-4e8c-88ed-5eff761e06db", "position": 3, "id": "47bc36ae-1ee4-40be-ad68-ad8662c26cae", "label": { "name": "Canned Goods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "4111bfff-d834-4e8c-88ed-5eff761e06db" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "24fa2836-25e8-44af-b497-ad0d428a7f78", "position": 4, "id": "ad41f42c-08c3-49ef-8b96-dc1740ec95b6", "label": { "name": "Condiments", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "24fa2836-25e8-44af-b497-ad0d428a7f78" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "20a735de-c75b-4fdb-abaf-b8d71ef192f8", "position": 5, "id": "5514842f-8c05-4003-a42d-7a5a70d80148", "label": { "name": "Confectionary", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "20a735de-c75b-4fdb-abaf-b8d71ef192f8" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "71178428-70aa-4491-b5b4-b8d93e7b04cf", "position": 6, "id": "0465a139-6571-4599-836b-a562afc95536", "label": { "name": "Dairy Products", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "71178428-70aa-4491-b5b4-b8d93e7b04cf" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "c58ed864-b5bf-4aac-88a1-007833c706c7", "position": 7, "id": "8d85fe1b-ec4d-49d0-aecc-15f9dbc66fd0", "label": { "name": "Frozen Foods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "c58ed864-b5bf-4aac-88a1-007833c706c7" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "f398f1a4-ce53-42df-95d4-8a3403bb6a38", "position": 8, "id": "b6980720-bd88-4703-a115-50c0b915f607", "label": { "name": "Fruits", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "f398f1a4-ce53-42df-95d4-8a3403bb6a38" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "fd936065-3d53-4844-99df-9332f1bf0c8a", "position": 9, "id": "5d69d13c-5d7f-45af-9ecc-045ca914f7ca", "label": { "name": "Grains", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "fd936065-3d53-4844-99df-9332f1bf0c8a" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "db7b685a-4aeb-4ebd-9b64-0c14827d9eaf", "position": 10, "id": "a5e65ce7-3588-412b-a118-2fe1a2ca0104", "label": { "name": "Health Foods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "db7b685a-4aeb-4ebd-9b64-0c14827d9eaf" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "28bbdab4-7eab-4fb2-b0e1-b0f2c10e489b", "position": 11, "id": "9890d86a-98e9-4599-8daf-82d341ef1e8d", "label": { "name": "Household", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "28bbdab4-7eab-4fb2-b0e1-b0f2c10e489b" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "cf136576-1929-4fc9-a3da-34c49ff58920", "position": 12, "id": "18fc0f39-3e45-412f-afa7-7eb779f7bfdf", "label": { "name": "Meat", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "cf136576-1929-4fc9-a3da-34c49ff58920" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "5b7d69d0-4d9f-48f9-96f1-8cb843227baa", "position": 13, "id": "4cd55de7-7c2e-4078-8c61-87d40b33ebda", "label": { "name": "Meat Products", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "5b7d69d0-4d9f-48f9-96f1-8cb843227baa" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "2a035661-fd5d-462c-8eb0-6b78af982e0c", "position": 14, "id": "21c55b4a-c1b1-44c0-962e-040bbfa5e148", "label": { "name": "Other", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "2a035661-fd5d-462c-8eb0-6b78af982e0c" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "af147838-d114-4a92-bd0f-08f05f59bbe5", "position": 15, "id": "b295a6be-1437-4415-92bb-4eee21d3195d", "label": { "name": "Produce", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "af147838-d114-4a92-bd0f-08f05f59bbe5" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "cf7672b8-036a-45a4-8323-6a167d2731be", "position": 16, "id": "d3ae533f-c1a8-4f08-8a0f-a88914b2c84b", "label": { "name": "Regular", "color": "#2E7D32FF", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "cf7672b8-036a-45a4-8323-6a167d2731be" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "bbcfaf8b-02e6-4c3d-98a6-6863b36bef18", "position": 17, "id": "572dbf60-4308-499e-ad7c-d806462ee501", "label": { "name": "Seafood", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "bbcfaf8b-02e6-4c3d-98a6-6863b36bef18" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "1c59a263-227a-4f43-a450-d53ca1485b36", "position": 18, "id": "5321b4d8-3aba-4a64-95b2-03ac533dda32", "label": { "name": "Snacks", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "1c59a263-227a-4f43-a450-d53ca1485b36" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "189099a9-0033-4783-804a-ec6805e7d557", "position": 19, "id": "98aebebf-27fe-4834-b3d3-0e45201a182f", "label": { "name": "Spices", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "189099a9-0033-4783-804a-ec6805e7d557" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "c28efdde-5993-4044-b824-f111f3a118ef", "position": 20, "id": "3e3aa706-3008-4280-b332-a7d2c31cf683", "label": { "name": "Sweets", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "c28efdde-5993-4044-b824-f111f3a118ef" } }, { "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "labelId": "3f151d15-27f9-41c7-9dfc-2ae1024b1c7c", "position": 21, "id": "48f109ca-c57a-4828-98ab-a2db1e6514c6", "label": { "name": "Vegetables", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "3f151d15-27f9-41c7-9dfc-2ae1024b1c7c" } } ] }, { "name": "Special groceries", "extras": {}, "createdAt": "2024-06-07T07:17:05.479808", "updateAt": "2024-06-12T08:44:58.831239", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "userId": "90b03954-00e1-46de-9520-f0305022b84f", "id": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "recipeReferences": [], "labelSettings": [ { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "0f63545a-606a-47ea-a784-452d45de6158", "position": 0, "id": "1a5dc45b-e6ae-4db2-bd2f-fa3c07efedeb", "label": { "name": "Alcohol", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "0f63545a-606a-47ea-a784-452d45de6158" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "0c2d6111-9837-4319-acb5-490a32979993", "position": 1, "id": "d1594c9d-f1b6-4160-a4eb-0686499a40ea", "label": { "name": "Baked Goods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "0c2d6111-9837-4319-acb5-490a32979993" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "3922802c-8e8c-47d4-9c68-e60b0a1338b6", "position": 2, "id": "077106d0-5c85-493c-ae6b-dea06002c824", "label": { "name": "Beverages", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "3922802c-8e8c-47d4-9c68-e60b0a1338b6" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "4111bfff-d834-4e8c-88ed-5eff761e06db", "position": 3, "id": "bf66b7e8-3758-4f9e-9e13-c7b9ff564889", "label": { "name": "Canned Goods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "4111bfff-d834-4e8c-88ed-5eff761e06db" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "24fa2836-25e8-44af-b497-ad0d428a7f78", "position": 4, "id": "bb34f741-10b4-490a-a512-67bbd374427c", "label": { "name": "Condiments", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "24fa2836-25e8-44af-b497-ad0d428a7f78" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "20a735de-c75b-4fdb-abaf-b8d71ef192f8", "position": 5, "id": "d88b23a5-e397-4cf2-b527-d8982ecf89e0", "label": { "name": "Confectionary", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "20a735de-c75b-4fdb-abaf-b8d71ef192f8" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "71178428-70aa-4491-b5b4-b8d93e7b04cf", "position": 6, "id": "82d44804-5bef-4cc3-9d1f-0d8e879783c0", "label": { "name": "Dairy Products", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "71178428-70aa-4491-b5b4-b8d93e7b04cf" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "c58ed864-b5bf-4aac-88a1-007833c706c7", "position": 7, "id": "0ae70dde-7403-408f-a6c6-c19b8c0f6a4d", "label": { "name": "Frozen Foods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "c58ed864-b5bf-4aac-88a1-007833c706c7" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "f398f1a4-ce53-42df-95d4-8a3403bb6a38", "position": 8, "id": "7667a581-8d63-4785-a013-8e164994dfc4", "label": { "name": "Fruits", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "f398f1a4-ce53-42df-95d4-8a3403bb6a38" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "fd936065-3d53-4844-99df-9332f1bf0c8a", "position": 9, "id": "749c8cbd-c4e5-4879-bce1-40c3b62ada71", "label": { "name": "Grains", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "fd936065-3d53-4844-99df-9332f1bf0c8a" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "db7b685a-4aeb-4ebd-9b64-0c14827d9eaf", "position": 10, "id": "e7979797-7679-47be-b14f-5fdcfe1c987d", "label": { "name": "Health Foods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "db7b685a-4aeb-4ebd-9b64-0c14827d9eaf" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "28bbdab4-7eab-4fb2-b0e1-b0f2c10e489b", "position": 11, "id": "1a9b6d19-d8b5-41a0-8e75-548c36fc0b1b", "label": { "name": "Household", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "28bbdab4-7eab-4fb2-b0e1-b0f2c10e489b" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "cf136576-1929-4fc9-a3da-34c49ff58920", "position": 12, "id": "0df24ff7-1767-46a1-9841-97f816079580", "label": { "name": "Meat", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "cf136576-1929-4fc9-a3da-34c49ff58920" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "5b7d69d0-4d9f-48f9-96f1-8cb843227baa", "position": 13, "id": "761b5985-9f49-450b-a33c-5b85366501da", "label": { "name": "Meat Products", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "5b7d69d0-4d9f-48f9-96f1-8cb843227baa" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "2a035661-fd5d-462c-8eb0-6b78af982e0c", "position": 14, "id": "cd993b6c-2c06-40b3-8fe2-8f9613d29b8e", "label": { "name": "Other", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "2a035661-fd5d-462c-8eb0-6b78af982e0c" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "af147838-d114-4a92-bd0f-08f05f59bbe5", "position": 15, "id": "9c9f8e0d-a9e8-4503-ad98-ee7039ec6eec", "label": { "name": "Produce", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "af147838-d114-4a92-bd0f-08f05f59bbe5" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "cf7672b8-036a-45a4-8323-6a167d2731be", "position": 16, "id": "f2a1fa92-1ee3-47b5-9d5f-1ac21e0d6bf3", "label": { "name": "Regular", "color": "#2E7D32FF", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "cf7672b8-036a-45a4-8323-6a167d2731be" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "bbcfaf8b-02e6-4c3d-98a6-6863b36bef18", "position": 17, "id": "bf2eb5db-bf88-44bc-a83f-7c69c38fc03f", "label": { "name": "Seafood", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "bbcfaf8b-02e6-4c3d-98a6-6863b36bef18" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "1c59a263-227a-4f43-a450-d53ca1485b36", "position": 18, "id": "14f5ca34-fcec-4847-8ee7-71b29488dc5b", "label": { "name": "Snacks", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "1c59a263-227a-4f43-a450-d53ca1485b36" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "189099a9-0033-4783-804a-ec6805e7d557", "position": 19, "id": "197f3d41-27a6-4782-a78d-60ea582108c8", "label": { "name": "Spices", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "189099a9-0033-4783-804a-ec6805e7d557" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "c28efdde-5993-4044-b824-f111f3a118ef", "position": 20, "id": "b5021331-2004-4570-a2bb-c6f364787bcc", "label": { "name": "Sweets", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "c28efdde-5993-4044-b824-f111f3a118ef" } }, { "shoppingListId": "f8438635-8211-4be8-80d0-0aa42e37a5f2", "labelId": "3f151d15-27f9-41c7-9dfc-2ae1024b1c7c", "position": 21, "id": "98e9ecff-d650-4717-96fe-d7744258bf43", "label": { "name": "Vegetables", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "3f151d15-27f9-41c7-9dfc-2ae1024b1c7c" } } ] }, { "name": "Freezer", "extras": {}, "createdAt": "2024-06-05T09:49:00.404632", "updateAt": "2024-06-23T08:21:51.764793", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "userId": "90b03954-00e1-46de-9520-f0305022b84f", "id": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "recipeReferences": [], "labelSettings": [ { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "0f63545a-606a-47ea-a784-452d45de6158", "position": 0, "id": "666b5b98-dcf6-4121-a5a6-2782f06f5f7e", "label": { "name": "Alcohol", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "0f63545a-606a-47ea-a784-452d45de6158" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "0c2d6111-9837-4319-acb5-490a32979993", "position": 1, "id": "6d25fc7e-33d2-459c-ba14-7e0aaf30a522", "label": { "name": "Baked Goods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "0c2d6111-9837-4319-acb5-490a32979993" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "3922802c-8e8c-47d4-9c68-e60b0a1338b6", "position": 2, "id": "56402a4e-c94e-4480-9f68-87370dbda209", "label": { "name": "Beverages", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "3922802c-8e8c-47d4-9c68-e60b0a1338b6" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "4111bfff-d834-4e8c-88ed-5eff761e06db", "position": 3, "id": "743e9e2b-a13a-4d80-b203-431d1c23f691", "label": { "name": "Canned Goods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "4111bfff-d834-4e8c-88ed-5eff761e06db" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "24fa2836-25e8-44af-b497-ad0d428a7f78", "position": 4, "id": "93b46c6e-0542-4adf-ad9d-8942b47dd9e3", "label": { "name": "Condiments", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "24fa2836-25e8-44af-b497-ad0d428a7f78" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "20a735de-c75b-4fdb-abaf-b8d71ef192f8", "position": 5, "id": "8c6f20ff-a5e3-4c64-a1ff-aa07bbdd455a", "label": { "name": "Confectionary", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "20a735de-c75b-4fdb-abaf-b8d71ef192f8" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "71178428-70aa-4491-b5b4-b8d93e7b04cf", "position": 6, "id": "02995d80-108f-4949-bd58-d04d670b388d", "label": { "name": "Dairy Products", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "71178428-70aa-4491-b5b4-b8d93e7b04cf" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "c58ed864-b5bf-4aac-88a1-007833c706c7", "position": 7, "id": "b20c178c-e719-4159-b199-91a6dd25dcd3", "label": { "name": "Frozen Foods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "c58ed864-b5bf-4aac-88a1-007833c706c7" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "f398f1a4-ce53-42df-95d4-8a3403bb6a38", "position": 8, "id": "5ff12e47-9b84-46d2-aabf-da4165a68f65", "label": { "name": "Fruits", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "f398f1a4-ce53-42df-95d4-8a3403bb6a38" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "fd936065-3d53-4844-99df-9332f1bf0c8a", "position": 9, "id": "e0ec7da9-c0b8-4d78-a5b8-591c99d87370", "label": { "name": "Grains", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "fd936065-3d53-4844-99df-9332f1bf0c8a" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "db7b685a-4aeb-4ebd-9b64-0c14827d9eaf", "position": 10, "id": "3dc2d2e7-274e-40ec-8ba1-09ce1820b29b", "label": { "name": "Health Foods", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "db7b685a-4aeb-4ebd-9b64-0c14827d9eaf" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "28bbdab4-7eab-4fb2-b0e1-b0f2c10e489b", "position": 11, "id": "e30fa937-4bb1-4ff9-b163-2da67e2749ca", "label": { "name": "Household", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "28bbdab4-7eab-4fb2-b0e1-b0f2c10e489b" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "cf136576-1929-4fc9-a3da-34c49ff58920", "position": 12, "id": "ecd715af-fafe-4d32-a376-538e476bf215", "label": { "name": "Meat", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "cf136576-1929-4fc9-a3da-34c49ff58920" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "5b7d69d0-4d9f-48f9-96f1-8cb843227baa", "position": 13, "id": "5ded867c-473f-456d-b0a0-83cae279df71", "label": { "name": "Meat Products", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "5b7d69d0-4d9f-48f9-96f1-8cb843227baa" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "2a035661-fd5d-462c-8eb0-6b78af982e0c", "position": 14, "id": "eb88d477-cd50-4b84-a1bb-5adc077d38e5", "label": { "name": "Other", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "2a035661-fd5d-462c-8eb0-6b78af982e0c" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "af147838-d114-4a92-bd0f-08f05f59bbe5", "position": 15, "id": "ab7e96e3-f8d5-4e4e-91ee-b966bd980cf0", "label": { "name": "Produce", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "af147838-d114-4a92-bd0f-08f05f59bbe5" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "cf7672b8-036a-45a4-8323-6a167d2731be", "position": 16, "id": "3fcf5e5a-f8e2-4174-be79-2496a1cb505a", "label": { "name": "Regular", "color": "#2E7D32FF", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "cf7672b8-036a-45a4-8323-6a167d2731be" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "bbcfaf8b-02e6-4c3d-98a6-6863b36bef18", "position": 17, "id": "e768c9e7-c568-44d1-a263-081d93fd1298", "label": { "name": "Seafood", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "bbcfaf8b-02e6-4c3d-98a6-6863b36bef18" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "1c59a263-227a-4f43-a450-d53ca1485b36", "position": 18, "id": "f8a78147-c6d1-4a86-b159-5f178ae72089", "label": { "name": "Snacks", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "1c59a263-227a-4f43-a450-d53ca1485b36" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "189099a9-0033-4783-804a-ec6805e7d557", "position": 19, "id": "23253f2f-bc71-4ecf-837c-d1697738b505", "label": { "name": "Spices", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "189099a9-0033-4783-804a-ec6805e7d557" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "c28efdde-5993-4044-b824-f111f3a118ef", "position": 20, "id": "706d656b-3755-46f7-8c12-c9196730baf2", "label": { "name": "Sweets", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "c28efdde-5993-4044-b824-f111f3a118ef" } }, { "shoppingListId": "e9d78ff2-4b23-4b77-a3a8-464827100b46", "labelId": "3f151d15-27f9-41c7-9dfc-2ae1024b1c7c", "position": 21, "id": "d9d60d8d-f2de-4636-864f-d7262e24ead3", "label": { "name": "Vegetables", "color": "#E0E0E0", "groupId": "9ed7c880-3e85-4955-9318-1443d6e080fe", "id": "3f151d15-27f9-41c7-9dfc-2ae1024b1c7c" } } ] } ], "next": null, "previous": null } joostlek-python-mealie-f3a7029/tests/fixtures/startup_info.json000066400000000000000000000000351473452740400251050ustar00rootroot00000000000000{ "isFirstLogin": true } joostlek-python-mealie-f3a7029/tests/fixtures/statistics.json000066400000000000000000000001701473452740400245620ustar00rootroot00000000000000{ "totalRecipes": 765, "totalUsers": 3, "totalCategories": 24, "totalTags": 454, "totalTools": 11 } joostlek-python-mealie-f3a7029/tests/fixtures/theme.json000066400000000000000000000006461473452740400235020ustar00rootroot00000000000000{ "lightPrimary": "#E58325", "lightAccent": "#007A99", "lightSecondary": "#973542", "lightSuccess": "#43A047", "lightInfo": "#1976D2", "lightWarning": "#FF6D00", "lightError": "#EF5350", "darkPrimary": "#E58325", "darkAccent": "#007A99", "darkSecondary": "#973542", "darkSuccess": "#43A047", "darkInfo": "#1976D2", "darkWarning": "#FF6D00", "darkError": "#EF5350" } joostlek-python-mealie-f3a7029/tests/fixtures/users_self.json000066400000000000000000000014761473452740400245540ustar00rootroot00000000000000{ "id": "bf1c62fe-4941-4332-9886-e54e88dbdba0", "username": "admin", "fullName": "Change Me", "email": "changeme@example.com", "authMethod": "Mealie", "admin": true, "group": "home", "advanced": true, "canInvite": true, "canManage": true, "canOrganize": true, "groupId": "24477569-f6af-4b53-9e3f-6d04b0ca6916", "groupSlug": "home", "tokens": [ { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb25nX3Rva2VuIjp0cnVlLCJpZCI6ImJmMWM2MmZlLTQ5NDEtNDMzMi05ODg2LWU1NGU4OGRiZGJhMCIsIm5hbWUiOiJ0ZXN0aW5nIiwiaW50ZWdyYXRpb25faWQiOiJnZW5lcmljIiwiZXhwIjoxODczOTA5ODk4fQ.xwXZp4fL2g1RbIqGtBeOaS6RDfsYbQDHj8XtRM3wlX0", "name": "testing", "id": 2, "createdAt": "2024-05-20T10:31:38.179669" } ], "cacheKey": "1234" } joostlek-python-mealie-f3a7029/tests/fixtures/validation_error.json000066400000000000000000000005731473452740400257420ustar00rootroot00000000000000{ "detail": [ { "type": "missing", "loc": [ "body", "shoppingListId" ], "msg": "Field required", "input": { "note": "Test 422", "isFood": false, "checked": false, "position": "4" } } ] } joostlek-python-mealie-f3a7029/tests/ruff.toml000066400000000000000000000007041473452740400214660ustar00rootroot00000000000000# This extend our general Ruff rules specifically for tests extend = "../pyproject.toml" lint.extend-select = [ "PT", # Use @pytest.fixture without parentheses ] lint.extend-ignore = [ "S101", # Use of assert detected. As these are tests... "S105", # Detection of passwords... "S106", # Detection of passwords... "SLF001", # Tests will access private/protected members... "PLR0913", # we're overwriting function that has many arguments ] joostlek-python-mealie-f3a7029/tests/syrupy.py000066400000000000000000000034021473452740400215520ustar00rootroot00000000000000"""Asynchronous Python client for Mealie.""" from __future__ import annotations from dataclasses import asdict, is_dataclass from typing import TYPE_CHECKING, Any from syrupy.extensions import AmberSnapshotExtension from syrupy.extensions.amber import AmberDataSerializer if TYPE_CHECKING: from syrupy.types import ( PropertyFilter, PropertyMatcher, PropertyPath, SerializableData, ) class MealieSnapshotSerializer(AmberDataSerializer): """Mealie snapshot serializer for Syrupy. Handles special cases for Mealie data structures. """ @classmethod def _serialize( # pylint: disable=too-many-arguments cls, data: SerializableData, *, depth: int = 0, exclude: PropertyFilter | None = None, include: PropertyFilter | None = None, matcher: PropertyMatcher | None = None, path: PropertyPath = (), visited: set[Any] | None = None, ) -> str: """Pre-process data before serializing. This allows us to handle specific cases for Mealie data structures. """ serializable_data = data if is_dataclass(type(data)): serializable_data = asdict(data) return super()._serialize( serializable_data, depth=depth, exclude=exclude, include=include, matcher=matcher, path=path, visited=visited, ) class MealieSnapshotExtension(AmberSnapshotExtension): """Mealie extension for Syrupy.""" VERSION = "1" """Current version of serialization format. Need to be bumped when we change the MealieSnapshotSerializer. """ serializer_class: type[AmberDataSerializer] = MealieSnapshotSerializer joostlek-python-mealie-f3a7029/tests/test_mealie.py000066400000000000000000000416441473452740400225040ustar00rootroot00000000000000"""Asynchronous Python client for Mealie.""" from __future__ import annotations import asyncio from datetime import date from typing import TYPE_CHECKING, Any import aiohttp from aiohttp.hdrs import METH_GET, METH_POST, METH_PUT, METH_DELETE from aioresponses import CallbackResult, aioresponses import pytest from yarl import URL from aiomealie.exceptions import ( MealieAuthenticationError, MealieConnectionError, MealieValidationError, MealieError, MealieNotFoundError, MealieBadRequestError, ) from aiomealie.mealie import MealieClient from aiomealie.models import MutateShoppingItem, MealplanEntryType from tests import load_fixture from .const import HEADERS, MEALIE_URL if TYPE_CHECKING: from syrupy import SnapshotAssertion async def test_putting_in_own_session( responses: aioresponses, ) -> None: """Test putting in own session.""" responses.get( f"{MEALIE_URL}/api/app/about/startup-info", status=200, body=load_fixture("startup_info.json"), ) async with aiohttp.ClientSession() as session: analytics = MealieClient(session=session, api_host="https://demo.mealie.io") await analytics.get_startup_info() assert analytics.session is not None assert not analytics.session.closed await analytics.close() assert not analytics.session.closed async def test_creating_own_session( responses: aioresponses, ) -> None: """Test creating own session.""" responses.get( f"{MEALIE_URL}/api/app/about/startup-info", status=200, body=load_fixture("startup_info.json"), ) mealie_client = MealieClient(api_host="https://demo.mealie.io", token="XXX") await mealie_client.get_startup_info() assert mealie_client.session is not None assert not mealie_client.session.closed await mealie_client.close() assert mealie_client.session.closed async def test_unexpected_server_response( responses: aioresponses, mealie_client: MealieClient, ) -> None: """Test handling unexpected response.""" responses.get( f"{MEALIE_URL}/api/app/about/startup-info", status=200, headers={"Content-Type": "plain/text"}, body="Yes", ) with pytest.raises(MealieError): assert await mealie_client.get_startup_info() async def test_authentication_error( responses: aioresponses, mealie_client: MealieClient, ) -> None: """Test authentication error from mealie.""" responses.get( f"{MEALIE_URL}/api/groups/self", status=401, body=load_fixture("authentication_error.json"), ) with pytest.raises(MealieAuthenticationError): assert await mealie_client.get_groups_self() async def test_validation_error( responses: aioresponses, mealie_client: MealieClient, ) -> None: """Test validation error from mealie.""" item_id: str = "64207a44-7b40-4392-a06a-bc4e10394622" item = MutateShoppingItem( list_id="27edbaab-2ec6-441f-8490-0283ea77585f", note="Bread", position=0 ) responses.put( f"{MEALIE_URL}/api/households/shopping/items/{item_id}", status=422, body=load_fixture("validation_error.json"), ) with pytest.raises(MealieValidationError): await mealie_client.update_shopping_item(item_id, item) async def test_not_found_error( responses: aioresponses, mealie_client: MealieClient, ) -> None: """Test not found error from mealie.""" responses.get( f"{MEALIE_URL}/api/recipes/original-sacher-torte-2", status=404, body=load_fixture("not_found_error.json"), ) with pytest.raises(MealieNotFoundError): await mealie_client.get_recipe("original-sacher-torte-2") async def test_bad_request_error( responses: aioresponses, mealie_client: MealieClient, ) -> None: """Test not found error from mealie.""" responses.post( f"{MEALIE_URL}/api/recipes/create/url", status=400, body=load_fixture("bad_request_error.json"), ) with pytest.raises(MealieBadRequestError): await mealie_client.import_recipe( "https://www.sacher.com/en/original-sacher-torte/recipe/" ) async def test_timeout( responses: aioresponses, ) -> None: """Test request timeout.""" # Faking a timeout by sleeping async def response_handler(_: str, **_kwargs: Any) -> CallbackResult: """Response handler for this test.""" await asyncio.sleep(2) return CallbackResult(body="Goodmorning!") responses.get( f"{MEALIE_URL}/api/app/about/startup-info", callback=response_handler, ) async with MealieClient( request_timeout=1, api_host="https://demo.mealie.io" ) as mealie_client: with pytest.raises(MealieConnectionError): assert await mealie_client.get_startup_info() async def test_client_connection_error() -> None: """Test client connection error from mealie.""" async with MealieClient(api_host="https://bad-url") as mealie_client: with pytest.raises(MealieConnectionError): assert await mealie_client.get_startup_info() async def test_about( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving about.""" responses.get( f"{MEALIE_URL}/api/app/about", status=200, body=load_fixture("about.json"), ) assert await mealie_client.get_about() == snapshot async def test_startup_info( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving startup info.""" responses.get( f"{MEALIE_URL}/api/app/about/startup-info", status=200, body=load_fixture("startup_info.json"), ) assert await mealie_client.get_startup_info() == snapshot async def test_groups_self( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving groups self.""" responses.get( f"{MEALIE_URL}/api/groups/self", status=200, body=load_fixture("groups_self.json"), ) assert await mealie_client.get_groups_self() == snapshot async def test_theme( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving theme.""" responses.get( f"{MEALIE_URL}/api/app/about/theme", status=200, body=load_fixture("theme.json"), ) assert await mealie_client.get_theme() == snapshot async def test_recipes( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving recipes.""" responses.get( f"{MEALIE_URL}/api/recipes", status=200, body=load_fixture("recipes.json"), ) assert await mealie_client.get_recipes() == snapshot async def test_retrieving_recipe( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving recipe.""" responses.get( f"{MEALIE_URL}/api/recipes/original-sacher-torte-2", status=200, body=load_fixture("recipe.json"), ) assert await mealie_client.get_recipe("original-sacher-torte-2") == snapshot async def test_importing_recipe( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test importing recipe.""" responses.post( f"{MEALIE_URL}/api/recipes/create/url", status=201, body=load_fixture("scrape_recipe.json"), ) responses.get( f"{MEALIE_URL}/api/recipes/original-sacher-torte-2", status=200, body=load_fixture("recipe.json"), ) assert ( await mealie_client.import_recipe( "https://www.sacher.com/en/original-sacher-torte/recipe/" ) == snapshot ) responses.assert_called_with( f"{MEALIE_URL}/api/recipes/create/url", METH_POST, headers=HEADERS, params=None, json={ "url": "https://www.sacher.com/en/original-sacher-torte/recipe/", "include_tags": False, }, ) responses.assert_called_with( f"{MEALIE_URL}/api/recipes/original-sacher-torte-2", METH_GET, headers=HEADERS, params=None, json=None, ) async def test_mealplan_today( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving mealplan.""" responses.get( f"{MEALIE_URL}/api/households/mealplans/today", status=200, body=load_fixture("mealplan_today.json"), ) assert await mealie_client.get_mealplan_today() == snapshot async def test_mealplans( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving mealplan.""" params: dict[str, Any] = { "perPage": -1, } url = URL(MEALIE_URL).joinpath("api/households/mealplans").with_query(params) responses.get( url, status=200, body=load_fixture("mealplans.json"), ) assert await mealie_client.get_mealplans() == snapshot async def test_user_info( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving user info.""" responses.get( f"{MEALIE_URL}/api/users/self", status=200, body=load_fixture("users_self.json"), ) assert await mealie_client.get_user_info() == snapshot @pytest.mark.parametrize( ("kwargs", "params"), [ ({}, {"perPage": -1}), ( { "start_date": date(2021, 1, 1), "end_date": date(2021, 1, 2), }, { "start_date": "2021-01-01", "end_date": "2021-01-02", "perPage": -1, }, ), ], ) async def test_mealplans_parameters( responses: aioresponses, mealie_client: MealieClient, kwargs: dict[str, Any], params: dict[str, Any], ) -> None: """Test retrieving mealplans.""" url = URL(MEALIE_URL).joinpath("api/households/mealplans").with_query(params) responses.get( url, status=200, body=load_fixture("mealplans.json"), ) assert await mealie_client.get_mealplans(**kwargs) responses.assert_called_once_with( f"{MEALIE_URL}/api/households/mealplans", METH_GET, headers=HEADERS, params=params, json=None, ) async def test_shopping_lists( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving shopping lists.""" params: dict[str, Any] = { "perPage": -1, } url = URL(MEALIE_URL).joinpath("api/households/shopping/lists").with_query(params) responses.get( url, status=200, body=load_fixture("shopping_lists.json"), ) assert await mealie_client.get_shopping_lists() == snapshot async def test_shopping_items( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving shopping items.""" shopping_list_id: str = "27edbaab-2ec6-441f-8490-0283ea77585f" params: dict[str, Any] = { "queryFilter": f"shoppingListId={shopping_list_id}", "orderBy": "position", "orderDirection": "asc", "perPage": -1, } url = URL(MEALIE_URL).joinpath("api/households/shopping/items").with_query(params) responses.get( url, status=200, body=load_fixture("shopping_items.json"), ) assert ( await mealie_client.get_shopping_items(shopping_list_id=shopping_list_id) == snapshot ) responses.assert_called_once_with( f"{MEALIE_URL}/api/households/shopping/items", METH_GET, headers=HEADERS, params=params, json=None, ) async def test_add_shopping_item( responses: aioresponses, mealie_client: MealieClient, ) -> None: """Test adding shopping item.""" item = MutateShoppingItem( list_id="27edbaab-2ec6-441f-8490-0283ea77585f", note="Bread", position=0 ) responses.post( f"{MEALIE_URL}/api/households/shopping/items", status=201, ) await mealie_client.add_shopping_item(item=item) responses.assert_called_once_with( f"{MEALIE_URL}/api/households/shopping/items", METH_POST, headers=HEADERS, params=None, json={ "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "note": "Bread", "position": 0, }, ) async def test_update_shopping_item( responses: aioresponses, mealie_client: MealieClient, ) -> None: """Test updating shopping item.""" item_id: str = "64207a44-7b40-4392-a06a-bc4e10394622" item = MutateShoppingItem( list_id="27edbaab-2ec6-441f-8490-0283ea77585f", note="Bread", position=0 ) responses.put( f"{MEALIE_URL}/api/households/shopping/items/{item_id}", status=201, ) await mealie_client.update_shopping_item(item_id=item_id, item=item) responses.assert_called_once_with( f"{MEALIE_URL}/api/households/shopping/items/{item_id}", METH_PUT, headers=HEADERS, params=None, json={ "shoppingListId": "27edbaab-2ec6-441f-8490-0283ea77585f", "note": "Bread", "position": 0, }, ) async def test_delete_shopping_item( responses: aioresponses, mealie_client: MealieClient, ) -> None: """Test deleting shopping item.""" item_id: str = "64207a44-7b40-4392-a06a-bc4e10394622" responses.delete( f"{MEALIE_URL}/api/households/shopping/items/{item_id}", status=201, ) await mealie_client.delete_shopping_item(item_id=item_id) responses.assert_called_once_with( f"{MEALIE_URL}/api/households/shopping/items/{item_id}", METH_DELETE, headers=HEADERS, params=None, json=None, ) async def test_statistics( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion, ) -> None: """Test retrieving statistics.""" responses.get( f"{MEALIE_URL}/api/households/statistics", status=200, body=load_fixture("statistics.json"), ) assert await mealie_client.get_statistics() == snapshot async def test_random_mealplan( responses: aioresponses, mealie_client: MealieClient, snapshot: SnapshotAssertion ) -> None: """Test setting random mealplan.""" responses.post( f"{MEALIE_URL}/api/households/mealplans/random", status=201, body=load_fixture("mealplan.json"), ) assert ( await mealie_client.random_mealplan( at=date(2021, 1, 1), entry_type=MealplanEntryType.BREAKFAST ) ) == snapshot responses.assert_called_once_with( f"{MEALIE_URL}/api/households/mealplans/random", METH_POST, headers=HEADERS, params=None, json={ "date": "2021-01-01", "entryType": "breakfast", }, ) @pytest.mark.parametrize( ("kwargs", "data"), [ ({"recipe_id": "abc"}, {"recipeId": "abc"}), ({"note_title": "title"}, {"title": "title"}), ( {"note_title": "title", "note_text": "description"}, {"title": "title", "text": "description"}, ), ], ) async def test_set_mealplan( responses: aioresponses, mealie_client: MealieClient, kwargs: dict[str, Any], data: dict[str, Any], ) -> None: """Test setting mealplan.""" responses.post( f"{MEALIE_URL}/api/households/mealplans", status=201, body=load_fixture("mealplan.json"), ) await mealie_client.set_mealplan( at=date(2021, 1, 1), entry_type=MealplanEntryType.BREAKFAST, **kwargs ) responses.assert_called_once_with( f"{MEALIE_URL}/api/households/mealplans", METH_POST, headers=HEADERS, params=None, json={ "date": "2021-01-01", "entryType": "breakfast", } | data, ) async def test_household_support( responses: aioresponses, mealie_client: MealieClient, ) -> None: """Test household support.""" responses.get(f"{MEALIE_URL}/api/households/mealplans/today", status=404, body="") assert await mealie_client.define_household_support() is False assert mealie_client.household_support is False async def test_no_household_support( responses: aioresponses, mealie_client: MealieClient, ) -> None: """Test no household support.""" mealie_client.household_support = None responses.get( f"{MEALIE_URL}/api/households/mealplans/today", status=200, body=load_fixture("mealplan_today.json"), ) assert await mealie_client.define_household_support() is True assert mealie_client.household_support is True