pax_global_header 0000666 0000000 0000000 00000000064 15022012370 0014502 g ustar 00root root 0000000 0000000 52 comment=49e93ba6c8dd047c80bfb3b9338abfcbfac0b601
python-mealie-0.9.6/ 0000775 0000000 0000000 00000000000 15022012370 0014271 5 ustar 00root root 0000000 0000000 python-mealie-0.9.6/.editorconfig 0000664 0000000 0000000 00000000274 15022012370 0016751 0 ustar 00root root 0000000 0000000 root = 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
python-mealie-0.9.6/.gitattributes 0000664 0000000 0000000 00000000051 15022012370 0017160 0 ustar 00root root 0000000 0000000 * text eol=lf
*.py whitespace=error
python-mealie-0.9.6/.github/ 0000775 0000000 0000000 00000000000 15022012370 0015631 5 ustar 00root root 0000000 0000000 python-mealie-0.9.6/.github/CODEOWNERS 0000664 0000000 0000000 00000000024 15022012370 0017220 0 ustar 00root root 0000000 0000000 .github/* @joostlek
python-mealie-0.9.6/.github/CODE_OF_CONDUCT.md 0000664 0000000 0000000 00000006214 15022012370 0020433 0 ustar 00root root 0000000 0000000 # 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/
python-mealie-0.9.6/.github/CONTRIBUTING.md 0000664 0000000 0000000 00000002215 15022012370 0020062 0 ustar 00root root 0000000 0000000 # 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
python-mealie-0.9.6/.github/FUNDING.yaml 0000664 0000000 0000000 00000000031 15022012370 0017601 0 ustar 00root root 0000000 0000000 ---
github:
- joostlek
python-mealie-0.9.6/.github/ISSUE_TEMPLATE.md 0000664 0000000 0000000 00000000514 15022012370 0020336 0 ustar 00root root 0000000 0000000 # 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)
python-mealie-0.9.6/.github/LICENSE.md 0000664 0000000 0000000 00000002065 15022012370 0017240 0 ustar 00root root 0000000 0000000 # 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.
python-mealie-0.9.6/.github/PULL_REQUEST_TEMPLATE.md 0000664 0000000 0000000 00000000376 15022012370 0021440 0 ustar 00root root 0000000 0000000 # 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/
python-mealie-0.9.6/.github/labels.yml 0000664 0000000 0000000 00000005433 15022012370 0017623 0 ustar 00root root 0000000 0000000 ---
- 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."
python-mealie-0.9.6/.github/release-drafter.yml 0000664 0000000 0000000 00000002047 15022012370 0021424 0 ustar 00root root 0000000 0000000 ---
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
python-mealie-0.9.6/.github/renovate.json 0000664 0000000 0000000 00000002161 15022012370 0020347 0 ustar 00root root 0000000 0000000 {
"$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
}
]
}
python-mealie-0.9.6/.github/workflows/ 0000775 0000000 0000000 00000000000 15022012370 0017666 5 ustar 00root root 0000000 0000000 python-mealie-0.9.6/.github/workflows/labels.yaml 0000664 0000000 0000000 00000000736 15022012370 0022022 0 ustar 00root root 0000000 0000000 ---
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 }}
python-mealie-0.9.6/.github/workflows/linting.yaml 0000664 0000000 0000000 00000014601 15022012370 0022220 0 ustar 00root root 0000000 0000000 ---
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.6.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.6.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.6.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.6.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.6.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.6.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@49933ea5288caeca8642d1e84afbd3f7d6820020 # 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
python-mealie-0.9.6/.github/workflows/lock.yaml 0000664 0000000 0000000 00000000665 15022012370 0021511 0 ustar 00root root 0000000 0000000 ---
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: ""
python-mealie-0.9.6/.github/workflows/pr-labels.yaml 0000664 0000000 0000000 00000001302 15022012370 0022427 0 ustar 00root root 0000000 0000000 ---
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
python-mealie-0.9.6/.github/workflows/release-drafter.yaml 0000664 0000000 0000000 00000000574 15022012370 0023625 0 ustar 00root root 0000000 0000000 ---
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.1.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
python-mealie-0.9.6/.github/workflows/release.yaml 0000664 0000000 0000000 00000003161 15022012370 0022173 0 ustar 00root root 0000000 0000000 ---
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.6.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.4
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
python-mealie-0.9.6/.github/workflows/stale.yaml 0000664 0000000 0000000 00000002560 15022012370 0021665 0 ustar 00root root 0000000 0000000 ---
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.1.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.
python-mealie-0.9.6/.github/workflows/tests.yaml 0000664 0000000 0000000 00000005075 15022012370 0021723 0 ustar 00root root 0000000 0000000 ---
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.6.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.6.2
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.3.0
- name: ๐ Set up Poetry
run: pipx install poetry
- name: ๐ Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.6.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.4.3
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@v5.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
python-mealie-0.9.6/.github/workflows/typing.yaml 0000664 0000000 0000000 00000001615 15022012370 0022067 0 ustar 00root root 0000000 0000000 ---
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.6.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
python-mealie-0.9.6/.gitignore 0000664 0000000 0000000 00000002701 15022012370 0016261 0 ustar 00root root 0000000 0000000 # 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
python-mealie-0.9.6/.nvmrc 0000664 0000000 0000000 00000000010 15022012370 0015406 0 ustar 00root root 0000000 0000000 22.16.0
python-mealie-0.9.6/.pre-commit-config.yaml 0000664 0000000 0000000 00000010206 15022012370 0020551 0 ustar 00root root 0000000 0000000 ---
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
python-mealie-0.9.6/.prettierignore 0000664 0000000 0000000 00000000013 15022012370 0017326 0 ustar 00root root 0000000 0000000 .gitignore
python-mealie-0.9.6/.yamllint 0000664 0000000 0000000 00000002400 15022012370 0016117 0 ustar 00root root 0000000 0000000 ---
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
python-mealie-0.9.6/LICENSE.md 0000664 0000000 0000000 00000002065 15022012370 0015700 0 ustar 00root root 0000000 0000000 # 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.
python-mealie-0.9.6/README.md 0000664 0000000 0000000 00000011306 15022012370 0015551 0 ustar 00root root 0000000 0000000 # 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/
python-mealie-0.9.6/openapi.json 0000664 0000000 0000000 00003775352 15022012370 0016645 0 ustar 00root root 0000000 0000000 {
"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"
}
}
}
}
}
}
python-mealie-0.9.6/package-lock.json 0000664 0000000 0000000 00000001421 15022012370 0017503 0 ustar 00root root 0000000 0000000 {
"name": "python-mealie",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "python-mealie",
"version": "0.0.0",
"license": "MIT",
"devDependencies": {
"prettier": "3.5.3"
}
},
"node_modules/prettier": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
"integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
"dev": true,
"license": "MIT",
"bin": {
"prettier": "bin/prettier.cjs"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
}
}
}
python-mealie-0.9.6/package.json 0000664 0000000 0000000 00000000542 15022012370 0016560 0 ustar 00root root 0000000 0000000 {
"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.5.3"
}
}
python-mealie-0.9.6/poetry.lock 0000664 0000000 0000000 00000727522 15022012370 0016504 0 ustar 00root root 0000000 0000000 # This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand.
[[package]]
name = "aiohappyeyeballs"
version = "2.6.1"
description = "Happy Eyeballs for asyncio"
optional = false
python-versions = ">=3.9"
files = [
{file = "aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8"},
{file = "aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558"},
]
[[package]]
name = "aiohttp"
version = "3.12.12"
description = "Async http client/server framework (asyncio)"
optional = false
python-versions = ">=3.9"
files = [
{file = "aiohttp-3.12.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6f25e9d274d6abbb15254f76f100c3984d6b9ad6e66263cc60a465dd5c7e48f5"},
{file = "aiohttp-3.12.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b8ec3c1a1c13d24941b5b913607e57b9364e4c0ea69d5363181467492c4b2ba6"},
{file = "aiohttp-3.12.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81ef2f9253c327c211cb7b06ea2edd90e637cf21c347b894d540466b8d304e08"},
{file = "aiohttp-3.12.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28ded835c3663fd41c9ad44685811b11e34e6ac9a7516a30bfce13f6abba4496"},
{file = "aiohttp-3.12.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a4b78ccf254fc10605b263996949a94ca3f50e4f9100e05137d6583e266b711e"},
{file = "aiohttp-3.12.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f4a5af90d5232c41bb857568fe7d11ed84408653ec9da1ff999cc30258b9bd1"},
{file = "aiohttp-3.12.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffa5205c2f53f1120e93fdf2eca41b0f6344db131bc421246ee82c1e1038a14a"},
{file = "aiohttp-3.12.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f68301660f0d7a3eddfb84f959f78a8f9db98c76a49b5235508fa16edaad0f7c"},
{file = "aiohttp-3.12.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db874d3b0c92fdbb553751af9d2733b378c25cc83cd9dfba87f12fafd2dc9cd5"},
{file = "aiohttp-3.12.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5e53cf9c201b45838a2d07b1f2d5f7fec9666db7979240002ce64f9b8a1e0cf2"},
{file = "aiohttp-3.12.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:8687cc5f32b4e328c233acd387d09a1b477007896b2f03c1c823a0fd05f63883"},
{file = "aiohttp-3.12.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5ee537ad29de716a3d8dc46c609908de0c25ffeebf93cd94a03d64cdc07d66d0"},
{file = "aiohttp-3.12.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:411f821be5af6af11dc5bed6c6c1dc6b6b25b91737d968ec2756f9baa75e5f9b"},
{file = "aiohttp-3.12.12-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f90319d94cf5f9786773237f24bd235a7b5959089f1af8ec1154580a3434b503"},
{file = "aiohttp-3.12.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:73b148e606f34e9d513c451fd65efe1091772659ca5703338a396a99f60108ff"},
{file = "aiohttp-3.12.12-cp310-cp310-win32.whl", hash = "sha256:d40e7bfd577fdc8a92b72f35dfbdd3ec90f1bc8a72a42037fefe34d4eca2d4a1"},
{file = "aiohttp-3.12.12-cp310-cp310-win_amd64.whl", hash = "sha256:65c7804a2343893d6dea9fce69811aea0a9ac47f68312cf2e3ee1668cd9a387f"},
{file = "aiohttp-3.12.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:38823fe0d8bc059b3eaedb263fe427d887c7032e72b4ef92c472953285f0e658"},
{file = "aiohttp-3.12.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:10237f2c34711215d04ed21da63852ce023608299554080a45c576215d9df81c"},
{file = "aiohttp-3.12.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:563ec477c0dc6d56fc7f943a3475b5acdb399c7686c30f5a98ada24bb7562c7a"},
{file = "aiohttp-3.12.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3d05c46a61aca7c47df74afff818bc06a251ab95d95ff80b53665edfe1e0bdf"},
{file = "aiohttp-3.12.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:277c882916759b4a6b6dc7e2ceb124aad071b3c6456487808d9ab13e1b448d57"},
{file = "aiohttp-3.12.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:216abf74b324b0f4e67041dd4fb2819613909a825904f8a51701fbcd40c09cd7"},
{file = "aiohttp-3.12.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65d6cefad286459b68e7f867b9586a821fb7f121057b88f02f536ef570992329"},
{file = "aiohttp-3.12.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:feaaaff61966b5f4b4eae0b79fc79427f49484e4cfa5ab7d138ecd933ab540a8"},
{file = "aiohttp-3.12.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a05917780b7cad1755784b16cfaad806bc16029a93d15f063ca60185b7d9ba05"},
{file = "aiohttp-3.12.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:082c5ec6d262c1b2ee01c63f4fb9152c17f11692bf16f0f100ad94a7a287d456"},
{file = "aiohttp-3.12.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:b265a3a8b379b38696ac78bdef943bdc4f4a5d6bed1a3fb5c75c6bab1ecea422"},
{file = "aiohttp-3.12.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2e0f2e208914ecbc4b2a3b7b4daa759d0c587d9a0b451bb0835ac47fae7fa735"},
{file = "aiohttp-3.12.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9923b025845b72f64d167bca221113377c8ffabd0a351dc18fb839d401ee8e22"},
{file = "aiohttp-3.12.12-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1ebb213445900527831fecc70e185bf142fdfe5f2a691075f22d63c65ee3c35a"},
{file = "aiohttp-3.12.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6fc369fb273a8328077d37798b77c1e65676709af5c182cb74bd169ca9defe81"},
{file = "aiohttp-3.12.12-cp311-cp311-win32.whl", hash = "sha256:58ecd10fda6a44c311cd3742cfd2aea8c4c600338e9f27cb37434d9f5ca9ddaa"},
{file = "aiohttp-3.12.12-cp311-cp311-win_amd64.whl", hash = "sha256:b0066e88f30be00badffb5ef8f2281532b9a9020863d873ae15f7c147770b6ec"},
{file = "aiohttp-3.12.12-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:98451ce9ce229d092f278a74a7c2a06b3aa72984673c87796126d7ccade893e9"},
{file = "aiohttp-3.12.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:adbac7286d89245e1aff42e948503fdc6edf6d5d65c8e305a67c40f6a8fb95f4"},
{file = "aiohttp-3.12.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0728882115bfa85cbd8d0f664c8ccc0cfd5bd3789dd837596785450ae52fac31"},
{file = "aiohttp-3.12.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf3b9d9e767f9d0e09fb1a31516410fc741a62cc08754578c40abc497d09540"},
{file = "aiohttp-3.12.12-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c944860e86b9f77a462321a440ccf6fa10f5719bb9d026f6b0b11307b1c96c7b"},
{file = "aiohttp-3.12.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b1979e1f0c98c06fd0cd940988833b102fa3aa56751f6c40ffe85cabc51f6fd"},
{file = "aiohttp-3.12.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:120b7dd084e96cfdad85acea2ce1e7708c70a26db913eabb8d7b417c728f5d84"},
{file = "aiohttp-3.12.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e58f5ae79649ffa247081c2e8c85e31d29623cf2a3137dda985ae05c9478aae"},
{file = "aiohttp-3.12.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9aa5f049e3e2745b0141f13e5a64e7c48b1a1427ed18bbb7957b348f282fee56"},
{file = "aiohttp-3.12.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7163cc9cf3722d90f1822f8a38b211e3ae2fc651c63bb55449f03dc1b3ff1d44"},
{file = "aiohttp-3.12.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ef97c4d035b721de6607f3980fa3e4ef0ec3aca76474b5789b7fac286a8c4e23"},
{file = "aiohttp-3.12.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:1c14448d6a86acadc3f7b2f4cc385d1fb390acb6f37dce27f86fe629410d92e3"},
{file = "aiohttp-3.12.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a1b6df6255cfc493454c79221183d64007dd5080bcda100db29b7ff181b8832c"},
{file = "aiohttp-3.12.12-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:60fc7338dfb0626c2927bfbac4785de3ea2e2bbe3d328ba5f3ece123edda4977"},
{file = "aiohttp-3.12.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2afc72207ef4c9d4ca9fcd00689a6a37ef2d625600c3d757b5c2b80c9d0cf9a"},
{file = "aiohttp-3.12.12-cp312-cp312-win32.whl", hash = "sha256:8098a48f93b2cbcdb5778e7c9a0e0375363e40ad692348e6e65c3b70d593b27c"},
{file = "aiohttp-3.12.12-cp312-cp312-win_amd64.whl", hash = "sha256:d1c1879b2e0fc337d7a1b63fe950553c2b9e93c071cf95928aeea1902d441403"},
{file = "aiohttp-3.12.12-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ea5d604318234427929d486954e3199aded65f41593ac57aa0241ab93dda3d15"},
{file = "aiohttp-3.12.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e03ff38250b8b572dce6fcd7b6fb6ee398bb8a59e6aa199009c5322d721df4fc"},
{file = "aiohttp-3.12.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:71125b1fc2b6a94bccc63bbece620906a4dead336d2051f8af9cbf04480bc5af"},
{file = "aiohttp-3.12.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:784a66f9f853a22c6b8c2bd0ff157f9b879700f468d6d72cfa99167df08c5c9c"},
{file = "aiohttp-3.12.12-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a5be0b58670b54301404bd1840e4902570a1c3be00358e2700919cb1ea73c438"},
{file = "aiohttp-3.12.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8f13566fc7bf5a728275b434bc3bdea87a7ed3ad5f734102b02ca59d9b510f"},
{file = "aiohttp-3.12.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d736e57d1901683bc9be648aa308cb73e646252c74b4c639c35dcd401ed385ea"},
{file = "aiohttp-3.12.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2007eaa7aae9102f211c519d1ec196bd3cecb1944a095db19eeaf132b798738"},
{file = "aiohttp-3.12.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a813e61583cab6d5cdbaa34bc28863acdb92f9f46e11de1b3b9251a1e8238f6"},
{file = "aiohttp-3.12.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e408293aa910b0aea48b86a28eace41d497a85ba16c20f619f0c604597ef996c"},
{file = "aiohttp-3.12.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:f3d31faf290f5a30acba46b388465b67c6dbe8655d183e9efe2f6a1d594e6d9d"},
{file = "aiohttp-3.12.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0b84731697325b023902aa643bd1726d999f5bc7854bc28b17ff410a81151d4b"},
{file = "aiohttp-3.12.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a324c6852b6e327811748446e56cc9bb6eaa58710557922183175816e82a4234"},
{file = "aiohttp-3.12.12-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:22fd867fbd72612dcf670c90486dbcbaf702cb807fb0b42bc0b7a142a573574a"},
{file = "aiohttp-3.12.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3e092f1a970223794a4bf620a26c0e4e4e8e36bccae9b0b5da35e6d8ee598a03"},
{file = "aiohttp-3.12.12-cp313-cp313-win32.whl", hash = "sha256:7f5f5eb8717ef8ba15ab35fcde5a70ad28bbdc34157595d1cddd888a985f5aae"},
{file = "aiohttp-3.12.12-cp313-cp313-win_amd64.whl", hash = "sha256:ace2499bdd03c329c054dc4b47361f2b19d5aa470f7db5c7e0e989336761b33c"},
{file = "aiohttp-3.12.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0d0b1c27c05a7d39a50e946ec5f94c3af4ffadd33fa5f20705df42fb0a72ca14"},
{file = "aiohttp-3.12.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e5928847e6f7b7434921fbabf73fa5609d1f2bf4c25d9d4522b1fcc3b51995cb"},
{file = "aiohttp-3.12.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7678147c3c85a7ae61559b06411346272ed40a08f54bc05357079a63127c9718"},
{file = "aiohttp-3.12.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f50057f36f2a1d8e750b273bb966bec9f69ee1e0a20725ae081610501f25d555"},
{file = "aiohttp-3.12.12-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5e834f0f11ff5805d11f0f22b627c75eadfaf91377b457875e4e3affd0b924f"},
{file = "aiohttp-3.12.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f94b2e2dea19d09745ef02ed483192260750f18731876a5c76f1c254b841443a"},
{file = "aiohttp-3.12.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b434bfb49564dc1c318989a0ab1d3000d23e5cfd00d8295dc9d5a44324cdd42d"},
{file = "aiohttp-3.12.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ed76bc80177ddb7c5c93e1a6440b115ed2c92a3063420ac55206fd0832a6459"},
{file = "aiohttp-3.12.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1282a9acd378f2aed8dc79c01e702b1d5fd260ad083926a88ec7e987c4e0ade"},
{file = "aiohttp-3.12.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09a213c13fba321586edab1528b530799645b82bd64d79b779eb8d47ceea155a"},
{file = "aiohttp-3.12.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:72eae16a9233561d315e72ae78ed9fc65ab3db0196e56cb2d329c755d694f137"},
{file = "aiohttp-3.12.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f25990c507dbbeefd5a6a17df32a4ace634f7b20a38211d1b9609410c7f67a24"},
{file = "aiohttp-3.12.12-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:3a2aa255417c8ccf1b39359cd0a3d63ae3b5ced83958dbebc4d9113327c0536a"},
{file = "aiohttp-3.12.12-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:a4c53b89b3f838e9c25f943d1257efff10b348cb56895f408ddbcb0ec953a2ad"},
{file = "aiohttp-3.12.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b5a49c2dcb32114455ad503e8354624d85ab311cbe032da03965882492a9cb98"},
{file = "aiohttp-3.12.12-cp39-cp39-win32.whl", hash = "sha256:74fddc0ba8cea6b9c5bd732eb9d97853543586596b86391f8de5d4f6c2a0e068"},
{file = "aiohttp-3.12.12-cp39-cp39-win_amd64.whl", hash = "sha256:ddf40ba4a1d0b4d232dc47d2b98ae7e937dcbc40bb5f2746bce0af490a64526f"},
{file = "aiohttp-3.12.12.tar.gz", hash = "sha256:05875595d2483d96cb61fa9f64e75262d7ac6251a7e3c811d8e26f7d721760bd"},
]
[package.dependencies]
aiohappyeyeballs = ">=2.5.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.3.0)", "brotlicffi"]
[[package]]
name = "aioresponses"
version = "0.7.8"
description = "Mock out requests made by ClientSession from aiohttp package"
optional = false
python-versions = "*"
files = [
{file = "aioresponses-0.7.8-py2.py3-none-any.whl", hash = "sha256:b73bd4400d978855e55004b23a3a84cb0f018183bcf066a85ad392800b5b9a94"},
{file = "aioresponses-0.7.8.tar.gz", hash = "sha256:b861cdfe5dc58f3b8afac7b0a6973d5d7b2cb608dd0f6253d16b8ee8eaf6df11"},
]
[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 = "anyio"
version = "4.9.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
optional = false
python-versions = ">=3.9"
files = [
{file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"},
{file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"},
]
[package.dependencies]
idna = ">=2.8"
sniffio = ">=1.1"
typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
[package.extras]
doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"]
test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"]
trio = ["trio (>=0.26.1)"]
[[package]]
name = "astroid"
version = "3.3.10"
description = "An abstract syntax tree for Python with inference support."
optional = false
python-versions = ">=3.9.0"
files = [
{file = "astroid-3.3.10-py3-none-any.whl", hash = "sha256:104fb9cb9b27ea95e847a94c003be03a9e039334a8ebca5ee27dafaf5c5711eb"},
{file = "astroid-3.3.10.tar.gz", hash = "sha256:c332157953060c6deb9caa57303ae0d20b0fbdb2e59b4a4f2a6ba49d0a7961ce"},
]
[[package]]
name = "attrs"
version = "25.3.0"
description = "Classes Without Boilerplate"
optional = false
python-versions = ">=3.8"
files = [
{file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3"},
{file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"},
]
[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"]
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.6.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.6.0-py2.py3-none-any.whl", hash = "sha256:91685589498f79e8655e8a8947431ad6288831d643f11c55c2143ffcc738048d"},
{file = "authlib-1.6.0.tar.gz", hash = "sha256:4367d32031b7af175ad3a323d571dc7257b7099d55978087ceae4a0d88cd3210"},
]
[package.dependencies]
cryptography = "*"
[[package]]
name = "awesomeversion"
version = "25.5.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.9"
files = [
{file = "awesomeversion-25.5.0-py3-none-any.whl", hash = "sha256:34a676ae10e10d3a96829fcc890a1d377fe1a7a2b98ee19951631951c2aebff6"},
{file = "awesomeversion-25.5.0.tar.gz", hash = "sha256:d64c9f3579d2f60a5aa506a9dd0b38a74ab5f45e04800f943a547c1102280f31"},
]
[[package]]
name = "certifi"
version = "2025.4.26"
description = "Python package for providing Mozilla's CA Bundle."
optional = false
python-versions = ">=3.6"
files = [
{file = "certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3"},
{file = "certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6"},
]
[[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.2"
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.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941"},
{file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd"},
{file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6"},
{file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d"},
{file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86"},
{file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c"},
{file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0"},
{file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef"},
{file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6"},
{file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366"},
{file = "charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db"},
{file = "charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a"},
{file = "charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509"},
{file = "charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2"},
{file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645"},
{file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd"},
{file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8"},
{file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f"},
{file = "charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7"},
{file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9"},
{file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544"},
{file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82"},
{file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0"},
{file = "charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5"},
{file = "charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a"},
{file = "charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28"},
{file = "charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7"},
{file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3"},
{file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a"},
{file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214"},
{file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a"},
{file = "charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd"},
{file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981"},
{file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c"},
{file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b"},
{file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d"},
{file = "charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f"},
{file = "charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c"},
{file = "charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e"},
{file = "charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0"},
{file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf"},
{file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e"},
{file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1"},
{file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c"},
{file = "charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691"},
{file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0"},
{file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b"},
{file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff"},
{file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b"},
{file = "charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148"},
{file = "charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7"},
{file = "charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cad5f45b3146325bb38d6855642f6fd609c3f7cad4dbaf75549bf3b904d3184"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2680962a4848b3c4f155dc2ee64505a9c57186d0d56b43123b17ca3de18f0fa"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36b31da18b8890a76ec181c3cf44326bf2c48e36d393ca1b72b3f484113ea344"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4074c5a429281bf056ddd4c5d3b740ebca4d43ffffe2ef4bf4d2d05114299da"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9e36a97bee9b86ef9a1cf7bb96747eb7a15c2f22bdb5b516434b00f2a599f02"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:1b1bde144d98e446b056ef98e59c256e9294f6b74d7af6846bf5ffdafd687a7d"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:915f3849a011c1f593ab99092f3cecfcb4d65d8feb4a64cf1bf2d22074dc0ec4"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:fb707f3e15060adf5b7ada797624a6c6e0138e2a26baa089df64c68ee98e040f"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:25a23ea5c7edc53e0f29bae2c44fcb5a1aa10591aae107f2a2b2583a9c5cbc64"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:770cab594ecf99ae64c236bc9ee3439c3f46be49796e265ce0cc8bc17b10294f"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-win32.whl", hash = "sha256:6a0289e4589e8bdfef02a80478f1dfcb14f0ab696b5a00e1f4b8a14a307a3c58"},
{file = "charset_normalizer-3.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6fc1f5b51fa4cecaa18f2bd7a003f3dd039dd615cd69a2afd6d3b19aed6775f2"},
{file = "charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb"},
{file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a"},
{file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45"},
{file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5"},
{file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1"},
{file = "charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027"},
{file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b"},
{file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455"},
{file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01"},
{file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58"},
{file = "charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681"},
{file = "charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7"},
{file = "charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a"},
{file = "charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4"},
{file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7"},
{file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836"},
{file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597"},
{file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7"},
{file = "charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f"},
{file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba"},
{file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12"},
{file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518"},
{file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5"},
{file = "charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3"},
{file = "charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471"},
{file = "charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e"},
{file = "charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0"},
{file = "charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63"},
]
[[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.4.1"
description = "Fix common misspellings in text files"
optional = false
python-versions = ">=3.8"
files = [
{file = "codespell-2.4.1-py3-none-any.whl", hash = "sha256:3dadafa67df7e4a3dbf51e0d7315061b80d265f9552ebd699b3dd6834b47e425"},
{file = "codespell-2.4.1.tar.gz", hash = "sha256:299fcdcb09d23e81e35a671bbe746d5ad7e8385972e65dbb833a2eaac33c01e5"},
]
[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.8.2"
description = "Code coverage measurement for Python"
optional = false
python-versions = ">=3.9"
files = [
{file = "coverage-7.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd8ec21e1443fd7a447881332f7ce9d35b8fbd2849e761bb290b584535636b0a"},
{file = "coverage-7.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4c26c2396674816deaeae7ded0e2b42c26537280f8fe313335858ffff35019be"},
{file = "coverage-7.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1aec326ed237e5880bfe69ad41616d333712c7937bcefc1343145e972938f9b3"},
{file = "coverage-7.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e818796f71702d7a13e50c70de2a1924f729228580bcba1607cccf32eea46e6"},
{file = "coverage-7.8.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:546e537d9e24efc765c9c891328f30f826e3e4808e31f5d0f87c4ba12bbd1622"},
{file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab9b09a2349f58e73f8ebc06fac546dd623e23b063e5398343c5270072e3201c"},
{file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fd51355ab8a372d89fb0e6a31719e825cf8df8b6724bee942fb5b92c3f016ba3"},
{file = "coverage-7.8.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0774df1e093acb6c9e4d58bce7f86656aeed6c132a16e2337692c12786b32404"},
{file = "coverage-7.8.2-cp310-cp310-win32.whl", hash = "sha256:00f2e2f2e37f47e5f54423aeefd6c32a7dbcedc033fcd3928a4f4948e8b96af7"},
{file = "coverage-7.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:145b07bea229821d51811bf15eeab346c236d523838eda395ea969d120d13347"},
{file = "coverage-7.8.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b99058eef42e6a8dcd135afb068b3d53aff3921ce699e127602efff9956457a9"},
{file = "coverage-7.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5feb7f2c3e6ea94d3b877def0270dff0947b8d8c04cfa34a17be0a4dc1836879"},
{file = "coverage-7.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:670a13249b957bb9050fab12d86acef7bf8f6a879b9d1a883799276e0d4c674a"},
{file = "coverage-7.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bdc8bf760459a4a4187b452213e04d039990211f98644c7292adf1e471162b5"},
{file = "coverage-7.8.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07a989c867986c2a75f158f03fdb413128aad29aca9d4dbce5fc755672d96f11"},
{file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2db10dedeb619a771ef0e2949ccba7b75e33905de959c2643a4607bef2f3fb3a"},
{file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e6ea7dba4e92926b7b5f0990634b78ea02f208d04af520c73a7c876d5a8d36cb"},
{file = "coverage-7.8.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ef2f22795a7aca99fc3c84393a55a53dd18ab8c93fb431004e4d8f0774150f54"},
{file = "coverage-7.8.2-cp311-cp311-win32.whl", hash = "sha256:641988828bc18a6368fe72355df5f1703e44411adbe49bba5644b941ce6f2e3a"},
{file = "coverage-7.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:8ab4a51cb39dc1933ba627e0875046d150e88478dbe22ce145a68393e9652975"},
{file = "coverage-7.8.2-cp311-cp311-win_arm64.whl", hash = "sha256:8966a821e2083c74d88cca5b7dcccc0a3a888a596a04c0b9668a891de3a0cc53"},
{file = "coverage-7.8.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e2f6fe3654468d061942591aef56686131335b7a8325684eda85dacdf311356c"},
{file = "coverage-7.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76090fab50610798cc05241bf83b603477c40ee87acd358b66196ab0ca44ffa1"},
{file = "coverage-7.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bd0a0a5054be160777a7920b731a0570284db5142abaaf81bcbb282b8d99279"},
{file = "coverage-7.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da23ce9a3d356d0affe9c7036030b5c8f14556bd970c9b224f9c8205505e3b99"},
{file = "coverage-7.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9392773cffeb8d7e042a7b15b82a414011e9d2b5fdbbd3f7e6a6b17d5e21b20"},
{file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:876cbfd0b09ce09d81585d266c07a32657beb3eaec896f39484b631555be0fe2"},
{file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3da9b771c98977a13fbc3830f6caa85cae6c9c83911d24cb2d218e9394259c57"},
{file = "coverage-7.8.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a990f6510b3292686713bfef26d0049cd63b9c7bb17e0864f133cbfd2e6167f"},
{file = "coverage-7.8.2-cp312-cp312-win32.whl", hash = "sha256:bf8111cddd0f2b54d34e96613e7fbdd59a673f0cf5574b61134ae75b6f5a33b8"},
{file = "coverage-7.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:86a323a275e9e44cdf228af9b71c5030861d4d2610886ab920d9945672a81223"},
{file = "coverage-7.8.2-cp312-cp312-win_arm64.whl", hash = "sha256:820157de3a589e992689ffcda8639fbabb313b323d26388d02e154164c57b07f"},
{file = "coverage-7.8.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ea561010914ec1c26ab4188aef8b1567272ef6de096312716f90e5baa79ef8ca"},
{file = "coverage-7.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cb86337a4fcdd0e598ff2caeb513ac604d2f3da6d53df2c8e368e07ee38e277d"},
{file = "coverage-7.8.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26a4636ddb666971345541b59899e969f3b301143dd86b0ddbb570bd591f1e85"},
{file = "coverage-7.8.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5040536cf9b13fb033f76bcb5e1e5cb3b57c4807fef37db9e0ed129c6a094257"},
{file = "coverage-7.8.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc67994df9bcd7e0150a47ef41278b9e0a0ea187caba72414b71dc590b99a108"},
{file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e6c86888fd076d9e0fe848af0a2142bf606044dc5ceee0aa9eddb56e26895a0"},
{file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:684ca9f58119b8e26bef860db33524ae0365601492e86ba0b71d513f525e7050"},
{file = "coverage-7.8.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8165584ddedb49204c4e18da083913bdf6a982bfb558632a79bdaadcdafd0d48"},
{file = "coverage-7.8.2-cp313-cp313-win32.whl", hash = "sha256:34759ee2c65362163699cc917bdb2a54114dd06d19bab860725f94ef45a3d9b7"},
{file = "coverage-7.8.2-cp313-cp313-win_amd64.whl", hash = "sha256:2f9bc608fbafaee40eb60a9a53dbfb90f53cc66d3d32c2849dc27cf5638a21e3"},
{file = "coverage-7.8.2-cp313-cp313-win_arm64.whl", hash = "sha256:9fe449ee461a3b0c7105690419d0b0aba1232f4ff6d120a9e241e58a556733f7"},
{file = "coverage-7.8.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8369a7c8ef66bded2b6484053749ff220dbf83cba84f3398c84c51a6f748a008"},
{file = "coverage-7.8.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:159b81df53a5fcbc7d45dae3adad554fdbde9829a994e15227b3f9d816d00b36"},
{file = "coverage-7.8.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6fcbbd35a96192d042c691c9e0c49ef54bd7ed865846a3c9d624c30bb67ce46"},
{file = "coverage-7.8.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05364b9cc82f138cc86128dc4e2e1251c2981a2218bfcd556fe6b0fbaa3501be"},
{file = "coverage-7.8.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46d532db4e5ff3979ce47d18e2fe8ecad283eeb7367726da0e5ef88e4fe64740"},
{file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4000a31c34932e7e4fa0381a3d6deb43dc0c8f458e3e7ea6502e6238e10be625"},
{file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:43ff5033d657cd51f83015c3b7a443287250dc14e69910577c3e03bd2e06f27b"},
{file = "coverage-7.8.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:94316e13f0981cbbba132c1f9f365cac1d26716aaac130866ca812006f662199"},
{file = "coverage-7.8.2-cp313-cp313t-win32.whl", hash = "sha256:3f5673888d3676d0a745c3d0e16da338c5eea300cb1f4ada9c872981265e76d8"},
{file = "coverage-7.8.2-cp313-cp313t-win_amd64.whl", hash = "sha256:2c08b05ee8d7861e45dc5a2cc4195c8c66dca5ac613144eb6ebeaff2d502e73d"},
{file = "coverage-7.8.2-cp313-cp313t-win_arm64.whl", hash = "sha256:1e1448bb72b387755e1ff3ef1268a06617afd94188164960dba8d0245a46004b"},
{file = "coverage-7.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:496948261eaac5ac9cf43f5d0a9f6eb7a6d4cb3bedb2c5d294138142f5c18f2a"},
{file = "coverage-7.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eacd2de0d30871eff893bab0b67840a96445edcb3c8fd915e6b11ac4b2f3fa6d"},
{file = "coverage-7.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b039ffddc99ad65d5078ef300e0c7eed08c270dc26570440e3ef18beb816c1ca"},
{file = "coverage-7.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e49824808d4375ede9dd84e9961a59c47f9113039f1a525e6be170aa4f5c34d"},
{file = "coverage-7.8.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b069938961dfad881dc2f8d02b47645cd2f455d3809ba92a8a687bf513839787"},
{file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:de77c3ba8bb686d1c411e78ee1b97e6e0b963fb98b1637658dd9ad2c875cf9d7"},
{file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1676628065a498943bd3f64f099bb573e08cf1bc6088bbe33cf4424e0876f4b3"},
{file = "coverage-7.8.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8e1a26e7e50076e35f7afafde570ca2b4d7900a491174ca357d29dece5aacee7"},
{file = "coverage-7.8.2-cp39-cp39-win32.whl", hash = "sha256:6782a12bf76fa61ad9350d5a6ef5f3f020b57f5e6305cbc663803f2ebd0f270a"},
{file = "coverage-7.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:1efa4166ba75ccefd647f2d78b64f53f14fb82622bc94c5a5cb0a622f50f1c9e"},
{file = "coverage-7.8.2-pp39.pp310.pp311-none-any.whl", hash = "sha256:ec455eedf3ba0bbdf8f5a570012617eb305c63cb9f03428d39bf544cb2b94837"},
{file = "coverage-7.8.2-py3-none-any.whl", hash = "sha256:726f32ee3713f7359696331a18daf0c3b3a70bb0ae71141b9d3c52be7c595e32"},
{file = "coverage-7.8.2.tar.gz", hash = "sha256:a886d531373a1f6ff9fad2a2ba4a045b68467b779ae729ee0b3b10ac20033b27"},
]
[package.extras]
toml = ["tomli"]
[[package]]
name = "cryptography"
version = "45.0.4"
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-45.0.4-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:425a9a6ac2823ee6e46a76a21a4e8342d8fa5c01e08b823c1f19a8b74f096069"},
{file = "cryptography-45.0.4-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:680806cf63baa0039b920f4976f5f31b10e772de42f16310a6839d9f21a26b0d"},
{file = "cryptography-45.0.4-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4ca0f52170e821bc8da6fc0cc565b7bb8ff8d90d36b5e9fdd68e8a86bdf72036"},
{file = "cryptography-45.0.4-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f3fe7a5ae34d5a414957cc7f457e2b92076e72938423ac64d215722f6cf49a9e"},
{file = "cryptography-45.0.4-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:25eb4d4d3e54595dc8adebc6bbd5623588991d86591a78c2548ffb64797341e2"},
{file = "cryptography-45.0.4-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ce1678a2ccbe696cf3af15a75bb72ee008d7ff183c9228592ede9db467e64f1b"},
{file = "cryptography-45.0.4-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:49fe9155ab32721b9122975e168a6760d8ce4cffe423bcd7ca269ba41b5dfac1"},
{file = "cryptography-45.0.4-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2882338b2a6e0bd337052e8b9007ced85c637da19ef9ecaf437744495c8c2999"},
{file = "cryptography-45.0.4-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:23b9c3ea30c3ed4db59e7b9619272e94891f8a3a5591d0b656a7582631ccf750"},
{file = "cryptography-45.0.4-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b0a97c927497e3bc36b33987abb99bf17a9a175a19af38a892dc4bbb844d7ee2"},
{file = "cryptography-45.0.4-cp311-abi3-win32.whl", hash = "sha256:e00a6c10a5c53979d6242f123c0a97cff9f3abed7f064fc412c36dc521b5f257"},
{file = "cryptography-45.0.4-cp311-abi3-win_amd64.whl", hash = "sha256:817ee05c6c9f7a69a16200f0c90ab26d23a87701e2a284bd15156783e46dbcc8"},
{file = "cryptography-45.0.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:964bcc28d867e0f5491a564b7debb3ffdd8717928d315d12e0d7defa9e43b723"},
{file = "cryptography-45.0.4-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6a5bf57554e80f75a7db3d4b1dacaa2764611ae166ab42ea9a72bcdb5d577637"},
{file = "cryptography-45.0.4-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:46cf7088bf91bdc9b26f9c55636492c1cce3e7aaf8041bbf0243f5e5325cfb2d"},
{file = "cryptography-45.0.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7bedbe4cc930fa4b100fc845ea1ea5788fcd7ae9562e669989c11618ae8d76ee"},
{file = "cryptography-45.0.4-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:eaa3e28ea2235b33220b949c5a0d6cf79baa80eab2eb5607ca8ab7525331b9ff"},
{file = "cryptography-45.0.4-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:7ef2dde4fa9408475038fc9aadfc1fb2676b174e68356359632e980c661ec8f6"},
{file = "cryptography-45.0.4-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:6a3511ae33f09094185d111160fd192c67aa0a2a8d19b54d36e4c78f651dc5ad"},
{file = "cryptography-45.0.4-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:06509dc70dd71fa56eaa138336244e2fbaf2ac164fc9b5e66828fccfd2b680d6"},
{file = "cryptography-45.0.4-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5f31e6b0a5a253f6aa49be67279be4a7e5a4ef259a9f33c69f7d1b1191939872"},
{file = "cryptography-45.0.4-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:944e9ccf67a9594137f942d5b52c8d238b1b4e46c7a0c2891b7ae6e01e7c80a4"},
{file = "cryptography-45.0.4-cp37-abi3-win32.whl", hash = "sha256:c22fe01e53dc65edd1945a2e6f0015e887f84ced233acecb64b4daadb32f5c97"},
{file = "cryptography-45.0.4-cp37-abi3-win_amd64.whl", hash = "sha256:627ba1bc94f6adf0b0a2e35d87020285ead22d9f648c7e75bb64f367375f3b22"},
{file = "cryptography-45.0.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a77c6fb8d76e9c9f99f2f3437c1a4ac287b34eaf40997cfab1e9bd2be175ac39"},
{file = "cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7aad98a25ed8ac917fdd8a9c1e706e5a0956e06c498be1f713b61734333a4507"},
{file = "cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3530382a43a0e524bc931f187fc69ef4c42828cf7d7f592f7f249f602b5a4ab0"},
{file = "cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:6b613164cb8425e2f8db5849ffb84892e523bf6d26deb8f9bb76ae86181fa12b"},
{file = "cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:96d4819e25bf3b685199b304a0029ce4a3caf98947ce8a066c9137cc78ad2c58"},
{file = "cryptography-45.0.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b97737a3ffbea79eebb062eb0d67d72307195035332501722a9ca86bab9e3ab2"},
{file = "cryptography-45.0.4-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4828190fb6c4bcb6ebc6331f01fe66ae838bb3bd58e753b59d4b22eb444b996c"},
{file = "cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:03dbff8411206713185b8cebe31bc5c0eb544799a50c09035733716b386e61a4"},
{file = "cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:51dfbd4d26172d31150d84c19bbe06c68ea4b7f11bbc7b3a5e146b367c311349"},
{file = "cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:0339a692de47084969500ee455e42c58e449461e0ec845a34a6a9b9bf7df7fb8"},
{file = "cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:0cf13c77d710131d33e63626bd55ae7c0efb701ebdc2b3a7952b9b23a0412862"},
{file = "cryptography-45.0.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:bbc505d1dc469ac12a0a064214879eac6294038d6b24ae9f71faae1448a9608d"},
{file = "cryptography-45.0.4.tar.gz", hash = "sha256:7405ade85c83c37682c8fe65554759800a4a8c54b2d96e0f8ad114d31b808d57"},
]
[package.dependencies]
cffi = {version = ">=1.14", markers = "platform_python_implementation != \"PyPy\""}
[package.extras]
docs = ["sphinx (>=5.3.0)", "sphinx-inline-tabs", "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 (==45.0.4)", "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.4.0"
description = "serialize all of Python"
optional = false
python-versions = ">=3.8"
files = [
{file = "dill-0.4.0-py3-none-any.whl", hash = "sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049"},
{file = "dill-0.4.0.tar.gz", hash = "sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0"},
]
[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.7.0"
description = "A list-like structure which implements collections.abc.MutableSequence"
optional = false
python-versions = ">=3.9"
files = [
{file = "frozenlist-1.7.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cc4df77d638aa2ed703b878dd093725b72a824c3c546c076e8fdf276f78ee84a"},
{file = "frozenlist-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:716a9973a2cc963160394f701964fe25012600f3d311f60c790400b00e568b61"},
{file = "frozenlist-1.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0fd1bad056a3600047fb9462cff4c5322cebc59ebf5d0a3725e0ee78955001d"},
{file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3789ebc19cb811163e70fe2bd354cea097254ce6e707ae42e56f45e31e96cb8e"},
{file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af369aa35ee34f132fcfad5be45fbfcde0e3a5f6a1ec0712857f286b7d20cca9"},
{file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac64b6478722eeb7a3313d494f8342ef3478dff539d17002f849101b212ef97c"},
{file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f89f65d85774f1797239693cef07ad4c97fdd0639544bad9ac4b869782eb1981"},
{file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1073557c941395fdfcfac13eb2456cb8aad89f9de27bae29fabca8e563b12615"},
{file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed8d2fa095aae4bdc7fdd80351009a48d286635edffee66bf865e37a9125c50"},
{file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:24c34bea555fe42d9f928ba0a740c553088500377448febecaa82cc3e88aa1fa"},
{file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:69cac419ac6a6baad202c85aaf467b65ac860ac2e7f2ac1686dc40dbb52f6577"},
{file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:960d67d0611f4c87da7e2ae2eacf7ea81a5be967861e0c63cf205215afbfac59"},
{file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:41be2964bd4b15bf575e5daee5a5ce7ed3115320fb3c2b71fca05582ffa4dc9e"},
{file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:46d84d49e00c9429238a7ce02dc0be8f6d7cd0cd405abd1bebdc991bf27c15bd"},
{file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:15900082e886edb37480335d9d518cec978afc69ccbc30bd18610b7c1b22a718"},
{file = "frozenlist-1.7.0-cp310-cp310-win32.whl", hash = "sha256:400ddd24ab4e55014bba442d917203c73b2846391dd42ca5e38ff52bb18c3c5e"},
{file = "frozenlist-1.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:6eb93efb8101ef39d32d50bce242c84bcbddb4f7e9febfa7b524532a239b4464"},
{file = "frozenlist-1.7.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:aa51e147a66b2d74de1e6e2cf5921890de6b0f4820b257465101d7f37b49fb5a"},
{file = "frozenlist-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9b35db7ce1cd71d36ba24f80f0c9e7cff73a28d7a74e91fe83e23d27c7828750"},
{file = "frozenlist-1.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34a69a85e34ff37791e94542065c8416c1afbf820b68f720452f636d5fb990cd"},
{file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a646531fa8d82c87fe4bb2e596f23173caec9185bfbca5d583b4ccfb95183e2"},
{file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:79b2ffbba483f4ed36a0f236ccb85fbb16e670c9238313709638167670ba235f"},
{file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a26f205c9ca5829cbf82bb2a84b5c36f7184c4316617d7ef1b271a56720d6b30"},
{file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bcacfad3185a623fa11ea0e0634aac7b691aa925d50a440f39b458e41c561d98"},
{file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72c1b0fe8fe451b34f12dce46445ddf14bd2a5bcad7e324987194dc8e3a74c86"},
{file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61d1a5baeaac6c0798ff6edfaeaa00e0e412d49946c53fae8d4b8e8b3566c4ae"},
{file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7edf5c043c062462f09b6820de9854bf28cc6cc5b6714b383149745e287181a8"},
{file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:d50ac7627b3a1bd2dcef6f9da89a772694ec04d9a61b66cf87f7d9446b4a0c31"},
{file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce48b2fece5aeb45265bb7a58259f45027db0abff478e3077e12b05b17fb9da7"},
{file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:fe2365ae915a1fafd982c146754e1de6ab3478def8a59c86e1f7242d794f97d5"},
{file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:45a6f2fdbd10e074e8814eb98b05292f27bad7d1883afbe009d96abdcf3bc898"},
{file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:21884e23cffabb157a9dd7e353779077bf5b8f9a58e9b262c6caad2ef5f80a56"},
{file = "frozenlist-1.7.0-cp311-cp311-win32.whl", hash = "sha256:284d233a8953d7b24f9159b8a3496fc1ddc00f4db99c324bd5fb5f22d8698ea7"},
{file = "frozenlist-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:387cbfdcde2f2353f19c2f66bbb52406d06ed77519ac7ee21be0232147c2592d"},
{file = "frozenlist-1.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3dbf9952c4bb0e90e98aec1bd992b3318685005702656bc6f67c1a32b76787f2"},
{file = "frozenlist-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1f5906d3359300b8a9bb194239491122e6cf1444c2efb88865426f170c262cdb"},
{file = "frozenlist-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3dabd5a8f84573c8d10d8859a50ea2dec01eea372031929871368c09fa103478"},
{file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa57daa5917f1738064f302bf2626281a1cb01920c32f711fbc7bc36111058a8"},
{file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c193dda2b6d49f4c4398962810fa7d7c78f032bf45572b3e04dd5249dff27e08"},
{file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe2b675cf0aaa6d61bf8fbffd3c274b3c9b7b1623beb3809df8a81399a4a9c4"},
{file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fc5d5cda37f62b262405cf9652cf0856839c4be8ee41be0afe8858f17f4c94b"},
{file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d5ce521d1dd7d620198829b87ea002956e4319002ef0bc8d3e6d045cb4646e"},
{file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:488d0a7d6a0008ca0db273c542098a0fa9e7dfaa7e57f70acef43f32b3f69dca"},
{file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:15a7eaba63983d22c54d255b854e8108e7e5f3e89f647fc854bd77a237e767df"},
{file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1eaa7e9c6d15df825bf255649e05bd8a74b04a4d2baa1ae46d9c2d00b2ca2cb5"},
{file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4389e06714cfa9d47ab87f784a7c5be91d3934cd6e9a7b85beef808297cc025"},
{file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:73bd45e1488c40b63fe5a7df892baf9e2a4d4bb6409a2b3b78ac1c6236178e01"},
{file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99886d98e1643269760e5fe0df31e5ae7050788dd288947f7f007209b8c33f08"},
{file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:290a172aae5a4c278c6da8a96222e6337744cd9c77313efe33d5670b9f65fc43"},
{file = "frozenlist-1.7.0-cp312-cp312-win32.whl", hash = "sha256:426c7bc70e07cfebc178bc4c2bf2d861d720c4fff172181eeb4a4c41d4ca2ad3"},
{file = "frozenlist-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:563b72efe5da92e02eb68c59cb37205457c977aa7a449ed1b37e6939e5c47c6a"},
{file = "frozenlist-1.7.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee80eeda5e2a4e660651370ebffd1286542b67e268aa1ac8d6dbe973120ef7ee"},
{file = "frozenlist-1.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d1a81c85417b914139e3a9b995d4a1c84559afc839a93cf2cb7f15e6e5f6ed2d"},
{file = "frozenlist-1.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cbb65198a9132ebc334f237d7b0df163e4de83fb4f2bdfe46c1e654bdb0c5d43"},
{file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dab46c723eeb2c255a64f9dc05b8dd601fde66d6b19cdb82b2e09cc6ff8d8b5d"},
{file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6aeac207a759d0dedd2e40745575ae32ab30926ff4fa49b1635def65806fddee"},
{file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bd8c4e58ad14b4fa7802b8be49d47993182fdd4023393899632c88fd8cd994eb"},
{file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04fb24d104f425da3540ed83cbfc31388a586a7696142004c577fa61c6298c3f"},
{file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a5c505156368e4ea6b53b5ac23c92d7edc864537ff911d2fb24c140bb175e60"},
{file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bd7eb96a675f18aa5c553eb7ddc24a43c8c18f22e1f9925528128c052cdbe00"},
{file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:05579bf020096fe05a764f1f84cd104a12f78eaab68842d036772dc6d4870b4b"},
{file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:376b6222d114e97eeec13d46c486facd41d4f43bab626b7c3f6a8b4e81a5192c"},
{file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0aa7e176ebe115379b5b1c95b4096fb1c17cce0847402e227e712c27bdb5a949"},
{file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3fbba20e662b9c2130dc771e332a99eff5da078b2b2648153a40669a6d0e36ca"},
{file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f3f4410a0a601d349dd406b5713fec59b4cee7e71678d5b17edda7f4655a940b"},
{file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e2cdfaaec6a2f9327bf43c933c0319a7c429058e8537c508964a133dffee412e"},
{file = "frozenlist-1.7.0-cp313-cp313-win32.whl", hash = "sha256:5fc4df05a6591c7768459caba1b342d9ec23fa16195e744939ba5914596ae3e1"},
{file = "frozenlist-1.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:52109052b9791a3e6b5d1b65f4b909703984b770694d3eb64fad124c835d7cba"},
{file = "frozenlist-1.7.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a6f86e4193bb0e235ef6ce3dde5cbabed887e0b11f516ce8a0f4d3b33078ec2d"},
{file = "frozenlist-1.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:82d664628865abeb32d90ae497fb93df398a69bb3434463d172b80fc25b0dd7d"},
{file = "frozenlist-1.7.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:912a7e8375a1c9a68325a902f3953191b7b292aa3c3fb0d71a216221deca460b"},
{file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9537c2777167488d539bc5de2ad262efc44388230e5118868e172dd4a552b146"},
{file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:f34560fb1b4c3e30ba35fa9a13894ba39e5acfc5f60f57d8accde65f46cc5e74"},
{file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:acd03d224b0175f5a850edc104ac19040d35419eddad04e7cf2d5986d98427f1"},
{file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2038310bc582f3d6a09b3816ab01737d60bf7b1ec70f5356b09e84fb7408ab1"},
{file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8c05e4c8e5f36e5e088caa1bf78a687528f83c043706640a92cb76cd6999384"},
{file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:765bb588c86e47d0b68f23c1bee323d4b703218037765dcf3f25c838c6fecceb"},
{file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:32dc2e08c67d86d0969714dd484fd60ff08ff81d1a1e40a77dd34a387e6ebc0c"},
{file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:c0303e597eb5a5321b4de9c68e9845ac8f290d2ab3f3e2c864437d3c5a30cd65"},
{file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:a47f2abb4e29b3a8d0b530f7c3598badc6b134562b1a5caee867f7c62fee51e3"},
{file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:3d688126c242a6fabbd92e02633414d40f50bb6002fa4cf995a1d18051525657"},
{file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:4e7e9652b3d367c7bd449a727dc79d5043f48b88d0cbfd4f9f1060cf2b414104"},
{file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1a85e345b4c43db8b842cab1feb41be5cc0b10a1830e6295b69d7310f99becaf"},
{file = "frozenlist-1.7.0-cp313-cp313t-win32.whl", hash = "sha256:3a14027124ddb70dfcee5148979998066897e79f89f64b13328595c4bdf77c81"},
{file = "frozenlist-1.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3bf8010d71d4507775f658e9823210b7427be36625b387221642725b515dcf3e"},
{file = "frozenlist-1.7.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cea3dbd15aea1341ea2de490574a4a37ca080b2ae24e4b4f4b51b9057b4c3630"},
{file = "frozenlist-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7d536ee086b23fecc36c2073c371572374ff50ef4db515e4e503925361c24f71"},
{file = "frozenlist-1.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dfcebf56f703cb2e346315431699f00db126d158455e513bd14089d992101e44"},
{file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:974c5336e61d6e7eb1ea5b929cb645e882aadab0095c5a6974a111e6479f8878"},
{file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c70db4a0ab5ab20878432c40563573229a7ed9241506181bba12f6b7d0dc41cb"},
{file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1137b78384eebaf70560a36b7b229f752fb64d463d38d1304939984d5cb887b6"},
{file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e793a9f01b3e8b5c0bc646fb59140ce0efcc580d22a3468d70766091beb81b35"},
{file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74739ba8e4e38221d2c5c03d90a7e542cb8ad681915f4ca8f68d04f810ee0a87"},
{file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e63344c4e929b1a01e29bc184bbb5fd82954869033765bfe8d65d09e336a677"},
{file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2ea2a7369eb76de2217a842f22087913cdf75f63cf1307b9024ab82dfb525938"},
{file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:836b42f472a0e006e02499cef9352ce8097f33df43baaba3e0a28a964c26c7d2"},
{file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e22b9a99741294b2571667c07d9f8cceec07cb92aae5ccda39ea1b6052ed4319"},
{file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:9a19e85cc503d958abe5218953df722748d87172f71b73cf3c9257a91b999890"},
{file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f22dac33bb3ee8fe3e013aa7b91dc12f60d61d05b7fe32191ffa84c3aafe77bd"},
{file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9ccec739a99e4ccf664ea0775149f2749b8a6418eb5b8384b4dc0a7d15d304cb"},
{file = "frozenlist-1.7.0-cp39-cp39-win32.whl", hash = "sha256:b3950f11058310008a87757f3eee16a8e1ca97979833239439586857bc25482e"},
{file = "frozenlist-1.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:43a82fce6769c70f2f5a06248b614a7d268080a9d20f7457ef10ecee5af82b63"},
{file = "frozenlist-1.7.0-py3-none-any.whl", hash = "sha256:9a5af342e34f7e97caf8c995864c7a396418ae2859cc6fdf1b1073020d516a7e"},
{file = "frozenlist-1.7.0.tar.gz", hash = "sha256:2e310d81923c2437ea8670467121cc3e9b0f76d3043cc1d2331d56c7fb7a3a8f"},
]
[[package]]
name = "h11"
version = "0.16.0"
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
optional = false
python-versions = ">=3.8"
files = [
{file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"},
{file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"},
]
[[package]]
name = "httpcore"
version = "1.0.9"
description = "A minimal low-level HTTP client."
optional = false
python-versions = ">=3.8"
files = [
{file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"},
{file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"},
]
[package.dependencies]
certifi = "*"
h11 = ">=0.16"
[package.extras]
asyncio = ["anyio (>=4.0,<5.0)"]
http2 = ["h2 (>=3,<5)"]
socks = ["socksio (==1.*)"]
trio = ["trio (>=0.22.0,<1.0)"]
[[package]]
name = "httpx"
version = "0.28.1"
description = "The next generation HTTP client."
optional = false
python-versions = ">=3.8"
files = [
{file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"},
{file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"},
]
[package.dependencies]
anyio = "*"
certifi = "*"
httpcore = "==1.*"
idna = "*"
[package.extras]
brotli = ["brotli", "brotlicffi"]
cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
http2 = ["h2 (>=3,<5)"]
socks = ["socksio (==1.*)"]
zstd = ["zstandard (>=0.18.0)"]
[[package]]
name = "identify"
version = "2.6.12"
description = "File identification library for Python"
optional = false
python-versions = ">=3.9"
files = [
{file = "identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2"},
{file = "identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6"},
]
[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.1.0"
description = "brain-dead simple config-ini parsing"
optional = false
python-versions = ">=3.8"
files = [
{file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"},
{file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
]
[[package]]
name = "isort"
version = "6.0.1"
description = "A Python utility / library to sort Python imports."
optional = false
python-versions = ">=3.9.0"
files = [
{file = "isort-6.0.1-py3-none-any.whl", hash = "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615"},
{file = "isort-6.0.1.tar.gz", hash = "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450"},
]
[package.extras]
colors = ["colorama"]
plugins = ["setuptools"]
[[package]]
name = "jinja2"
version = "3.1.6"
description = "A very fast and expressive template engine."
optional = false
python-versions = ">=3.7"
files = [
{file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"},
{file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"},
]
[package.dependencies]
MarkupSafe = ">=2.0"
[package.extras]
i18n = ["Babel (>=2.7)"]
[[package]]
name = "joblib"
version = "1.5.1"
description = "Lightweight pipelining with Python functions"
optional = false
python-versions = ">=3.9"
files = [
{file = "joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a"},
{file = "joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444"},
]
[[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 = "4.0.0"
description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
optional = false
python-versions = ">=3.9"
files = [
{file = "marshmallow-4.0.0-py3-none-any.whl", hash = "sha256:e7b0528337e9990fd64950f8a6b3a1baabed09ad17a0dfb844d701151f92d203"},
{file = "marshmallow-4.0.0.tar.gz", hash = "sha256:3b6e80aac299a7935cfb97ed01d1854fb90b5079430969af92118ea1b12a8d55"},
]
[package.extras]
dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"]
docs = ["autodocsumm (==0.2.14)", "furo (==2024.8.6)", "sphinx (==8.2.3)", "sphinx-copybutton (==0.5.2)", "sphinx-issues (==5.0.1)", "sphinxext-opengraph (==0.10.0)"]
tests = ["pytest", "simplejson"]
[[package]]
name = "mashumaro"
version = "3.16"
description = "Fast and well tested serialization library"
optional = false
python-versions = ">=3.9"
files = [
{file = "mashumaro-3.16-py3-none-any.whl", hash = "sha256:d72782cdad5e164748ca883023bc5a214a80835cdca75826bf0bcbff827e0bd3"},
{file = "mashumaro-3.16.tar.gz", hash = "sha256:3844137cf053bbac30c4cbd0ee9984e839a5731a0ef96fd3dd9388359af3f2e1"},
]
[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.4.4"
description = "multidict implementation"
optional = false
python-versions = ">=3.9"
files = [
{file = "multidict-6.4.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8adee3ac041145ffe4488ea73fa0a622b464cc25340d98be76924d0cda8545ff"},
{file = "multidict-6.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b61e98c3e2a861035aaccd207da585bdcacef65fe01d7a0d07478efac005e028"},
{file = "multidict-6.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:75493f28dbadecdbb59130e74fe935288813301a8554dc32f0c631b6bdcdf8b0"},
{file = "multidict-6.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffc3c6a37e048b5395ee235e4a2a0d639c2349dffa32d9367a42fc20d399772"},
{file = "multidict-6.4.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:87cb72263946b301570b0f63855569a24ee8758aaae2cd182aae7d95fbc92ca7"},
{file = "multidict-6.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bbf7bd39822fd07e3609b6b4467af4c404dd2b88ee314837ad1830a7f4a8299"},
{file = "multidict-6.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1f7cbd4f1f44ddf5fd86a8675b7679176eae770f2fc88115d6dddb6cefb59bc"},
{file = "multidict-6.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb5ac9e5bfce0e6282e7f59ff7b7b9a74aa8e5c60d38186a4637f5aa764046ad"},
{file = "multidict-6.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4efc31dfef8c4eeb95b6b17d799eedad88c4902daba39ce637e23a17ea078915"},
{file = "multidict-6.4.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9fcad2945b1b91c29ef2b4050f590bfcb68d8ac8e0995a74e659aa57e8d78e01"},
{file = "multidict-6.4.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:d877447e7368c7320832acb7159557e49b21ea10ffeb135c1077dbbc0816b598"},
{file = "multidict-6.4.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:33a12ebac9f380714c298cbfd3e5b9c0c4e89c75fe612ae496512ee51028915f"},
{file = "multidict-6.4.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:0f14ea68d29b43a9bf37953881b1e3eb75b2739e896ba4a6aa4ad4c5b9ffa145"},
{file = "multidict-6.4.4-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0327ad2c747a6600e4797d115d3c38a220fdb28e54983abe8964fd17e95ae83c"},
{file = "multidict-6.4.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d1a20707492db9719a05fc62ee215fd2c29b22b47c1b1ba347f9abc831e26683"},
{file = "multidict-6.4.4-cp310-cp310-win32.whl", hash = "sha256:d83f18315b9fca5db2452d1881ef20f79593c4aa824095b62cb280019ef7aa3d"},
{file = "multidict-6.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:9c17341ee04545fd962ae07330cb5a39977294c883485c8d74634669b1f7fe04"},
{file = "multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95"},
{file = "multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a"},
{file = "multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223"},
{file = "multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44"},
{file = "multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065"},
{file = "multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f"},
{file = "multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a"},
{file = "multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2"},
{file = "multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1"},
{file = "multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42"},
{file = "multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e"},
{file = "multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd"},
{file = "multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925"},
{file = "multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c"},
{file = "multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08"},
{file = "multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49"},
{file = "multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529"},
{file = "multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2"},
{file = "multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d"},
{file = "multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a"},
{file = "multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f"},
{file = "multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93"},
{file = "multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780"},
{file = "multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482"},
{file = "multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1"},
{file = "multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275"},
{file = "multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b"},
{file = "multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2"},
{file = "multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc"},
{file = "multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed"},
{file = "multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740"},
{file = "multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e"},
{file = "multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b"},
{file = "multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781"},
{file = "multidict-6.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:82ffabefc8d84c2742ad19c37f02cde5ec2a1ee172d19944d380f920a340e4b9"},
{file = "multidict-6.4.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6a2f58a66fe2c22615ad26156354005391e26a2f3721c3621504cd87c1ea87bf"},
{file = "multidict-6.4.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5883d6ee0fd9d8a48e9174df47540b7545909841ac82354c7ae4cbe9952603bd"},
{file = "multidict-6.4.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9abcf56a9511653fa1d052bfc55fbe53dbee8f34e68bd6a5a038731b0ca42d15"},
{file = "multidict-6.4.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6ed5ae5605d4ad5a049fad2a28bb7193400700ce2f4ae484ab702d1e3749c3f9"},
{file = "multidict-6.4.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbfcb60396f9bcfa63e017a180c3105b8c123a63e9d1428a36544e7d37ca9e20"},
{file = "multidict-6.4.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0f1987787f5f1e2076b59692352ab29a955b09ccc433c1f6b8e8e18666f608b"},
{file = "multidict-6.4.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d0121ccce8c812047d8d43d691a1ad7641f72c4f730474878a5aeae1b8ead8c"},
{file = "multidict-6.4.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83ec4967114295b8afd120a8eec579920c882831a3e4c3331d591a8e5bfbbc0f"},
{file = "multidict-6.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:995f985e2e268deaf17867801b859a282e0448633f1310e3704b30616d269d69"},
{file = "multidict-6.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:d832c608f94b9f92a0ec8b7e949be7792a642b6e535fcf32f3e28fab69eeb046"},
{file = "multidict-6.4.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d21c1212171cf7da703c5b0b7a0e85be23b720818aef502ad187d627316d5645"},
{file = "multidict-6.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:cbebaa076aaecad3d4bb4c008ecc73b09274c952cf6a1b78ccfd689e51f5a5b0"},
{file = "multidict-6.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:c93a6fb06cc8e5d3628b2b5fda215a5db01e8f08fc15fadd65662d9b857acbe4"},
{file = "multidict-6.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8cd8f81f1310182362fb0c7898145ea9c9b08a71081c5963b40ee3e3cac589b1"},
{file = "multidict-6.4.4-cp313-cp313-win32.whl", hash = "sha256:3e9f1cd61a0ab857154205fb0b1f3d3ace88d27ebd1409ab7af5096e409614cd"},
{file = "multidict-6.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:8ffb40b74400e4455785c2fa37eba434269149ec525fc8329858c862e4b35373"},
{file = "multidict-6.4.4-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:6a602151dbf177be2450ef38966f4be3467d41a86c6a845070d12e17c858a156"},
{file = "multidict-6.4.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0d2b9712211b860d123815a80b859075d86a4d54787e247d7fbee9db6832cf1c"},
{file = "multidict-6.4.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d2fa86af59f8fc1972e121ade052145f6da22758f6996a197d69bb52f8204e7e"},
{file = "multidict-6.4.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50855d03e9e4d66eab6947ba688ffb714616f985838077bc4b490e769e48da51"},
{file = "multidict-6.4.4-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:5bce06b83be23225be1905dcdb6b789064fae92499fbc458f59a8c0e68718601"},
{file = "multidict-6.4.4-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66ed0731f8e5dfd8369a883b6e564aca085fb9289aacabd9decd70568b9a30de"},
{file = "multidict-6.4.4-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:329ae97fc2f56f44d91bc47fe0972b1f52d21c4b7a2ac97040da02577e2daca2"},
{file = "multidict-6.4.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c27e5dcf520923d6474d98b96749e6805f7677e93aaaf62656005b8643f907ab"},
{file = "multidict-6.4.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:058cc59b9e9b143cc56715e59e22941a5d868c322242278d28123a5d09cdf6b0"},
{file = "multidict-6.4.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:69133376bc9a03f8c47343d33f91f74a99c339e8b58cea90433d8e24bb298031"},
{file = "multidict-6.4.4-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:d6b15c55721b1b115c5ba178c77104123745b1417527ad9641a4c5e2047450f0"},
{file = "multidict-6.4.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:a887b77f51d3d41e6e1a63cf3bc7ddf24de5939d9ff69441387dfefa58ac2e26"},
{file = "multidict-6.4.4-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:632a3bf8f1787f7ef7d3c2f68a7bde5be2f702906f8b5842ad6da9d974d0aab3"},
{file = "multidict-6.4.4-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:a145c550900deb7540973c5cdb183b0d24bed6b80bf7bddf33ed8f569082535e"},
{file = "multidict-6.4.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc5d83c6619ca5c9672cb78b39ed8542f1975a803dee2cda114ff73cbb076edd"},
{file = "multidict-6.4.4-cp313-cp313t-win32.whl", hash = "sha256:3312f63261b9df49be9d57aaa6abf53a6ad96d93b24f9cc16cf979956355ce6e"},
{file = "multidict-6.4.4-cp313-cp313t-win_amd64.whl", hash = "sha256:ba852168d814b2c73333073e1c7116d9395bea69575a01b0b3c89d2d5a87c8fb"},
{file = "multidict-6.4.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:603f39bd1cf85705c6c1ba59644b480dfe495e6ee2b877908de93322705ad7cf"},
{file = "multidict-6.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fc60f91c02e11dfbe3ff4e1219c085695c339af72d1641800fe6075b91850c8f"},
{file = "multidict-6.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:496bcf01c76a70a31c3d746fd39383aad8d685ce6331e4c709e9af4ced5fa221"},
{file = "multidict-6.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4219390fb5bf8e548e77b428bb36a21d9382960db5321b74d9d9987148074d6b"},
{file = "multidict-6.4.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3ef4e9096ff86dfdcbd4a78253090ba13b1d183daa11b973e842465d94ae1772"},
{file = "multidict-6.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:49a29d7133b1fc214e818bbe025a77cc6025ed9a4f407d2850373ddde07fd04a"},
{file = "multidict-6.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e32053d6d3a8b0dfe49fde05b496731a0e6099a4df92154641c00aa76786aef5"},
{file = "multidict-6.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cc403092a49509e8ef2d2fd636a8ecefc4698cc57bbe894606b14579bc2a955"},
{file = "multidict-6.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5363f9b2a7f3910e5c87d8b1855c478c05a2dc559ac57308117424dfaad6805c"},
{file = "multidict-6.4.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e543a40e4946cf70a88a3be87837a3ae0aebd9058ba49e91cacb0b2cd631e2b"},
{file = "multidict-6.4.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:60d849912350da557fe7de20aa8cf394aada6980d0052cc829eeda4a0db1c1db"},
{file = "multidict-6.4.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:19d08b4f22eae45bb018b9f06e2838c1e4b853c67628ef8ae126d99de0da6395"},
{file = "multidict-6.4.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d693307856d1ef08041e8b6ff01d5b4618715007d288490ce2c7e29013c12b9a"},
{file = "multidict-6.4.4-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:fad6daaed41021934917f4fb03ca2db8d8a4d79bf89b17ebe77228eb6710c003"},
{file = "multidict-6.4.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c10d17371bff801af0daf8b073c30b6cf14215784dc08cd5c43ab5b7b8029bbc"},
{file = "multidict-6.4.4-cp39-cp39-win32.whl", hash = "sha256:7e23f2f841fcb3ebd4724a40032d32e0892fbba4143e43d2a9e7695c5e50e6bd"},
{file = "multidict-6.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:4d7b50b673ffb4ff4366e7ab43cf1f0aef4bd3608735c5fbdf0bdb6f690da411"},
{file = "multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac"},
{file = "multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8"},
]
[[package]]
name = "mypy"
version = "1.16.0"
description = "Optional static typing for Python"
optional = false
python-versions = ">=3.9"
files = [
{file = "mypy-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7909541fef256527e5ee9c0a7e2aeed78b6cda72ba44298d1334fe7881b05c5c"},
{file = "mypy-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e71d6f0090c2256c713ed3d52711d01859c82608b5d68d4fa01a3fe30df95571"},
{file = "mypy-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:936ccfdd749af4766be824268bfe22d1db9eb2f34a3ea1d00ffbe5b5265f5491"},
{file = "mypy-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4086883a73166631307fdd330c4a9080ce24913d4f4c5ec596c601b3a4bdd777"},
{file = "mypy-1.16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:feec38097f71797da0231997e0de3a58108c51845399669ebc532c815f93866b"},
{file = "mypy-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:09a8da6a0ee9a9770b8ff61b39c0bb07971cda90e7297f4213741b48a0cc8d93"},
{file = "mypy-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9f826aaa7ff8443bac6a494cf743f591488ea940dd360e7dd330e30dd772a5ab"},
{file = "mypy-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:82d056e6faa508501af333a6af192c700b33e15865bda49611e3d7d8358ebea2"},
{file = "mypy-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:089bedc02307c2548eb51f426e085546db1fa7dd87fbb7c9fa561575cf6eb1ff"},
{file = "mypy-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6a2322896003ba66bbd1318c10d3afdfe24e78ef12ea10e2acd985e9d684a666"},
{file = "mypy-1.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:021a68568082c5b36e977d54e8f1de978baf401a33884ffcea09bd8e88a98f4c"},
{file = "mypy-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:54066fed302d83bf5128632d05b4ec68412e1f03ef2c300434057d66866cea4b"},
{file = "mypy-1.16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c5436d11e89a3ad16ce8afe752f0f373ae9620841c50883dc96f8b8805620b13"},
{file = "mypy-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f2622af30bf01d8fc36466231bdd203d120d7a599a6d88fb22bdcb9dbff84090"},
{file = "mypy-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d045d33c284e10a038f5e29faca055b90eee87da3fc63b8889085744ebabb5a1"},
{file = "mypy-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b4968f14f44c62e2ec4a038c8797a87315be8df7740dc3ee8d3bfe1c6bf5dba8"},
{file = "mypy-1.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eb14a4a871bb8efb1e4a50360d4e3c8d6c601e7a31028a2c79f9bb659b63d730"},
{file = "mypy-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:bd4e1ebe126152a7bbaa4daedd781c90c8f9643c79b9748caa270ad542f12bec"},
{file = "mypy-1.16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a9e056237c89f1587a3be1a3a70a06a698d25e2479b9a2f57325ddaaffc3567b"},
{file = "mypy-1.16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0b07e107affb9ee6ce1f342c07f51552d126c32cd62955f59a7db94a51ad12c0"},
{file = "mypy-1.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c6fb60cbd85dc65d4d63d37cb5c86f4e3a301ec605f606ae3a9173e5cf34997b"},
{file = "mypy-1.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7e32297a437cc915599e0578fa6bc68ae6a8dc059c9e009c628e1c47f91495d"},
{file = "mypy-1.16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:afe420c9380ccec31e744e8baff0d406c846683681025db3531b32db56962d52"},
{file = "mypy-1.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:55f9076c6ce55dd3f8cd0c6fff26a008ca8e5131b89d5ba6d86bd3f47e736eeb"},
{file = "mypy-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f56236114c425620875c7cf71700e3d60004858da856c6fc78998ffe767b73d3"},
{file = "mypy-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:15486beea80be24ff067d7d0ede673b001d0d684d0095803b3e6e17a886a2a92"},
{file = "mypy-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f2ed0e0847a80655afa2c121835b848ed101cc7b8d8d6ecc5205aedc732b1436"},
{file = "mypy-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eb5fbc8063cb4fde7787e4c0406aa63094a34a2daf4673f359a1fb64050e9cb2"},
{file = "mypy-1.16.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a5fcfdb7318c6a8dd127b14b1052743b83e97a970f0edb6c913211507a255e20"},
{file = "mypy-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:2e7e0ad35275e02797323a5aa1be0b14a4d03ffdb2e5f2b0489fa07b89c67b21"},
{file = "mypy-1.16.0-py3-none-any.whl", hash = "sha256:29e1499864a3888bca5c1542f2d7232c6e586295183320caa95758fc84034031"},
{file = "mypy-1.16.0.tar.gz", hash = "sha256:84b94283f817e2aa6350a14b4a8fb2a35a53c286f97c9d30f53b63620e7af8ab"},
]
[package.dependencies]
mypy_extensions = ">=1.0.0"
pathspec = ">=0.9.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.1.0"
description = "Type system extensions for programs checked with the mypy type checker."
optional = false
python-versions = ">=3.8"
files = [
{file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"},
{file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"},
]
[[package]]
name = "nltk"
version = "3.9.1"
description = "Natural Language Toolkit"
optional = false
python-versions = ">=3.8"
files = [
{file = "nltk-3.9.1-py3-none-any.whl", hash = "sha256:4fa26829c5b00715afe3061398a8989dc643b92ce7dd93fb4585a70930d168a1"},
{file = "nltk-3.9.1.tar.gz", hash = "sha256:87d127bd3de4bd89a4f81265e5fa59cb1b199b27440175370f7417d2bc7ae868"},
]
[package.dependencies]
click = "*"
joblib = "*"
regex = ">=2021.8.3"
tqdm = "*"
[package.extras]
all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"]
corenlp = ["requests"]
machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"]
plot = ["matplotlib"]
tgrep = ["pyparsing"]
twitter = ["twython"]
[[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.18"
description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy"
optional = false
python-versions = ">=3.9"
files = [
{file = "orjson-3.10.18-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a45e5d68066b408e4bc383b6e4ef05e717c65219a9e1390abc6155a520cac402"},
{file = "orjson-3.10.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be3b9b143e8b9db05368b13b04c84d37544ec85bb97237b3a923f076265ec89c"},
{file = "orjson-3.10.18-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9b0aa09745e2c9b3bf779b096fa71d1cc2d801a604ef6dd79c8b1bfef52b2f92"},
{file = "orjson-3.10.18-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53a245c104d2792e65c8d225158f2b8262749ffe64bc7755b00024757d957a13"},
{file = "orjson-3.10.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9495ab2611b7f8a0a8a505bcb0f0cbdb5469caafe17b0e404c3c746f9900469"},
{file = "orjson-3.10.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73be1cbcebadeabdbc468f82b087df435843c809cd079a565fb16f0f3b23238f"},
{file = "orjson-3.10.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe8936ee2679e38903df158037a2f1c108129dee218975122e37847fb1d4ac68"},
{file = "orjson-3.10.18-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7115fcbc8525c74e4c2b608129bef740198e9a120ae46184dac7683191042056"},
{file = "orjson-3.10.18-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:771474ad34c66bc4d1c01f645f150048030694ea5b2709b87d3bda273ffe505d"},
{file = "orjson-3.10.18-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:7c14047dbbea52886dd87169f21939af5d55143dad22d10db6a7514f058156a8"},
{file = "orjson-3.10.18-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:641481b73baec8db14fdf58f8967e52dc8bda1f2aba3aa5f5c1b07ed6df50b7f"},
{file = "orjson-3.10.18-cp310-cp310-win32.whl", hash = "sha256:607eb3ae0909d47280c1fc657c4284c34b785bae371d007595633f4b1a2bbe06"},
{file = "orjson-3.10.18-cp310-cp310-win_amd64.whl", hash = "sha256:8770432524ce0eca50b7efc2a9a5f486ee0113a5fbb4231526d414e6254eba92"},
{file = "orjson-3.10.18-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e0a183ac3b8e40471e8d843105da6fbe7c070faab023be3b08188ee3f85719b8"},
{file = "orjson-3.10.18-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:5ef7c164d9174362f85238d0cd4afdeeb89d9e523e4651add6a5d458d6f7d42d"},
{file = "orjson-3.10.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd14c5d99cdc7bf93f22b12ec3b294931518aa019e2a147e8aa2f31fd3240f7"},
{file = "orjson-3.10.18-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7b672502323b6cd133c4af6b79e3bea36bad2d16bca6c1f645903fce83909a7a"},
{file = "orjson-3.10.18-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51f8c63be6e070ec894c629186b1c0fe798662b8687f3d9fdfa5e401c6bd7679"},
{file = "orjson-3.10.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f9478ade5313d724e0495d167083c6f3be0dd2f1c9c8a38db9a9e912cdaf947"},
{file = "orjson-3.10.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:187aefa562300a9d382b4b4eb9694806e5848b0cedf52037bb5c228c61bb66d4"},
{file = "orjson-3.10.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9da552683bc9da222379c7a01779bddd0ad39dd699dd6300abaf43eadee38334"},
{file = "orjson-3.10.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e450885f7b47a0231979d9c49b567ed1c4e9f69240804621be87c40bc9d3cf17"},
{file = "orjson-3.10.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:5e3c9cc2ba324187cd06287ca24f65528f16dfc80add48dc99fa6c836bb3137e"},
{file = "orjson-3.10.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:50ce016233ac4bfd843ac5471e232b865271d7d9d44cf9d33773bcd883ce442b"},
{file = "orjson-3.10.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b3ceff74a8f7ffde0b2785ca749fc4e80e4315c0fd887561144059fb1c138aa7"},
{file = "orjson-3.10.18-cp311-cp311-win32.whl", hash = "sha256:fdba703c722bd868c04702cac4cb8c6b8ff137af2623bc0ddb3b3e6a2c8996c1"},
{file = "orjson-3.10.18-cp311-cp311-win_amd64.whl", hash = "sha256:c28082933c71ff4bc6ccc82a454a2bffcef6e1d7379756ca567c772e4fb3278a"},
{file = "orjson-3.10.18-cp311-cp311-win_arm64.whl", hash = "sha256:a6c7c391beaedd3fa63206e5c2b7b554196f14debf1ec9deb54b5d279b1b46f5"},
{file = "orjson-3.10.18-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:50c15557afb7f6d63bc6d6348e0337a880a04eaa9cd7c9d569bcb4e760a24753"},
{file = "orjson-3.10.18-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:356b076f1662c9813d5fa56db7d63ccceef4c271b1fb3dd522aca291375fcf17"},
{file = "orjson-3.10.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:559eb40a70a7494cd5beab2d73657262a74a2c59aff2068fdba8f0424ec5b39d"},
{file = "orjson-3.10.18-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f3c29eb9a81e2fbc6fd7ddcfba3e101ba92eaff455b8d602bf7511088bbc0eae"},
{file = "orjson-3.10.18-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6612787e5b0756a171c7d81ba245ef63a3533a637c335aa7fcb8e665f4a0966f"},
{file = "orjson-3.10.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ac6bd7be0dcab5b702c9d43d25e70eb456dfd2e119d512447468f6405b4a69c"},
{file = "orjson-3.10.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9f72f100cee8dde70100406d5c1abba515a7df926d4ed81e20a9730c062fe9ad"},
{file = "orjson-3.10.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dca85398d6d093dd41dc0983cbf54ab8e6afd1c547b6b8a311643917fbf4e0c"},
{file = "orjson-3.10.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:22748de2a07fcc8781a70edb887abf801bb6142e6236123ff93d12d92db3d406"},
{file = "orjson-3.10.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:3a83c9954a4107b9acd10291b7f12a6b29e35e8d43a414799906ea10e75438e6"},
{file = "orjson-3.10.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:303565c67a6c7b1f194c94632a4a39918e067bd6176a48bec697393865ce4f06"},
{file = "orjson-3.10.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:86314fdb5053a2f5a5d881f03fca0219bfdf832912aa88d18676a5175c6916b5"},
{file = "orjson-3.10.18-cp312-cp312-win32.whl", hash = "sha256:187ec33bbec58c76dbd4066340067d9ece6e10067bb0cc074a21ae3300caa84e"},
{file = "orjson-3.10.18-cp312-cp312-win_amd64.whl", hash = "sha256:f9f94cf6d3f9cd720d641f8399e390e7411487e493962213390d1ae45c7814fc"},
{file = "orjson-3.10.18-cp312-cp312-win_arm64.whl", hash = "sha256:3d600be83fe4514944500fa8c2a0a77099025ec6482e8087d7659e891f23058a"},
{file = "orjson-3.10.18-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:69c34b9441b863175cc6a01f2935de994025e773f814412030f269da4f7be147"},
{file = "orjson-3.10.18-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:1ebeda919725f9dbdb269f59bc94f861afbe2a27dce5608cdba2d92772364d1c"},
{file = "orjson-3.10.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5adf5f4eed520a4959d29ea80192fa626ab9a20b2ea13f8f6dc58644f6927103"},
{file = "orjson-3.10.18-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7592bb48a214e18cd670974f289520f12b7aed1fa0b2e2616b8ed9e069e08595"},
{file = "orjson-3.10.18-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f872bef9f042734110642b7a11937440797ace8c87527de25e0c53558b579ccc"},
{file = "orjson-3.10.18-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0315317601149c244cb3ecef246ef5861a64824ccbcb8018d32c66a60a84ffbc"},
{file = "orjson-3.10.18-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0da26957e77e9e55a6c2ce2e7182a36a6f6b180ab7189315cb0995ec362e049"},
{file = "orjson-3.10.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb70d489bc79b7519e5803e2cc4c72343c9dc1154258adf2f8925d0b60da7c58"},
{file = "orjson-3.10.18-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e9e86a6af31b92299b00736c89caf63816f70a4001e750bda179e15564d7a034"},
{file = "orjson-3.10.18-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:c382a5c0b5931a5fc5405053d36c1ce3fd561694738626c77ae0b1dfc0242ca1"},
{file = "orjson-3.10.18-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8e4b2ae732431127171b875cb2668f883e1234711d3c147ffd69fe5be51a8012"},
{file = "orjson-3.10.18-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2d808e34ddb24fc29a4d4041dcfafbae13e129c93509b847b14432717d94b44f"},
{file = "orjson-3.10.18-cp313-cp313-win32.whl", hash = "sha256:ad8eacbb5d904d5591f27dee4031e2c1db43d559edb8f91778efd642d70e6bea"},
{file = "orjson-3.10.18-cp313-cp313-win_amd64.whl", hash = "sha256:aed411bcb68bf62e85588f2a7e03a6082cc42e5a2796e06e72a962d7c6310b52"},
{file = "orjson-3.10.18-cp313-cp313-win_arm64.whl", hash = "sha256:f54c1385a0e6aba2f15a40d703b858bedad36ded0491e55d35d905b2c34a4cc3"},
{file = "orjson-3.10.18-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c95fae14225edfd699454e84f61c3dd938df6629a00c6ce15e704f57b58433bb"},
{file = "orjson-3.10.18-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5232d85f177f98e0cefabb48b5e7f60cff6f3f0365f9c60631fecd73849b2a82"},
{file = "orjson-3.10.18-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2783e121cafedf0d85c148c248a20470018b4ffd34494a68e125e7d5857655d1"},
{file = "orjson-3.10.18-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e54ee3722caf3db09c91f442441e78f916046aa58d16b93af8a91500b7bbf273"},
{file = "orjson-3.10.18-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2daf7e5379b61380808c24f6fc182b7719301739e4271c3ec88f2984a2d61f89"},
{file = "orjson-3.10.18-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7f39b371af3add20b25338f4b29a8d6e79a8c7ed0e9dd49e008228a065d07781"},
{file = "orjson-3.10.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b819ed34c01d88c6bec290e6842966f8e9ff84b7694632e88341363440d4cc0"},
{file = "orjson-3.10.18-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2f6c57debaef0b1aa13092822cbd3698a1fb0209a9ea013a969f4efa36bdea57"},
{file = "orjson-3.10.18-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:755b6d61ffdb1ffa1e768330190132e21343757c9aa2308c67257cc81a1a6f5a"},
{file = "orjson-3.10.18-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ce8d0a875a85b4c8579eab5ac535fb4b2a50937267482be402627ca7e7570ee3"},
{file = "orjson-3.10.18-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57b5d0673cbd26781bebc2bf86f99dd19bd5a9cb55f71cc4f66419f6b50f3d77"},
{file = "orjson-3.10.18-cp39-cp39-win32.whl", hash = "sha256:951775d8b49d1d16ca8818b1f20c4965cae9157e7b562a2ae34d3967b8f21c8e"},
{file = "orjson-3.10.18-cp39-cp39-win_amd64.whl", hash = "sha256:fdd9d68f83f0bc4406610b1ac68bdcded8c5ee58605cc69e643a06f4d075f429"},
{file = "orjson-3.10.18.tar.gz", hash = "sha256:e8da3947d92123eda795b68228cafe2724815621fe35e8e320a9e9593a4bcd53"},
]
[[package]]
name = "packaging"
version = "25.0"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
files = [
{file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"},
{file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"},
]
[[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.8"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
optional = false
python-versions = ">=3.9"
files = [
{file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"},
{file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"},
]
[package.extras]
docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"]
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"]
type = ["mypy (>=1.14.1)"]
[[package]]
name = "pluggy"
version = "1.6.0"
description = "plugin and hook calling mechanisms for python"
optional = false
python-versions = ">=3.9"
files = [
{file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"},
{file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"},
]
[package.extras]
dev = ["pre-commit", "tox"]
testing = ["coverage", "pytest", "pytest-benchmark"]
[[package]]
name = "pre-commit"
version = "4.2.0"
description = "A framework for managing and maintaining multi-language pre-commit hooks."
optional = false
python-versions = ">=3.9"
files = [
{file = "pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd"},
{file = "pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146"},
]
[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.3.2"
description = "Accelerated property cache"
optional = false
python-versions = ">=3.9"
files = [
{file = "propcache-0.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:22d9962a358aedbb7a2e36187ff273adeaab9743373a272976d2e348d08c7770"},
{file = "propcache-0.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0d0fda578d1dc3f77b6b5a5dce3b9ad69a8250a891760a548df850a5e8da87f3"},
{file = "propcache-0.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3def3da3ac3ce41562d85db655d18ebac740cb3fa4367f11a52b3da9d03a5cc3"},
{file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bec58347a5a6cebf239daba9bda37dffec5b8d2ce004d9fe4edef3d2815137e"},
{file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55ffda449a507e9fbd4aca1a7d9aa6753b07d6166140e5a18d2ac9bc49eac220"},
{file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64a67fb39229a8a8491dd42f864e5e263155e729c2e7ff723d6e25f596b1e8cb"},
{file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9da1cf97b92b51253d5b68cf5a2b9e0dafca095e36b7f2da335e27dc6172a614"},
{file = "propcache-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5f559e127134b07425134b4065be45b166183fdcb433cb6c24c8e4149056ad50"},
{file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aff2e4e06435d61f11a428360a932138d0ec288b0a31dd9bd78d200bd4a2b339"},
{file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4927842833830942a5d0a56e6f4839bc484785b8e1ce8d287359794818633ba0"},
{file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6107ddd08b02654a30fb8ad7a132021759d750a82578b94cd55ee2772b6ebea2"},
{file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:70bd8b9cd6b519e12859c99f3fc9a93f375ebd22a50296c3a295028bea73b9e7"},
{file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2183111651d710d3097338dd1893fcf09c9f54e27ff1a8795495a16a469cc90b"},
{file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fb075ad271405dcad8e2a7ffc9a750a3bf70e533bd86e89f0603e607b93aa64c"},
{file = "propcache-0.3.2-cp310-cp310-win32.whl", hash = "sha256:404d70768080d3d3bdb41d0771037da19d8340d50b08e104ca0e7f9ce55fce70"},
{file = "propcache-0.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:7435d766f978b4ede777002e6b3b6641dd229cd1da8d3d3106a45770365f9ad9"},
{file = "propcache-0.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b8d2f607bd8f80ddc04088bc2a037fdd17884a6fcadc47a96e334d72f3717be"},
{file = "propcache-0.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06766d8f34733416e2e34f46fea488ad5d60726bb9481d3cddf89a6fa2d9603f"},
{file = "propcache-0.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2dc1f4a1df4fecf4e6f68013575ff4af84ef6f478fe5344317a65d38a8e6dc9"},
{file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be29c4f4810c5789cf10ddf6af80b041c724e629fa51e308a7a0fb19ed1ef7bf"},
{file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59d61f6970ecbd8ff2e9360304d5c8876a6abd4530cb752c06586849ac8a9dc9"},
{file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62180e0b8dbb6b004baec00a7983e4cc52f5ada9cd11f48c3528d8cfa7b96a66"},
{file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c144ca294a204c470f18cf4c9d78887810d04a3e2fbb30eea903575a779159df"},
{file = "propcache-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5c2a784234c28854878d68978265617aa6dc0780e53d44b4d67f3651a17a9a2"},
{file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5745bc7acdafa978ca1642891b82c19238eadc78ba2aaa293c6863b304e552d7"},
{file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:c0075bf773d66fa8c9d41f66cc132ecc75e5bb9dd7cce3cfd14adc5ca184cb95"},
{file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5f57aa0847730daceff0497f417c9de353c575d8da3579162cc74ac294c5369e"},
{file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:eef914c014bf72d18efb55619447e0aecd5fb7c2e3fa7441e2e5d6099bddff7e"},
{file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a4092e8549031e82facf3decdbc0883755d5bbcc62d3aea9d9e185549936dcf"},
{file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:85871b050f174bc0bfb437efbdb68aaf860611953ed12418e4361bc9c392749e"},
{file = "propcache-0.3.2-cp311-cp311-win32.whl", hash = "sha256:36c8d9b673ec57900c3554264e630d45980fd302458e4ac801802a7fd2ef7897"},
{file = "propcache-0.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53af8cb6a781b02d2ea079b5b853ba9430fcbe18a8e3ce647d5982a3ff69f39"},
{file = "propcache-0.3.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8de106b6c84506b31c27168582cd3cb3000a6412c16df14a8628e5871ff83c10"},
{file = "propcache-0.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28710b0d3975117239c76600ea351934ac7b5ff56e60953474342608dbbb6154"},
{file = "propcache-0.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce26862344bdf836650ed2487c3d724b00fbfec4233a1013f597b78c1cb73615"},
{file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca54bd347a253af2cf4544bbec232ab982f4868de0dd684246b67a51bc6b1db"},
{file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55780d5e9a2ddc59711d727226bb1ba83a22dd32f64ee15594b9392b1f544eb1"},
{file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:035e631be25d6975ed87ab23153db6a73426a48db688070d925aa27e996fe93c"},
{file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee6f22b6eaa39297c751d0e80c0d3a454f112f5c6481214fcf4c092074cecd67"},
{file = "propcache-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ca3aee1aa955438c4dba34fc20a9f390e4c79967257d830f137bd5a8a32ed3b"},
{file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4f30862869fa2b68380d677cc1c5fcf1e0f2b9ea0cf665812895c75d0ca3b8"},
{file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b77ec3c257d7816d9f3700013639db7491a434644c906a2578a11daf13176251"},
{file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cab90ac9d3f14b2d5050928483d3d3b8fb6b4018893fc75710e6aa361ecb2474"},
{file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0b504d29f3c47cf6b9e936c1852246c83d450e8e063d50562115a6be6d3a2535"},
{file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:ce2ac2675a6aa41ddb2a0c9cbff53780a617ac3d43e620f8fd77ba1c84dcfc06"},
{file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b4239611205294cc433845b914131b2a1f03500ff3c1ed093ed216b82621e1"},
{file = "propcache-0.3.2-cp312-cp312-win32.whl", hash = "sha256:df4a81b9b53449ebc90cc4deefb052c1dd934ba85012aa912c7ea7b7e38b60c1"},
{file = "propcache-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7046e79b989d7fe457bb755844019e10f693752d169076138abf17f31380800c"},
{file = "propcache-0.3.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ca592ed634a73ca002967458187109265e980422116c0a107cf93d81f95af945"},
{file = "propcache-0.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9ecb0aad4020e275652ba3975740f241bd12a61f1a784df044cf7477a02bc252"},
{file = "propcache-0.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f08f1cc28bd2eade7a8a3d2954ccc673bb02062e3e7da09bc75d843386b342f"},
{file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a342c834734edb4be5ecb1e9fb48cb64b1e2320fccbd8c54bf8da8f2a84c33"},
{file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a544caaae1ac73f1fecfae70ded3e93728831affebd017d53449e3ac052ac1e"},
{file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:310d11aa44635298397db47a3ebce7db99a4cc4b9bbdfcf6c98a60c8d5261cf1"},
{file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1396592321ac83157ac03a2023aa6cc4a3cc3cfdecb71090054c09e5a7cce3"},
{file = "propcache-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cabf5b5902272565e78197edb682017d21cf3b550ba0460ee473753f28d23c1"},
{file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0a2f2235ac46a7aa25bdeb03a9e7060f6ecbd213b1f9101c43b3090ffb971ef6"},
{file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:92b69e12e34869a6970fd2f3da91669899994b47c98f5d430b781c26f1d9f387"},
{file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:54e02207c79968ebbdffc169591009f4474dde3b4679e16634d34c9363ff56b4"},
{file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4adfb44cb588001f68c5466579d3f1157ca07f7504fc91ec87862e2b8e556b88"},
{file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fd3e6019dc1261cd0291ee8919dd91fbab7b169bb76aeef6c716833a3f65d206"},
{file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4c181cad81158d71c41a2bce88edce078458e2dd5ffee7eddd6b05da85079f43"},
{file = "propcache-0.3.2-cp313-cp313-win32.whl", hash = "sha256:8a08154613f2249519e549de2330cf8e2071c2887309a7b07fb56098f5170a02"},
{file = "propcache-0.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e41671f1594fc4ab0a6dec1351864713cb3a279910ae8b58f884a88a0a632c05"},
{file = "propcache-0.3.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9a3cf035bbaf035f109987d9d55dc90e4b0e36e04bbbb95af3055ef17194057b"},
{file = "propcache-0.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:156c03d07dc1323d8dacaa221fbe028c5c70d16709cdd63502778e6c3ccca1b0"},
{file = "propcache-0.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74413c0ba02ba86f55cf60d18daab219f7e531620c15f1e23d95563f505efe7e"},
{file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f066b437bb3fa39c58ff97ab2ca351db465157d68ed0440abecb21715eb24b28"},
{file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1304b085c83067914721e7e9d9917d41ad87696bf70f0bc7dee450e9c71ad0a"},
{file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab50cef01b372763a13333b4e54021bdcb291fc9a8e2ccb9c2df98be51bcde6c"},
{file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad3b2a085ec259ad2c2842666b2a0a49dea8463579c606426128925af1ed725"},
{file = "propcache-0.3.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:261fa020c1c14deafd54c76b014956e2f86991af198c51139faf41c4d5e83892"},
{file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:46d7f8aa79c927e5f987ee3a80205c987717d3659f035c85cf0c3680526bdb44"},
{file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:6d8f3f0eebf73e3c0ff0e7853f68be638b4043c65a70517bb575eff54edd8dbe"},
{file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:03c89c1b14a5452cf15403e291c0ccd7751d5b9736ecb2c5bab977ad6c5bcd81"},
{file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:0cc17efde71e12bbaad086d679ce575268d70bc123a5a71ea7ad76f70ba30bba"},
{file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:acdf05d00696bc0447e278bb53cb04ca72354e562cf88ea6f9107df8e7fd9770"},
{file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4445542398bd0b5d32df908031cb1b30d43ac848e20470a878b770ec2dcc6330"},
{file = "propcache-0.3.2-cp313-cp313t-win32.whl", hash = "sha256:f86e5d7cd03afb3a1db8e9f9f6eff15794e79e791350ac48a8c924e6f439f394"},
{file = "propcache-0.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:9704bedf6e7cbe3c65eca4379a9b53ee6a83749f047808cbb5044d40d7d72198"},
{file = "propcache-0.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a7fad897f14d92086d6b03fdd2eb844777b0c4d7ec5e3bac0fbae2ab0602bbe5"},
{file = "propcache-0.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1f43837d4ca000243fd7fd6301947d7cb93360d03cd08369969450cc6b2ce3b4"},
{file = "propcache-0.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:261df2e9474a5949c46e962065d88eb9b96ce0f2bd30e9d3136bcde84befd8f2"},
{file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e514326b79e51f0a177daab1052bc164d9d9e54133797a3a58d24c9c87a3fe6d"},
{file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a996adb6904f85894570301939afeee65f072b4fd265ed7e569e8d9058e4ec"},
{file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76cace5d6b2a54e55b137669b30f31aa15977eeed390c7cbfb1dafa8dfe9a701"},
{file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31248e44b81d59d6addbb182c4720f90b44e1efdc19f58112a3c3a1615fb47ef"},
{file = "propcache-0.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb7fa19dbf88d3857363e0493b999b8011eea856b846305d8c0512dfdf8fbb1"},
{file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d81ac3ae39d38588ad0549e321e6f773a4e7cc68e7751524a22885d5bbadf886"},
{file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:cc2782eb0f7a16462285b6f8394bbbd0e1ee5f928034e941ffc444012224171b"},
{file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:db429c19a6c7e8a1c320e6a13c99799450f411b02251fb1b75e6217cf4a14fcb"},
{file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:21d8759141a9e00a681d35a1f160892a36fb6caa715ba0b832f7747da48fb6ea"},
{file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2ca6d378f09adb13837614ad2754fa8afaee330254f404299611bce41a8438cb"},
{file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:34a624af06c048946709f4278b4176470073deda88d91342665d95f7c6270fbe"},
{file = "propcache-0.3.2-cp39-cp39-win32.whl", hash = "sha256:4ba3fef1c30f306b1c274ce0b8baaa2c3cdd91f645c48f06394068f37d3837a1"},
{file = "propcache-0.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:7a2368eed65fc69a7a7a40b27f22e85e7627b74216f0846b04ba5c116e191ec9"},
{file = "propcache-0.3.2-py3-none-any.whl", hash = "sha256:98f1ec44fb675f5052cccc8e609c46ed23a35a1cfd18545ad4e29002d858a43f"},
{file = "propcache-0.3.2.tar.gz", hash = "sha256:20d7d62e4e7ef05f221e0db2856b979540686342e7dd9973b815599c7057e168"},
]
[[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.19.1"
description = "Pygments is a syntax highlighting package written in Python."
optional = false
python-versions = ">=3.8"
files = [
{file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"},
{file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"},
]
[package.extras]
windows-terminal = ["colorama (>=0.4.6)"]
[[package]]
name = "pylint"
version = "3.3.7"
description = "python code static checker"
optional = false
python-versions = ">=3.9.0"
files = [
{file = "pylint-3.3.7-py3-none-any.whl", hash = "sha256:43860aafefce92fca4cf6b61fe199cdc5ae54ea28f9bf4cd49de267b5195803d"},
{file = "pylint-3.3.7.tar.gz", hash = "sha256:2b11de8bde49f9c5059452e0c310c079c746a0a8eeaa789e5aa966ecc23e4559"},
]
[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 || >5.13,<7"
mccabe = ">=0.6,<0.8"
platformdirs = ">=2.2"
tomlkit = ">=0.10.1"
[package.extras]
spelling = ["pyenchant (>=3.2,<4.0)"]
testutils = ["gitpython (>3)"]
[[package]]
name = "pytest"
version = "8.4.0"
description = "pytest: simple powerful testing with Python"
optional = false
python-versions = ">=3.9"
files = [
{file = "pytest-8.4.0-py3-none-any.whl", hash = "sha256:f40f825768ad76c0977cbacdf1fd37c6f7a468e460ea6a0636078f8972d4517e"},
{file = "pytest-8.4.0.tar.gz", hash = "sha256:14d920b48472ea0dbf68e45b96cd1ffda4705f33307dcc86c676c1b5104838a6"},
]
[package.dependencies]
colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""}
iniconfig = ">=1"
packaging = ">=20"
pluggy = ">=1.5,<2"
pygments = ">=2.7.2"
[package.extras]
dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"]
[[package]]
name = "pytest-asyncio"
version = "1.0.0"
description = "Pytest support for asyncio"
optional = false
python-versions = ">=3.9"
files = [
{file = "pytest_asyncio-1.0.0-py3-none-any.whl", hash = "sha256:4f024da9f1ef945e680dc68610b52550e36590a67fd31bb3b4943979a1f90ef3"},
{file = "pytest_asyncio-1.0.0.tar.gz", hash = "sha256:d15463d13f4456e1ead2594520216b225a16f781e144f8fdf6c5bb4667c48b3f"},
]
[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.1.1"
description = "Pytest plugin for measuring coverage."
optional = false
python-versions = ">=3.9"
files = [
{file = "pytest_cov-6.1.1-py3-none-any.whl", hash = "sha256:bddf29ed2d0ab6f4df17b4c55b0a657287db8684af9c42ea546b21b1041b3dde"},
{file = "pytest_cov-6.1.1.tar.gz", hash = "sha256:46935f7aaefba760e716c2ebfbe1c216240b9592966e7da99ea8292d4d3e2a0a"},
]
[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 = "regex"
version = "2024.11.6"
description = "Alternative regular expression module, to replace re."
optional = false
python-versions = ">=3.8"
files = [
{file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"},
{file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"},
{file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"},
{file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"},
{file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"},
{file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"},
{file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"},
{file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"},
{file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"},
{file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"},
{file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"},
{file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"},
{file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"},
{file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"},
{file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"},
{file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"},
{file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"},
{file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"},
{file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"},
{file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"},
{file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"},
{file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"},
{file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"},
{file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"},
{file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"},
{file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"},
{file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"},
{file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"},
{file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"},
{file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"},
{file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"},
{file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"},
{file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"},
{file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"},
{file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"},
{file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"},
{file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"},
{file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"},
{file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"},
{file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"},
{file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"},
{file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"},
{file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"},
{file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"},
{file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"},
{file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"},
{file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"},
{file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"},
{file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"},
{file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"},
{file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"},
{file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"},
{file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"},
{file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"},
{file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"},
{file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"},
{file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"},
{file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"},
{file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"},
{file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"},
{file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"},
{file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"},
{file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"},
{file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"},
{file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"},
{file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"},
{file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"},
{file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"},
{file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"},
{file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"},
{file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"},
{file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"},
{file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"},
{file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"},
{file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"},
{file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"},
{file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"},
{file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"},
{file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"},
{file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"},
{file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"},
{file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"},
{file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"},
{file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"},
{file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"},
{file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"},
{file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"},
{file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"},
{file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"},
{file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"},
{file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"},
{file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"},
{file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"},
{file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"},
]
[[package]]
name = "requests"
version = "2.32.4"
description = "Python HTTP for Humans."
optional = false
python-versions = ">=3.8"
files = [
{file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"},
{file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"},
]
[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 = "14.0.0"
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-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0"},
{file = "rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"},
]
[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.14"
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.8"
files = [
{file = "ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2"},
{file = "ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7"},
]
[package.dependencies]
"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.14\""}
[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-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a"},
{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-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3"},
{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-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d"},
{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-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01"},
{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-musllinux_1_2_aarch64.whl", hash = "sha256:2c59aa6170b990d8d2719323e628aaf36f3bfbc1c26279c0eeeb24d05d2d11c7"},
{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.11.13"
description = "An extremely fast Python linter and code formatter, written in Rust."
optional = false
python-versions = ">=3.7"
files = [
{file = "ruff-0.11.13-py3-none-linux_armv6l.whl", hash = "sha256:4bdfbf1240533f40042ec00c9e09a3aade6f8c10b6414cf11b519488d2635d46"},
{file = "ruff-0.11.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aef9c9ed1b5ca28bb15c7eac83b8670cf3b20b478195bd49c8d756ba0a36cf48"},
{file = "ruff-0.11.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:53b15a9dfdce029c842e9a5aebc3855e9ab7771395979ff85b7c1dedb53ddc2b"},
{file = "ruff-0.11.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab153241400789138d13f362c43f7edecc0edfffce2afa6a68434000ecd8f69a"},
{file = "ruff-0.11.13-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c51f93029d54a910d3d24f7dd0bb909e31b6cd989a5e4ac513f4eb41629f0dc"},
{file = "ruff-0.11.13-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1808b3ed53e1a777c2ef733aca9051dc9bf7c99b26ece15cb59a0320fbdbd629"},
{file = "ruff-0.11.13-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d28ce58b5ecf0f43c1b71edffabe6ed7f245d5336b17805803312ec9bc665933"},
{file = "ruff-0.11.13-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55e4bc3a77842da33c16d55b32c6cac1ec5fb0fbec9c8c513bdce76c4f922165"},
{file = "ruff-0.11.13-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:633bf2c6f35678c56ec73189ba6fa19ff1c5e4807a78bf60ef487b9dd272cc71"},
{file = "ruff-0.11.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ffbc82d70424b275b089166310448051afdc6e914fdab90e08df66c43bb5ca9"},
{file = "ruff-0.11.13-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a9ddd3ec62a9a89578c85842b836e4ac832d4a2e0bfaad3b02243f930ceafcc"},
{file = "ruff-0.11.13-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d237a496e0778d719efb05058c64d28b757c77824e04ffe8796c7436e26712b7"},
{file = "ruff-0.11.13-py3-none-musllinux_1_2_i686.whl", hash = "sha256:26816a218ca6ef02142343fd24c70f7cd8c5aa6c203bca284407adf675984432"},
{file = "ruff-0.11.13-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:51c3f95abd9331dc5b87c47ac7f376db5616041173826dfd556cfe3d4977f492"},
{file = "ruff-0.11.13-py3-none-win32.whl", hash = "sha256:96c27935418e4e8e77a26bb05962817f28b8ef3843a6c6cc49d8783b5507f250"},
{file = "ruff-0.11.13-py3-none-win_amd64.whl", hash = "sha256:29c3189895a8a6a657b7af4e97d330c8a3afd2c9c8f46c81e2fc5a31866517e3"},
{file = "ruff-0.11.13-py3-none-win_arm64.whl", hash = "sha256:b4385285e9179d608ff1d2fb9922062663c658605819a6876d8beef0c30b7f3b"},
{file = "ruff-0.11.13.tar.gz", hash = "sha256:26fa247dc68d1d4e72c179e08889a25ac0c7ba4d78aecfc835d49cbfd60bf514"},
]
[[package]]
name = "safety"
version = "3.5.2"
description = "Scan dependencies for known vulnerabilities and licenses."
optional = false
python-versions = ">=3.8"
files = [
{file = "safety-3.5.2-py3-none-any.whl", hash = "sha256:d5baff410c548393e80ba2bd2ab1de2701a690ca3577e457335917b9db4641e1"},
{file = "safety-3.5.2.tar.gz", hash = "sha256:ecbb2e76f9574284f2c0e168e71ec92b39018ae9516b3b00f132de57ecaa09cb"},
]
[package.dependencies]
authlib = ">=1.2.0"
click = ">=8.0.2,<8.2.0"
dparse = ">=0.6.4"
filelock = ">=3.16.1,<3.17.0"
httpx = "*"
jinja2 = ">=3.1.0"
marshmallow = ">=3.15.0"
nltk = ">=3.9"
packaging = ">=21.0"
psutil = ">=6.1.0,<6.2.0"
pydantic = ">=2.6.0,<2.10.0"
requests = "*"
ruamel-yaml = ">=0.17.21"
safety-schemas = "0.0.14"
setuptools = ">=65.5.1"
tenacity = "*"
tomlkit = "*"
typer = ">=0.12.1"
typing-extensions = ">=4.7.1"
[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.14"
description = "Schemas for Safety tools"
optional = false
python-versions = ">=3.7"
files = [
{file = "safety_schemas-0.0.14-py3-none-any.whl", hash = "sha256:0bf6fc4aa5e474651b714cc9e427c862792946bf052b61d5c7bec4eac4c0f254"},
{file = "safety_schemas-0.0.14.tar.gz", hash = "sha256:49953f7a59e919572be25595a8946f9cbbcd2066fe3e160c9467d9d1d6d7af6a"},
]
[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 = "80.9.0"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
optional = false
python-versions = ">=3.9"
files = [
{file = "setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922"},
{file = "setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c"},
]
[package.extras]
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"]
core = ["importlib_metadata (>=6)", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "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.7.2)", "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.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 = "sniffio"
version = "1.3.1"
description = "Sniff out which async library your code is running under"
optional = false
python-versions = ">=3.7"
files = [
{file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
{file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
]
[[package]]
name = "syrupy"
version = "4.9.1"
description = "Pytest Snapshot Test Utility"
optional = false
python-versions = ">=3.8.1"
files = [
{file = "syrupy-4.9.1-py3-none-any.whl", hash = "sha256:b94cc12ed0e5e75b448255430af642516842a2374a46936dd2650cfb6dd20eda"},
{file = "syrupy-4.9.1.tar.gz", hash = "sha256:b7d0fcadad80a7d2f6c4c71917918e8ebe2483e8c703dfc8d49cdbb01081f9a4"},
]
[package.dependencies]
pytest = ">=7.0.0,<9.0.0"
[[package]]
name = "tenacity"
version = "9.1.2"
description = "Retry code until it succeeds"
optional = false
python-versions = ">=3.9"
files = [
{file = "tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"},
{file = "tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb"},
]
[package.extras]
doc = ["reno", "sphinx"]
test = ["pytest", "tornado (>=4.5)", "typeguard"]
[[package]]
name = "tomlkit"
version = "0.13.3"
description = "Style preserving TOML library"
optional = false
python-versions = ">=3.8"
files = [
{file = "tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0"},
{file = "tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1"},
]
[[package]]
name = "tqdm"
version = "4.67.1"
description = "Fast, Extensible Progress Meter"
optional = false
python-versions = ">=3.7"
files = [
{file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"},
{file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"},
]
[package.dependencies]
colorama = {version = "*", markers = "platform_system == \"Windows\""}
[package.extras]
dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"]
discord = ["requests"]
notebook = ["ipywidgets (>=6)"]
slack = ["slack-sdk"]
telegram = ["requests"]
[[package]]
name = "typer"
version = "0.16.0"
description = "Typer, build great CLIs. Easy to code. Based on Python type hints."
optional = false
python-versions = ">=3.7"
files = [
{file = "typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855"},
{file = "typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b"},
]
[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.14.0"
description = "Backported and Experimental Type Hints for Python 3.9+"
optional = false
python-versions = ">=3.9"
files = [
{file = "typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af"},
{file = "typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4"},
]
[[package]]
name = "urllib3"
version = "2.4.0"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.9"
files = [
{file = "urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"},
{file = "urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466"},
]
[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.31.2"
description = "Virtual Python Environment builder"
optional = false
python-versions = ">=3.8"
files = [
{file = "virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11"},
{file = "virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af"},
]
[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.37.1"
description = "A linter for YAML files."
optional = false
python-versions = ">=3.9"
files = [
{file = "yamllint-1.37.1-py3-none-any.whl", hash = "sha256:364f0d79e81409f591e323725e6a9f4504c8699ddf2d7263d8d2b539cd66a583"},
{file = "yamllint-1.37.1.tar.gz", hash = "sha256:81f7c0c5559becc8049470d86046b36e96113637bcbe4753ecef06977c00245d"},
]
[package.dependencies]
pathspec = ">=0.5.3"
pyyaml = "*"
[package.extras]
dev = ["doc8", "flake8", "flake8-import-order", "rstcheck[sphinx]", "sphinx"]
[[package]]
name = "yarl"
version = "1.20.1"
description = "Yet another URL library"
optional = false
python-versions = ">=3.9"
files = [
{file = "yarl-1.20.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6032e6da6abd41e4acda34d75a816012717000fa6839f37124a47fcefc49bec4"},
{file = "yarl-1.20.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c7b34d804b8cf9b214f05015c4fee2ebe7ed05cf581e7192c06555c71f4446a"},
{file = "yarl-1.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c869f2651cc77465f6cd01d938d91a11d9ea5d798738c1dc077f3de0b5e5fed"},
{file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62915e6688eb4d180d93840cda4110995ad50c459bf931b8b3775b37c264af1e"},
{file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:41ebd28167bc6af8abb97fec1a399f412eec5fd61a3ccbe2305a18b84fb4ca73"},
{file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21242b4288a6d56f04ea193adde174b7e347ac46ce6bc84989ff7c1b1ecea84e"},
{file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bea21cdae6c7eb02ba02a475f37463abfe0a01f5d7200121b03e605d6a0439f8"},
{file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f8a891e4a22a89f5dde7862994485e19db246b70bb288d3ce73a34422e55b23"},
{file = "yarl-1.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd803820d44c8853a109a34e3660e5a61beae12970da479cf44aa2954019bf70"},
{file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b982fa7f74c80d5c0c7b5b38f908971e513380a10fecea528091405f519b9ebb"},
{file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:33f29ecfe0330c570d997bcf1afd304377f2e48f61447f37e846a6058a4d33b2"},
{file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:835ab2cfc74d5eb4a6a528c57f05688099da41cf4957cf08cad38647e4a83b30"},
{file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:46b5e0ccf1943a9a6e766b2c2b8c732c55b34e28be57d8daa2b3c1d1d4009309"},
{file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:df47c55f7d74127d1b11251fe6397d84afdde0d53b90bedb46a23c0e534f9d24"},
{file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76d12524d05841276b0e22573f28d5fbcb67589836772ae9244d90dd7d66aa13"},
{file = "yarl-1.20.1-cp310-cp310-win32.whl", hash = "sha256:6c4fbf6b02d70e512d7ade4b1f998f237137f1417ab07ec06358ea04f69134f8"},
{file = "yarl-1.20.1-cp310-cp310-win_amd64.whl", hash = "sha256:aef6c4d69554d44b7f9d923245f8ad9a707d971e6209d51279196d8e8fe1ae16"},
{file = "yarl-1.20.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:47ee6188fea634bdfaeb2cc420f5b3b17332e6225ce88149a17c413c77ff269e"},
{file = "yarl-1.20.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d0f6500f69e8402d513e5eedb77a4e1818691e8f45e6b687147963514d84b44b"},
{file = "yarl-1.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a8900a42fcdaad568de58887c7b2f602962356908eedb7628eaf6021a6e435b"},
{file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bad6d131fda8ef508b36be3ece16d0902e80b88ea7200f030a0f6c11d9e508d4"},
{file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:df018d92fe22aaebb679a7f89fe0c0f368ec497e3dda6cb81a567610f04501f1"},
{file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f969afbb0a9b63c18d0feecf0db09d164b7a44a053e78a7d05f5df163e43833"},
{file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:812303eb4aa98e302886ccda58d6b099e3576b1b9276161469c25803a8db277d"},
{file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98c4a7d166635147924aa0bf9bfe8d8abad6fffa6102de9c99ea04a1376f91e8"},
{file = "yarl-1.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12e768f966538e81e6e7550f9086a6236b16e26cd964cf4df35349970f3551cf"},
{file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe41919b9d899661c5c28a8b4b0acf704510b88f27f0934ac7a7bebdd8938d5e"},
{file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:8601bc010d1d7780592f3fc1bdc6c72e2b6466ea34569778422943e1a1f3c389"},
{file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:daadbdc1f2a9033a2399c42646fbd46da7992e868a5fe9513860122d7fe7a73f"},
{file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:03aa1e041727cb438ca762628109ef1333498b122e4c76dd858d186a37cec845"},
{file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:642980ef5e0fa1de5fa96d905c7e00cb2c47cb468bfcac5a18c58e27dbf8d8d1"},
{file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:86971e2795584fe8c002356d3b97ef6c61862720eeff03db2a7c86b678d85b3e"},
{file = "yarl-1.20.1-cp311-cp311-win32.whl", hash = "sha256:597f40615b8d25812f14562699e287f0dcc035d25eb74da72cae043bb884d773"},
{file = "yarl-1.20.1-cp311-cp311-win_amd64.whl", hash = "sha256:26ef53a9e726e61e9cd1cda6b478f17e350fb5800b4bd1cd9fe81c4d91cfeb2e"},
{file = "yarl-1.20.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdcc4cd244e58593a4379fe60fdee5ac0331f8eb70320a24d591a3be197b94a9"},
{file = "yarl-1.20.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b29a2c385a5f5b9c7d9347e5812b6f7ab267193c62d282a540b4fc528c8a9d2a"},
{file = "yarl-1.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1112ae8154186dfe2de4732197f59c05a83dc814849a5ced892b708033f40dc2"},
{file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90bbd29c4fe234233f7fa2b9b121fb63c321830e5d05b45153a2ca68f7d310ee"},
{file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:680e19c7ce3710ac4cd964e90dad99bf9b5029372ba0c7cbfcd55e54d90ea819"},
{file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a979218c1fdb4246a05efc2cc23859d47c89af463a90b99b7c56094daf25a16"},
{file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255b468adf57b4a7b65d8aad5b5138dce6a0752c139965711bdcb81bc370e1b6"},
{file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97d67108e79cfe22e2b430d80d7571ae57d19f17cda8bb967057ca8a7bf5bfd"},
{file = "yarl-1.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8570d998db4ddbfb9a590b185a0a33dbf8aafb831d07a5257b4ec9948df9cb0a"},
{file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97c75596019baae7c71ccf1d8cc4738bc08134060d0adfcbe5642f778d1dca38"},
{file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1c48912653e63aef91ff988c5432832692ac5a1d8f0fb8a33091520b5bbe19ef"},
{file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4c3ae28f3ae1563c50f3d37f064ddb1511ecc1d5584e88c6b7c63cf7702a6d5f"},
{file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c5e9642f27036283550f5f57dc6156c51084b458570b9d0d96100c8bebb186a8"},
{file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2c26b0c49220d5799f7b22c6838409ee9bc58ee5c95361a4d7831f03cc225b5a"},
{file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564ab3d517e3d01c408c67f2e5247aad4019dcf1969982aba3974b4093279004"},
{file = "yarl-1.20.1-cp312-cp312-win32.whl", hash = "sha256:daea0d313868da1cf2fac6b2d3a25c6e3a9e879483244be38c8e6a41f1d876a5"},
{file = "yarl-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:48ea7d7f9be0487339828a4de0360d7ce0efc06524a48e1810f945c45b813698"},
{file = "yarl-1.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0b5ff0fbb7c9f1b1b5ab53330acbfc5247893069e7716840c8e7d5bb7355038a"},
{file = "yarl-1.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:14f326acd845c2b2e2eb38fb1346c94f7f3b01a4f5c788f8144f9b630bfff9a3"},
{file = "yarl-1.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f60e4ad5db23f0b96e49c018596707c3ae89f5d0bd97f0ad3684bcbad899f1e7"},
{file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49bdd1b8e00ce57e68ba51916e4bb04461746e794e7c4d4bbc42ba2f18297691"},
{file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:66252d780b45189975abfed839616e8fd2dbacbdc262105ad7742c6ae58f3e31"},
{file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59174e7332f5d153d8f7452a102b103e2e74035ad085f404df2e40e663a22b28"},
{file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3968ec7d92a0c0f9ac34d5ecfd03869ec0cab0697c91a45db3fbbd95fe1b653"},
{file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1a4fbb50e14396ba3d375f68bfe02215d8e7bc3ec49da8341fe3157f59d2ff5"},
{file = "yarl-1.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11a62c839c3a8eac2410e951301309426f368388ff2f33799052787035793b02"},
{file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:041eaa14f73ff5a8986b4388ac6bb43a77f2ea09bf1913df7a35d4646db69e53"},
{file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:377fae2fef158e8fd9d60b4c8751387b8d1fb121d3d0b8e9b0be07d1b41e83dc"},
{file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1c92f4390e407513f619d49319023664643d3339bd5e5a56a3bebe01bc67ec04"},
{file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d25ddcf954df1754ab0f86bb696af765c5bfaba39b74095f27eececa049ef9a4"},
{file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:909313577e9619dcff8c31a0ea2aa0a2a828341d92673015456b3ae492e7317b"},
{file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:793fd0580cb9664548c6b83c63b43c477212c0260891ddf86809e1c06c8b08f1"},
{file = "yarl-1.20.1-cp313-cp313-win32.whl", hash = "sha256:468f6e40285de5a5b3c44981ca3a319a4b208ccc07d526b20b12aeedcfa654b7"},
{file = "yarl-1.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:495b4ef2fea40596bfc0affe3837411d6aa3371abcf31aac0ccc4bdd64d4ef5c"},
{file = "yarl-1.20.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f60233b98423aab21d249a30eb27c389c14929f47be8430efa7dbd91493a729d"},
{file = "yarl-1.20.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6f3eff4cc3f03d650d8755c6eefc844edde99d641d0dcf4da3ab27141a5f8ddf"},
{file = "yarl-1.20.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:69ff8439d8ba832d6bed88af2c2b3445977eba9a4588b787b32945871c2444e3"},
{file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cf34efa60eb81dd2645a2e13e00bb98b76c35ab5061a3989c7a70f78c85006d"},
{file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8e0fe9364ad0fddab2688ce72cb7a8e61ea42eff3c7caeeb83874a5d479c896c"},
{file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f64fbf81878ba914562c672024089e3401974a39767747691c65080a67b18c1"},
{file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6342d643bf9a1de97e512e45e4b9560a043347e779a173250824f8b254bd5ce"},
{file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56dac5f452ed25eef0f6e3c6a066c6ab68971d96a9fb441791cad0efba6140d3"},
{file = "yarl-1.20.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7d7f497126d65e2cad8dc5f97d34c27b19199b6414a40cb36b52f41b79014be"},
{file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:67e708dfb8e78d8a19169818eeb5c7a80717562de9051bf2413aca8e3696bf16"},
{file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:595c07bc79af2494365cc96ddeb772f76272364ef7c80fb892ef9d0649586513"},
{file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7bdd2f80f4a7df852ab9ab49484a4dee8030023aa536df41f2d922fd57bf023f"},
{file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c03bfebc4ae8d862f853a9757199677ab74ec25424d0ebd68a0027e9c639a390"},
{file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:344d1103e9c1523f32a5ed704d576172d2cabed3122ea90b1d4e11fe17c66458"},
{file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:88cab98aa4e13e1ade8c141daeedd300a4603b7132819c484841bb7af3edce9e"},
{file = "yarl-1.20.1-cp313-cp313t-win32.whl", hash = "sha256:b121ff6a7cbd4abc28985b6028235491941b9fe8fe226e6fdc539c977ea1739d"},
{file = "yarl-1.20.1-cp313-cp313t-win_amd64.whl", hash = "sha256:541d050a355bbbc27e55d906bc91cb6fe42f96c01413dd0f4ed5a5240513874f"},
{file = "yarl-1.20.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e42ba79e2efb6845ebab49c7bf20306c4edf74a0b20fc6b2ccdd1a219d12fad3"},
{file = "yarl-1.20.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:41493b9b7c312ac448b7f0a42a089dffe1d6e6e981a2d76205801a023ed26a2b"},
{file = "yarl-1.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5a5928ff5eb13408c62a968ac90d43f8322fd56d87008b8f9dabf3c0f6ee983"},
{file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30c41ad5d717b3961b2dd785593b67d386b73feca30522048d37298fee981805"},
{file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:59febc3969b0781682b469d4aca1a5cab7505a4f7b85acf6db01fa500fa3f6ba"},
{file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d2b6fb3622b7e5bf7a6e5b679a69326b4279e805ed1699d749739a61d242449e"},
{file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:749d73611db8d26a6281086f859ea7ec08f9c4c56cec864e52028c8b328db723"},
{file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9427925776096e664c39e131447aa20ec738bdd77c049c48ea5200db2237e000"},
{file = "yarl-1.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff70f32aa316393eaf8222d518ce9118148eddb8a53073c2403863b41033eed5"},
{file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c7ddf7a09f38667aea38801da8b8d6bfe81df767d9dfc8c88eb45827b195cd1c"},
{file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:57edc88517d7fc62b174fcfb2e939fbc486a68315d648d7e74d07fac42cec240"},
{file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:dab096ce479d5894d62c26ff4f699ec9072269d514b4edd630a393223f45a0ee"},
{file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:14a85f3bd2d7bb255be7183e5d7d6e70add151a98edf56a770d6140f5d5f4010"},
{file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c89b5c792685dd9cd3fa9761c1b9f46fc240c2a3265483acc1565769996a3f8"},
{file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:69e9b141de5511021942a6866990aea6d111c9042235de90e08f94cf972ca03d"},
{file = "yarl-1.20.1-cp39-cp39-win32.whl", hash = "sha256:b5f307337819cdfdbb40193cad84978a029f847b0a357fbe49f712063cfc4f06"},
{file = "yarl-1.20.1-cp39-cp39-win_amd64.whl", hash = "sha256:eae7bfe2069f9c1c5b05fc7fe5d612e5bbc089a39309904ee8b829e322dcad00"},
{file = "yarl-1.20.1-py3-none-any.whl", hash = "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77"},
{file = "yarl-1.20.1.tar.gz", hash = "sha256:d017a4997ee50c91fd5466cef416231bb82177b93b029906cefc542ce14c35ac"},
]
[package.dependencies]
idna = ">=2.0"
multidict = ">=4.0"
propcache = ">=0.2.1"
[metadata]
lock-version = "2.0"
python-versions = "^3.11"
content-hash = "36dfea6258aff09ab5ec675a213f8186fd9a7aed4fed6a23268c3edc95089b51"
python-mealie-0.9.6/pyproject.toml 0000664 0000000 0000000 00000007377 15022012370 0017223 0 ustar 00root root 0000000 0000000 [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.4.1"
covdefaults = "2.3.0"
coverage = {version = "7.8.2", extras = ["toml"]}
mypy = "1.16.0"
pre-commit = "4.2.0"
pre-commit-hooks = "5.0.0"
pylint = "3.3.7"
pytest = "8.4.0"
pytest-asyncio = "1.0.0"
pytest-cov = "6.1.1"
ruff = "0.11.13"
safety = "3.5.2"
yamllint = "1.37.1"
syrupy = "4.9.1"
aioresponses = "0.7.8"
[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"]
python-mealie-0.9.6/sonar-project.properties 0000664 0000000 0000000 00000001100 15022012370 0021165 0 ustar 00root root 0000000 0000000 sonar.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
python-mealie-0.9.6/src/ 0000775 0000000 0000000 00000000000 15022012370 0015060 5 ustar 00root root 0000000 0000000 python-mealie-0.9.6/src/aiomealie/ 0000775 0000000 0000000 00000000000 15022012370 0017005 5 ustar 00root root 0000000 0000000 python-mealie-0.9.6/src/aiomealie/__init__.py 0000664 0000000 0000000 00000002347 15022012370 0021124 0 ustar 00root root 0000000 0000000 """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",
]
python-mealie-0.9.6/src/aiomealie/exceptions.py 0000664 0000000 0000000 00000001017 15022012370 0021537 0 ustar 00root root 0000000 0000000 """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."""
python-mealie-0.9.6/src/aiomealie/mealie.py 0000664 0000000 0000000 00000026673 15022012370 0020631 0 ustar 00root root 0000000 0000000 """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()
python-mealie-0.9.6/src/aiomealie/models.py 0000664 0000000 0000000 00000021411 15022012370 0020641 0 ustar 00root root 0000000 0000000 """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"))
python-mealie-0.9.6/src/aiomealie/py.typed 0000664 0000000 0000000 00000000000 15022012370 0020472 0 ustar 00root root 0000000 0000000 python-mealie-0.9.6/tests/ 0000775 0000000 0000000 00000000000 15022012370 0015433 5 ustar 00root root 0000000 0000000 python-mealie-0.9.6/tests/__init__.py 0000664 0000000 0000000 00000000354 15022012370 0017546 0 ustar 00root root 0000000 0000000 """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")
python-mealie-0.9.6/tests/__snapshots__/ 0000775 0000000 0000000 00000000000 15022012370 0020251 5 ustar 00root root 0000000 0000000 python-mealie-0.9.6/tests/__snapshots__/test_mealie.ambr 0000664 0000000 0000000 00000232256 15022012370 0023421 0 ustar 00root root 0000000 0000000 # 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',
})
# ---
python-mealie-0.9.6/tests/conftest.py 0000664 0000000 0000000 00000002146 15022012370 0017635 0 ustar 00root root 0000000 0000000 """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
python-mealie-0.9.6/tests/const.py 0000664 0000000 0000000 00000000324 15022012370 0017132 0 ustar 00root root 0000000 0000000 """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, */*",
}
python-mealie-0.9.6/tests/fixtures/ 0000775 0000000 0000000 00000000000 15022012370 0017304 5 ustar 00root root 0000000 0000000 python-mealie-0.9.6/tests/fixtures/about.json 0000664 0000000 0000000 00000000034 15022012370 0021306 0 ustar 00root root 0000000 0000000 {
"version": "v2.4.1"
}
python-mealie-0.9.6/tests/fixtures/authentication_error.json 0000664 0000000 0000000 00000000063 15022012370 0024426 0 ustar 00root root 0000000 0000000 {
"detail": "Could not validate credentials"
}
python-mealie-0.9.6/tests/fixtures/bad_request_error.json 0000664 0000000 0000000 00000000077 15022012370 0023712 0 ustar 00root root 0000000 0000000 {
"detail": {
"details": "BAD_RECIPE_DATA"
}
}
python-mealie-0.9.6/tests/fixtures/groups_self.json 0000664 0000000 0000000 00000000775 15022012370 0022540 0 ustar 00root root 0000000 0000000 {
"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"
}
}
python-mealie-0.9.6/tests/fixtures/mealplan.json 0000664 0000000 0000000 00000003277 15022012370 0022001 0 ustar 00root root 0000000 0000000 {
"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"
}
}
python-mealie-0.9.6/tests/fixtures/mealplan_today.json 0000664 0000000 0000000 00000025667 15022012370 0023210 0 ustar 00root root 0000000 0000000 [
{
"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
}
}
]
python-mealie-0.9.6/tests/fixtures/mealplans.json 0000664 0000000 0000000 00000075301 15022012370 0022161 0 ustar 00root root 0000000 0000000 {
"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
}
python-mealie-0.9.6/tests/fixtures/not_found_error.json 0000664 0000000 0000000 00000000160 15022012370 0023400 0 ustar 00root root 0000000 0000000 {
"detail": {
"message": "No Entry Found",
"error": true,
"exception": null
}
}
python-mealie-0.9.6/tests/fixtures/recipe.json 0000664 0000000 0000000 00000025362 15022012370 0021456 0 ustar 00root root 0000000 0000000 {
"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": []
}
python-mealie-0.9.6/tests/fixtures/recipes.json 0000664 0000000 0000000 00000221215 15022012370 0021634 0 ustar 00root root 0000000 0000000 {
"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
}
python-mealie-0.9.6/tests/fixtures/scrape_recipe.json 0000664 0000000 0000000 00000000032 15022012370 0022776 0 ustar 00root root 0000000 0000000 "original-sacher-torte-2"
python-mealie-0.9.6/tests/fixtures/shopping_items.json 0000664 0000000 0000000 00000007147 15022012370 0023240 0 ustar 00root root 0000000 0000000 {
"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
}
python-mealie-0.9.6/tests/fixtures/shopping_lists.json 0000664 0000000 0000000 00000114657 15022012370 0023262 0 ustar 00root root 0000000 0000000 {
"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
}
python-mealie-0.9.6/tests/fixtures/startup_info.json 0000664 0000000 0000000 00000000035 15022012370 0022712 0 ustar 00root root 0000000 0000000 {
"isFirstLogin": true
}
python-mealie-0.9.6/tests/fixtures/statistics.json 0000664 0000000 0000000 00000000170 15022012370 0022367 0 ustar 00root root 0000000 0000000 {
"totalRecipes": 765,
"totalUsers": 3,
"totalCategories": 24,
"totalTags": 454,
"totalTools": 11
}
python-mealie-0.9.6/tests/fixtures/theme.json 0000664 0000000 0000000 00000000646 15022012370 0021307 0 ustar 00root root 0000000 0000000 {
"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"
}
python-mealie-0.9.6/tests/fixtures/users_self.json 0000664 0000000 0000000 00000001476 15022012370 0022361 0 ustar 00root root 0000000 0000000 {
"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"
}
python-mealie-0.9.6/tests/fixtures/validation_error.json 0000664 0000000 0000000 00000000573 15022012370 0023547 0 ustar 00root root 0000000 0000000 {
"detail": [
{
"type": "missing",
"loc": [
"body",
"shoppingListId"
],
"msg": "Field required",
"input": {
"note": "Test 422",
"isFood": false,
"checked": false,
"position": "4"
}
}
]
}
python-mealie-0.9.6/tests/ruff.toml 0000664 0000000 0000000 00000000704 15022012370 0017273 0 ustar 00root root 0000000 0000000 # 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
]
python-mealie-0.9.6/tests/syrupy.py 0000664 0000000 0000000 00000003402 15022012370 0017357 0 ustar 00root root 0000000 0000000 """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
python-mealie-0.9.6/tests/test_mealie.py 0000664 0000000 0000000 00000041644 15022012370 0020311 0 ustar 00root root 0000000 0000000 """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