openapi: 3.0.3
info:
  title: Tandoor
  version: 0.0.0 (2.3.6)
  x-logo:
    url: /static/assets/brand_logo.svg
    backgroundColor: '#FFFFFF'
    altText: Tandoor logo
    href: /
  description: Tandoor API Docs
paths:
  /api-token-auth/:
    post:
      operationId: apiTokenAuthCreate
      tags:
      - api-token-auth
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AuthToken'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AuthToken'
          application/json:
            schema:
              $ref: '#/components/schemas/AuthToken'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthToken'
          description: ''
  /api/access-token/:
    get:
      operationId: apiAccessTokenList
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AccessToken'
          description: ''
    post:
      operationId: apiAccessTokenCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessToken'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AccessToken'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AccessToken'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessToken'
          description: ''
  /api/access-token/{id}/:
    get:
      operationId: apiAccessTokenRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this access token.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessToken'
          description: ''
    put:
      operationId: apiAccessTokenUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this access token.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessToken'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AccessToken'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AccessToken'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessToken'
          description: ''
    patch:
      operationId: apiAccessTokenPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this access token.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedAccessToken'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedAccessToken'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedAccessToken'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessToken'
          description: ''
    delete:
      operationId: apiAccessTokenDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this access token.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/ai-import/:
    post:
      operationId: apiAiImportCreate
      description: given an image or PDF file convert its content to a structured
        recipe using AI and the scraping system
      tags:
      - api
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AiImport'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeFromSourceResponse'
          description: ''
  /api/ai-log/:
    get:
      operationId: apiAiLogList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedAiLogList'
          description: ''
  /api/ai-log/{id}/:
    get:
      operationId: apiAiLogRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ai log.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AiLog'
          description: ''
  /api/ai-provider/:
    get:
      operationId: apiAiProviderList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedAiProviderList'
          description: ''
    post:
      operationId: apiAiProviderCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AiProvider'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AiProvider'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AiProvider'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AiProvider'
          description: ''
  /api/ai-provider/{id}/:
    get:
      operationId: apiAiProviderRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ai provider.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AiProvider'
          description: ''
    put:
      operationId: apiAiProviderUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ai provider.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AiProvider'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AiProvider'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AiProvider'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AiProvider'
          description: ''
    patch:
      operationId: apiAiProviderPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ai provider.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedAiProvider'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedAiProvider'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedAiProvider'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AiProvider'
          description: ''
    delete:
      operationId: apiAiProviderDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ai provider.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/ai-provider/{id}/cascading/:
    get:
      operationId: apiAiProviderCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ai provider.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/ai-provider/{id}/nulling/:
    get:
      operationId: apiAiProviderNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ai provider.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/ai-provider/{id}/protecting/:
    get:
      operationId: apiAiProviderProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ai provider.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/ai-step-sort/:
    post:
      operationId: apiAiStepSortCreate
      description: given an image or PDF file convert its content to a structured
        recipe using AI and the scraping system
      parameters:
      - in: query
        name: provider
        schema:
          type: integer
        description: ID of the AI provider that should be used for this AI request
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Recipe'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Recipe'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Recipe'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipe'
          description: ''
  /api/auto-plan/:
    post:
      operationId: apiAutoPlanCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutoMealPlan'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AutoMealPlan'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AutoMealPlan'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutoMealPlan'
          description: ''
  /api/automation/:
    get:
      operationId: apiAutomationList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: type
        schema:
          type: array
          items:
            type: string
            enum:
            - DESCRIPTION_REPLACE
            - FOOD_ALIAS
            - FOOD_REPLACE
            - INSTRUCTION_REPLACE
            - KEYWORD_ALIAS
            - NAME_REPLACE
            - NEVER_UNIT
            - TRANSPOSE_WORDS
            - UNIT_ALIAS
            - UNIT_REPLACE
        description: Return the Automations matching the automation type.  Repeat
          for multiple.
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedAutomationList'
          description: ''
    post:
      operationId: apiAutomationCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Automation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Automation'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Automation'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Automation'
          description: ''
  /api/automation/{id}/:
    get:
      operationId: apiAutomationRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this automation.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Automation'
          description: ''
    put:
      operationId: apiAutomationUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this automation.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Automation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Automation'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Automation'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Automation'
          description: ''
    patch:
      operationId: apiAutomationPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this automation.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedAutomation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedAutomation'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedAutomation'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Automation'
          description: ''
    delete:
      operationId: apiAutomationDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this automation.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/bookmarklet-import/:
    get:
      operationId: apiBookmarkletImportList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedBookmarkletImportListList'
          description: ''
    post:
      operationId: apiBookmarkletImportCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookmarkletImport'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BookmarkletImport'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BookmarkletImport'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookmarkletImport'
          description: ''
  /api/bookmarklet-import/{id}/:
    get:
      operationId: apiBookmarkletImportRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this bookmarklet import.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookmarkletImport'
          description: ''
    put:
      operationId: apiBookmarkletImportUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this bookmarklet import.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookmarkletImport'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BookmarkletImport'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BookmarkletImport'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookmarkletImport'
          description: ''
    patch:
      operationId: apiBookmarkletImportPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this bookmarklet import.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedBookmarkletImport'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedBookmarkletImport'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedBookmarkletImport'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookmarkletImport'
          description: ''
    delete:
      operationId: apiBookmarkletImportDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this bookmarklet import.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/connector-config/:
    get:
      operationId: apiConnectorConfigList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedConnectorConfigList'
          description: ''
    post:
      operationId: apiConnectorConfigCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectorConfig'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ConnectorConfig'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ConnectorConfig'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorConfig'
          description: ''
  /api/connector-config/{id}/:
    get:
      operationId: apiConnectorConfigRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this connector config.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorConfig'
          description: ''
    put:
      operationId: apiConnectorConfigUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this connector config.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectorConfig'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ConnectorConfig'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ConnectorConfig'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorConfig'
          description: ''
    patch:
      operationId: apiConnectorConfigPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this connector config.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedConnectorConfig'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedConnectorConfig'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedConnectorConfig'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectorConfig'
          description: ''
    delete:
      operationId: apiConnectorConfigDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this connector config.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/connector-config/{id}/cascading/:
    get:
      operationId: apiConnectorConfigCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this connector config.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/connector-config/{id}/nulling/:
    get:
      operationId: apiConnectorConfigNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this connector config.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/connector-config/{id}/protecting/:
    get:
      operationId: apiConnectorConfigProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this connector config.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/cook-log/:
    get:
      operationId: apiCookLogList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: recipe
        schema:
          type: integer
        description: Filter for entries with the given recipe
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedCookLogList'
          description: ''
    post:
      operationId: apiCookLogCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CookLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CookLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CookLog'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CookLog'
          description: ''
  /api/cook-log/{id}/:
    get:
      operationId: apiCookLogRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this cook log.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CookLog'
          description: ''
    put:
      operationId: apiCookLogUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this cook log.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CookLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CookLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CookLog'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CookLog'
          description: ''
    patch:
      operationId: apiCookLogPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this cook log.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedCookLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedCookLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedCookLog'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CookLog'
          description: ''
    delete:
      operationId: apiCookLogDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this cook log.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/custom-filter/:
    get:
      operationId: apiCustomFilterList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: limit
        schema:
          type: string
        description: limit number of entries to return
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: lookup if query string is contained within the name, case insensitive
      - in: query
        name: random
        schema:
          type: string
        description: randomly orders entries (only works together with limit)
      - in: query
        name: type
        schema:
          type: array
          items:
            type: string
            enum:
            - FOOD
            - KEYWORD
            - RECIPE
        description: Return the CustomFilters matching the model type.  Repeat for
          multiple.
      - in: query
        name: updated_at
        schema:
          type: string
        description: if model has an updated_at timestamp, filter only models updated
          at or after datetime
        examples:
          DateFormat:
            value: '1972-12-05'
            summary: Date Format
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedCustomFilterList'
          description: ''
    post:
      operationId: apiCustomFilterCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFilter'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CustomFilter'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CustomFilter'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFilter'
          description: ''
  /api/custom-filter/{id}/:
    get:
      operationId: apiCustomFilterRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this custom filter.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFilter'
          description: ''
    put:
      operationId: apiCustomFilterUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this custom filter.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFilter'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CustomFilter'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CustomFilter'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFilter'
          description: ''
    patch:
      operationId: apiCustomFilterPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this custom filter.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedCustomFilter'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedCustomFilter'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedCustomFilter'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFilter'
          description: ''
    delete:
      operationId: apiCustomFilterDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this custom filter.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/download-file/{fileId}/:
    get:
      operationId: apiDownloadFileRetrieve
      description: |-
        function to download a user file securely (wrapping as zip to prevent any context based XSS problems)
        temporary solution until a real file manager is implemented
      parameters:
      - in: path
        name: fileId
        schema:
          type: integer
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          description: No response body
  /api/export/:
    post:
      operationId: apiExportCreate
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExportRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ExportRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ExportRequest'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExportLog'
          description: ''
  /api/export-log/:
    get:
      operationId: apiExportLogList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedExportLogList'
          description: ''
    post:
      operationId: apiExportLogCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExportLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ExportLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ExportLog'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExportLog'
          description: ''
  /api/export-log/{id}/:
    get:
      operationId: apiExportLogRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this export log.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExportLog'
          description: ''
    put:
      operationId: apiExportLogUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this export log.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExportLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ExportLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ExportLog'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExportLog'
          description: ''
    patch:
      operationId: apiExportLogPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this export log.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedExportLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedExportLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedExportLog'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExportLog'
          description: ''
    delete:
      operationId: apiExportLogDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this export log.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/fdc-search/:
    get:
      operationId: apiFdcSearchRetrieve
      parameters:
      - in: query
        name: dataType
        schema:
          type: array
          items:
            type: string
        description: 'options: Branded,Foundation,Survey (FNDDS),SR Legacy'
      - in: query
        name: query
        schema:
          type: string
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FdcQuery'
          description: ''
  /api/food/:
    get:
      operationId: apiFoodList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: limit
        schema:
          type: string
        description: limit number of entries to return
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: lookup if query string is contained within the name, case insensitive
      - in: query
        name: random
        schema:
          type: string
        description: randomly orders entries (only works together with limit)
      - in: query
        name: root
        schema:
          type: integer
        description: Return first level children of {obj} with ID [int].  Integer
          0 will return root {obj}s.
      - in: query
        name: root_tree
        schema:
          type: integer
        description: Return all items belonging to the tree of the given {obj} id
      - in: query
        name: tree
        schema:
          type: integer
        description: Return all self and children of {obj} with ID [int].
      - in: query
        name: updated_at
        schema:
          type: string
        description: if model has an updated_at timestamp, filter only models updated
          at or after datetime
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedFoodList'
          description: ''
    post:
      operationId: apiFoodCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Food'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Food'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Food'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Food'
          description: ''
  /api/food-inherit-field/:
    get:
      operationId: apiFoodInheritFieldList
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FoodInheritField'
          description: ''
  /api/food-inherit-field/{id}/:
    get:
      operationId: apiFoodInheritFieldRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food inherit field.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FoodInheritField'
          description: ''
  /api/food/{id}/:
    get:
      operationId: apiFoodRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Food'
          description: ''
    put:
      operationId: apiFoodUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Food'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Food'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Food'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Food'
          description: ''
    patch:
      operationId: apiFoodPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedFood'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedFood'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedFood'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Food'
          description: ''
    delete:
      operationId: apiFoodDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/food/{id}/aiproperties/:
    post:
      operationId: apiFoodAipropertiesCreate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      - in: query
        name: provider
        schema:
          type: integer
        description: ID of the AI provider that should be used for this AI request
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Food'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Food'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Food'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Food'
          description: ''
  /api/food/{id}/cascading/:
    get:
      operationId: apiFoodCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/food/{id}/fdc/:
    post:
      operationId: apiFoodFdcCreate
      description: |-
        updates the food with all possible data from the FDC Api
        if properties with a fdc_id already exist they will be overridden, if existing properties don't have a fdc_id they won't be changed
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Food'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Food'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Food'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Food'
          description: ''
  /api/food/{id}/merge/{target}/:
    put:
      operationId: apiFoodMergeUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      - in: path
        name: target
        schema:
          type: integer
        description: The ID of the {obj} you want to merge with.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Food'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Food'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Food'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Food'
          description: ''
  /api/food/{id}/move/{parent}/:
    put:
      operationId: apiFoodMoveUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      - in: path
        name: parent
        schema:
          type: integer
        description: The ID of the desired parent of the {obj}.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Food'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Food'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Food'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Food'
          description: ''
  /api/food/{id}/nulling/:
    get:
      operationId: apiFoodNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/food/{id}/protecting/:
    get:
      operationId: apiFoodProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/food/{id}/shopping/:
    put:
      operationId: apiFoodShoppingUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this food.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FoodShoppingUpdate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/FoodShoppingUpdate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FoodShoppingUpdate'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FoodShoppingUpdate'
          description: ''
  /api/food/batch_update/:
    put:
      operationId: apiFoodBatchUpdateUpdate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FoodBatchUpdate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/FoodBatchUpdate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FoodBatchUpdate'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FoodBatchUpdate'
          description: ''
  /api/get_external_file_link/{id}/:
    get:
      operationId: apiGetExternalFileLinkRetrieve
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          description: No response body
  /api/get_recipe_file/{id}/:
    get:
      operationId: apiGetRecipeFileRetrieve
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          description: No response body
  /api/group/:
    get:
      operationId: apiGroupList
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Group'
          description: ''
  /api/group/{id}/:
    get:
      operationId: apiGroupRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this gruppo.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Group'
          description: ''
  /api/import/:
    post:
      operationId: apiImportCreate
      tags:
      - api
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AiImport'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeFromSourceResponse'
          description: ''
  /api/import-log/:
    get:
      operationId: apiImportLogList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedImportLogList'
          description: ''
    post:
      operationId: apiImportLogCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ImportLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ImportLog'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImportLog'
          description: ''
  /api/import-log/{id}/:
    get:
      operationId: apiImportLogRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this import log.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImportLog'
          description: ''
    put:
      operationId: apiImportLogUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this import log.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ImportLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ImportLog'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImportLog'
          description: ''
    patch:
      operationId: apiImportLogPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this import log.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedImportLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedImportLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedImportLog'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImportLog'
          description: ''
    delete:
      operationId: apiImportLogDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this import log.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/import-open-data/:
    get:
      operationId: apiImportOpenDataRetrieve
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImportOpenDataMetaData'
          description: ''
    post:
      operationId: apiImportOpenDataCreate
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportOpenData'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ImportOpenData'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ImportOpenData'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImportOpenDataResponse'
          description: ''
  /api/ingredient/:
    get:
      operationId: apiIngredientList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: food
        schema:
          type: integer
        description: ID of food to filter for
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: unit
        schema:
          type: integer
        description: ID of unit to filter for
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedIngredientList'
          description: ''
    post:
      operationId: apiIngredientCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ingredient'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Ingredient'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Ingredient'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ingredient'
          description: ''
  /api/ingredient-from-string/:
    post:
      operationId: apiIngredientFromStringCreate
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IngredientString'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/IngredientString'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IngredientString'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParsedIngredient'
          description: ''
  /api/ingredient/{id}/:
    get:
      operationId: apiIngredientRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ingredient.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ingredient'
          description: ''
    put:
      operationId: apiIngredientUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ingredient.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ingredient'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Ingredient'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Ingredient'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ingredient'
          description: ''
    patch:
      operationId: apiIngredientPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ingredient.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedIngredient'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedIngredient'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedIngredient'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ingredient'
          description: ''
    delete:
      operationId: apiIngredientDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this ingredient.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/invite-link/:
    get:
      operationId: apiInviteLinkList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: internal_note
        schema:
          type: string
        description: Text field to store data that gets carried over to the UserSpace
          created from the InviteLink
      - in: query
        name: limit
        schema:
          type: string
        description: limit number of entries to return
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: lookup if query string is contained within the name, case insensitive
      - in: query
        name: random
        schema:
          type: string
        description: randomly orders entries (only works together with limit)
      - in: query
        name: unused
        schema:
          type: boolean
        description: Only return InviteLinks that have not been used yet.
      - in: query
        name: updated_at
        schema:
          type: string
        description: if model has an updated_at timestamp, filter only models updated
          at or after datetime
        examples:
          DateFormat:
            value: '1972-12-05'
            summary: Date Format
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedInviteLinkList'
          description: ''
    post:
      operationId: apiInviteLinkCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InviteLink'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/InviteLink'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/InviteLink'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InviteLink'
          description: ''
  /api/invite-link/{id}/:
    get:
      operationId: apiInviteLinkRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this invite link.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InviteLink'
          description: ''
    put:
      operationId: apiInviteLinkUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this invite link.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InviteLink'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/InviteLink'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/InviteLink'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InviteLink'
          description: ''
    patch:
      operationId: apiInviteLinkPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this invite link.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedInviteLink'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedInviteLink'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedInviteLink'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InviteLink'
          description: ''
    delete:
      operationId: apiInviteLinkDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this invite link.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/keyword/:
    get:
      operationId: apiKeywordList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: limit
        schema:
          type: string
        description: limit number of entries to return
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: lookup if query string is contained within the name, case insensitive
      - in: query
        name: random
        schema:
          type: string
        description: randomly orders entries (only works together with limit)
      - in: query
        name: root
        schema:
          type: integer
        description: Return first level children of {obj} with ID [int].  Integer
          0 will return root {obj}s.
      - in: query
        name: root_tree
        schema:
          type: integer
        description: Return all items belonging to the tree of the given {obj} id
      - in: query
        name: tree
        schema:
          type: integer
        description: Return all self and children of {obj} with ID [int].
      - in: query
        name: updated_at
        schema:
          type: string
        description: if model has an updated_at timestamp, filter only models updated
          at or after datetime
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedKeywordList'
          description: ''
    post:
      operationId: apiKeywordCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Keyword'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Keyword'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Keyword'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Keyword'
          description: ''
  /api/keyword/{id}/:
    get:
      operationId: apiKeywordRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this keyword.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Keyword'
          description: ''
    put:
      operationId: apiKeywordUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this keyword.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Keyword'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Keyword'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Keyword'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Keyword'
          description: ''
    patch:
      operationId: apiKeywordPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this keyword.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedKeyword'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedKeyword'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedKeyword'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Keyword'
          description: ''
    delete:
      operationId: apiKeywordDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this keyword.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/keyword/{id}/cascading/:
    get:
      operationId: apiKeywordCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this keyword.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/keyword/{id}/merge/{target}/:
    put:
      operationId: apiKeywordMergeUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this keyword.
        required: true
      - in: path
        name: target
        schema:
          type: integer
        description: The ID of the {obj} you want to merge with.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Keyword'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Keyword'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Keyword'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Keyword'
          description: ''
  /api/keyword/{id}/move/{parent}/:
    put:
      operationId: apiKeywordMoveUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this keyword.
        required: true
      - in: path
        name: parent
        schema:
          type: integer
        description: The ID of the desired parent of the {obj}.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Keyword'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Keyword'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Keyword'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Keyword'
          description: ''
  /api/keyword/{id}/nulling/:
    get:
      operationId: apiKeywordNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this keyword.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/keyword/{id}/protecting/:
    get:
      operationId: apiKeywordProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this keyword.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/localization/:
    get:
      operationId: apiLocalizationList
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Localization'
          description: ''
  /api/meal-plan/:
    get:
      operationId: apiMealPlanList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: from_date
        schema:
          type: string
        description: Filter meal plans from date (inclusive).
        examples:
          DateFormat:
            value: '1972-12-05'
            summary: Date Format
      - in: query
        name: meal_type
        schema:
          type: array
          items:
            type: string
        description: Filter meal plans with MealType ID. For multiple repeat parameter.
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: to_date
        schema:
          type: string
        description: Filter meal plans to date (inclusive).
        examples:
          DateFormat:
            value: '1972-12-05'
            summary: Date Format
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedMealPlanList'
          description: ''
    post:
      operationId: apiMealPlanCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MealPlan'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/MealPlan'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/MealPlan'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MealPlan'
          description: ''
  /api/meal-plan/{id}/:
    get:
      operationId: apiMealPlanRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this meal plan.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MealPlan'
          description: ''
    put:
      operationId: apiMealPlanUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this meal plan.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MealPlan'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/MealPlan'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/MealPlan'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MealPlan'
          description: ''
    patch:
      operationId: apiMealPlanPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this meal plan.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedMealPlan'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedMealPlan'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedMealPlan'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MealPlan'
          description: ''
    delete:
      operationId: apiMealPlanDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this meal plan.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/meal-plan/ical/:
    get:
      operationId: apiMealPlanIcalRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: from_date
        schema:
          type: string
        description: Filter meal plans from date (inclusive).
        examples:
          DateFormat:
            value: '1972-12-05'
            summary: Date Format
      - in: query
        name: meal_type
        schema:
          type: array
          items:
            type: string
        description: Filter meal plans with MealType ID. For multiple repeat parameter.
      - in: query
        name: to_date
        schema:
          type: string
        description: Filter meal plans to date (inclusive).
        examples:
          DateFormat:
            value: '1972-12-05'
            summary: Date Format
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            text/calendar:
              schema:
                type: string
          description: ''
  /api/meal-type/:
    get:
      operationId: apiMealTypeList
      description: |-
        returns list of meal types created by the
        requesting user ordered by the order field.
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedMealTypeList'
          description: ''
    post:
      operationId: apiMealTypeCreate
      description: |-
        returns list of meal types created by the
        requesting user ordered by the order field.
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MealType'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/MealType'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/MealType'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MealType'
          description: ''
  /api/meal-type/{id}/:
    get:
      operationId: apiMealTypeRetrieve
      description: |-
        returns list of meal types created by the
        requesting user ordered by the order field.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this meal type.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MealType'
          description: ''
    put:
      operationId: apiMealTypeUpdate
      description: |-
        returns list of meal types created by the
        requesting user ordered by the order field.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this meal type.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MealType'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/MealType'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/MealType'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MealType'
          description: ''
    patch:
      operationId: apiMealTypePartialUpdate
      description: |-
        returns list of meal types created by the
        requesting user ordered by the order field.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this meal type.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedMealType'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedMealType'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedMealType'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MealType'
          description: ''
    delete:
      operationId: apiMealTypeDestroy
      description: |-
        returns list of meal types created by the
        requesting user ordered by the order field.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this meal type.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/meal-type/{id}/cascading/:
    get:
      operationId: apiMealTypeCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this meal type.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/meal-type/{id}/nulling/:
    get:
      operationId: apiMealTypeNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this meal type.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/meal-type/{id}/protecting/:
    get:
      operationId: apiMealTypeProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this meal type.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/property/:
    get:
      operationId: apiPropertyList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedPropertyList'
          description: ''
    post:
      operationId: apiPropertyCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Property'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Property'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Property'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Property'
          description: ''
  /api/property-type/:
    get:
      operationId: apiPropertyTypeList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: category
        schema:
          type: array
          items:
            type: string
            enum:
            - ALLERGEN
            - GOAL
            - NUTRITION
            - OTHER
            - PRICE
        description: Return the PropertyTypes matching the property category.  Repeat
          for multiple.
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedPropertyTypeList'
          description: ''
    post:
      operationId: apiPropertyTypeCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PropertyType'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PropertyType'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PropertyType'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PropertyType'
          description: ''
  /api/property-type/{id}/:
    get:
      operationId: apiPropertyTypeRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this property type.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PropertyType'
          description: ''
    put:
      operationId: apiPropertyTypeUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this property type.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PropertyType'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PropertyType'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PropertyType'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PropertyType'
          description: ''
    patch:
      operationId: apiPropertyTypePartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this property type.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedPropertyType'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedPropertyType'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedPropertyType'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PropertyType'
          description: ''
    delete:
      operationId: apiPropertyTypeDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this property type.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/property-type/{id}/cascading/:
    get:
      operationId: apiPropertyTypeCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this property type.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/property-type/{id}/nulling/:
    get:
      operationId: apiPropertyTypeNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this property type.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/property-type/{id}/protecting/:
    get:
      operationId: apiPropertyTypeProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this property type.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/property/{id}/:
    get:
      operationId: apiPropertyRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this property.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Property'
          description: ''
    put:
      operationId: apiPropertyUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this property.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Property'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Property'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Property'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Property'
          description: ''
    patch:
      operationId: apiPropertyPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this property.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedProperty'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedProperty'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedProperty'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Property'
          description: ''
    delete:
      operationId: apiPropertyDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this property.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/recipe/:
    get:
      operationId: apiRecipeList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: books
        schema:
          type: array
          items:
            type: integer
        description: ID of book a recipe should be in. For multiple repeat parameter.
      - in: query
        name: books_and
        schema:
          type: array
          items:
            type: integer
        description: Book IDs, repeat for multiple. Return recipes with all of the
          books.
      - in: query
        name: books_and_not
        schema:
          type: array
          items:
            type: integer
        description: Book IDs, repeat for multiple. Exclude recipes with all of the
          books.
      - in: query
        name: books_or
        schema:
          type: array
          items:
            type: integer
        description: Book IDs, repeat for multiple. Return recipes with any of the
          books
      - in: query
        name: books_or_not
        schema:
          type: array
          items:
            type: integer
        description: Book IDs, repeat for multiple. Exclude recipes with any of the
          books.
      - in: query
        name: cookedon_gte
        schema:
          type: string
          format: date
        description: Filter recipes last cooked on the given date or after.
      - in: query
        name: cookedon_lte
        schema:
          type: string
          format: date
        description: Filter recipes last cooked on the given date or before.
      - in: query
        name: createdby
        schema:
          type: integer
        description: Filter recipes for ones created by the given user ID
      - in: query
        name: createdon
        schema:
          type: string
          format: date
        description: Filter recipes created on the given date.
      - in: query
        name: createdon_gte
        schema:
          type: string
          format: date
        description: Filter recipes created on the given date or after.
      - in: query
        name: createdon_lte
        schema:
          type: string
          format: date
        description: Filter recipes created on the given date or before.
      - in: query
        name: filter
        schema:
          type: integer
        description: ID of a custom filter. Returns all recipes matched by that filter.
      - in: query
        name: foods
        schema:
          type: array
          items:
            type: integer
        description: ID of food a recipe should have. For multiple repeat parameter.
      - in: query
        name: foods_and
        schema:
          type: array
          items:
            type: integer
        description: Food IDs, repeat for multiple. Return recipes with all of the
          foods.
      - in: query
        name: foods_and_not
        schema:
          type: array
          items:
            type: integer
        description: Food IDs, repeat for multiple. Exclude recipes with all of the
          foods.
      - in: query
        name: foods_or
        schema:
          type: array
          items:
            type: integer
        description: Food IDs, repeat for multiple. Return recipes with any of the
          foods
      - in: query
        name: foods_or_not
        schema:
          type: array
          items:
            type: integer
        description: Food IDs, repeat for multiple. Exclude recipes with any of the
          foods.
      - in: query
        name: internal
        schema:
          type: boolean
        description: If only internal recipes should be returned. [true/<b>false</b>]
      - in: query
        name: keywords
        schema:
          type: array
          items:
            type: integer
        description: ID of keyword a recipe should have. For multiple repeat parameter.
          Equivalent to keywords_or
      - in: query
        name: keywords_and
        schema:
          type: array
          items:
            type: integer
        description: Keyword IDs, repeat for multiple. Return recipes with all of
          the keywords.
      - in: query
        name: keywords_and_not
        schema:
          type: array
          items:
            type: integer
        description: Keyword IDs, repeat for multiple. Exclude recipes with all of
          the keywords.
      - in: query
        name: keywords_or
        schema:
          type: array
          items:
            type: integer
        description: Keyword IDs, repeat for multiple. Return recipes with any of
          the keywords
      - in: query
        name: keywords_or_not
        schema:
          type: array
          items:
            type: integer
        description: Keyword IDs, repeat for multiple. Exclude recipes with any of
          the keywords.
      - in: query
        name: makenow
        schema:
          type: boolean
        description: Filter recipes that can be made with OnHand food. [true/<b>false</b>]
      - in: query
        name: new
        schema:
          type: boolean
        description: Returns new results first in search results. [true/<b>false</b>]
      - in: query
        name: num_recent
        schema:
          type: integer
        description: Returns the given number of recently viewed recipes before search
          results (if given)
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: Query string matched (fuzzy) against recipe name. In the future
          also fulltext search.
      - in: query
        name: random
        schema:
          type: boolean
        description: Returns the results in randomized order. [true/<b>false</b>]
      - in: query
        name: rating
        schema:
          type: integer
        description: Exact rating of recipe
      - in: query
        name: rating_gte
        schema:
          type: integer
        description: Rating a recipe should have or greater.
      - in: query
        name: rating_lte
        schema:
          type: integer
        description: Rating a recipe should have or smaller.
      - in: query
        name: sort_order
        schema:
          type: string
        description: 'Determines the order of the results. Options are: score,-score,name,-name,lastcooked,-lastcooked,rating,-rating,times_cooked,-times_cooked,created_at,-created_at,lastviewed,-lastviewed'
      - in: query
        name: timescooked
        schema:
          type: integer
        description: Filter recipes cooked X times.
      - in: query
        name: timescooked_gte
        schema:
          type: integer
        description: Filter recipes cooked X times or more.
      - in: query
        name: timescooked_lte
        schema:
          type: integer
        description: Filter recipes cooked X times or less.
      - in: query
        name: units
        schema:
          type: integer
        description: ID of unit a recipe should have.
      - in: query
        name: updatedon
        schema:
          type: string
          format: date
        description: Filter recipes updated on the given date.
      - in: query
        name: updatedon_gte
        schema:
          type: string
          format: date
        description: Filter recipes updated on the given date.
      - in: query
        name: updatedon_lte
        schema:
          type: string
          format: date
        description: Filter recipes updated on the given date.
      - in: query
        name: viewedon_gte
        schema:
          type: string
          format: date
        description: Filter recipes lasts viewed on the given date.
      - in: query
        name: viewedon_lte
        schema:
          type: string
          format: date
        description: Filter recipes lasts viewed on the given date.
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRecipeOverviewList'
          description: ''
    post:
      operationId: apiRecipeCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Recipe'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Recipe'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Recipe'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipe'
          description: ''
  /api/recipe-book/:
    get:
      operationId: apiRecipeBookList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: limit
        schema:
          type: string
        description: limit number of entries to return
      - in: query
        name: order_direction
        schema:
          type: string
          enum:
          - asc
          - desc
        description: Order ascending or descending
      - in: query
        name: order_field
        schema:
          type: string
          enum:
          - id
          - name
          - order
        description: Field to order recipe books on
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: lookup if query string is contained within the name, case insensitive
      - in: query
        name: random
        schema:
          type: string
        description: randomly orders entries (only works together with limit)
      - in: query
        name: updated_at
        schema:
          type: string
        description: if model has an updated_at timestamp, filter only models updated
          at or after datetime
        examples:
          DateFormat:
            value: '1972-12-05'
            summary: Date Format
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRecipeBookList'
          description: ''
    post:
      operationId: apiRecipeBookCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeBook'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RecipeBook'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeBook'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeBook'
          description: ''
  /api/recipe-book-entry/:
    get:
      operationId: apiRecipeBookEntryList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: book
        schema:
          type: integer
        description: id of book - only return recipes in that book
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: recipe
        schema:
          type: integer
        description: id of recipe - only return books for that recipe
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRecipeBookEntryList'
          description: ''
    post:
      operationId: apiRecipeBookEntryCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeBookEntry'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RecipeBookEntry'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeBookEntry'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeBookEntry'
          description: ''
  /api/recipe-book-entry/{id}/:
    get:
      operationId: apiRecipeBookEntryRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe book entry.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeBookEntry'
          description: ''
    put:
      operationId: apiRecipeBookEntryUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe book entry.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeBookEntry'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RecipeBookEntry'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeBookEntry'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeBookEntry'
          description: ''
    patch:
      operationId: apiRecipeBookEntryPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe book entry.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedRecipeBookEntry'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedRecipeBookEntry'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedRecipeBookEntry'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeBookEntry'
          description: ''
    delete:
      operationId: apiRecipeBookEntryDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe book entry.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/recipe-book/{id}/:
    get:
      operationId: apiRecipeBookRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe book.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeBook'
          description: ''
    put:
      operationId: apiRecipeBookUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe book.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeBook'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RecipeBook'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeBook'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeBook'
          description: ''
    patch:
      operationId: apiRecipeBookPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe book.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedRecipeBook'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedRecipeBook'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedRecipeBook'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeBook'
          description: ''
    delete:
      operationId: apiRecipeBookDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe book.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/recipe-book/{id}/cascading/:
    get:
      operationId: apiRecipeBookCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe book.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/recipe-book/{id}/nulling/:
    get:
      operationId: apiRecipeBookNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe book.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/recipe-book/{id}/protecting/:
    get:
      operationId: apiRecipeBookProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe book.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/recipe-from-source/:
    post:
      operationId: apiRecipeFromSourceCreate
      description: |-
        function to retrieve a recipe from a given url or source string
        :param request: standard request with additional post parameters
                - url: url to use for importing recipe
                - data: if no url is given recipe is imported from provided source data
                - (optional) bookmarklet: id of bookmarklet import to use, overrides URL and data attributes
        :return: JsonResponse containing the parsed json and images
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeFromSource'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RecipeFromSource'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeFromSource'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeFromSourceResponse'
          description: ''
  /api/recipe-import/:
    get:
      operationId: apiRecipeImportList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRecipeImportList'
          description: ''
    post:
      operationId: apiRecipeImportCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeImport'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RecipeImport'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeImport'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeImport'
          description: ''
  /api/recipe-import/{id}/:
    get:
      operationId: apiRecipeImportRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe import.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeImport'
          description: ''
    put:
      operationId: apiRecipeImportUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe import.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeImport'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RecipeImport'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeImport'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeImport'
          description: ''
    patch:
      operationId: apiRecipeImportPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe import.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedRecipeImport'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedRecipeImport'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedRecipeImport'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeImport'
          description: ''
    delete:
      operationId: apiRecipeImportDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe import.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/recipe-import/{id}/import_recipe/:
    post:
      operationId: apiRecipeImportImportRecipeCreate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe import.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeImport'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RecipeImport'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeImport'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipe'
          description: ''
  /api/recipe-import/import_all/:
    post:
      operationId: apiRecipeImportImportAllCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeImport'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RecipeImport'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeImport'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeImport'
          description: ''
  /api/recipe/{id}/:
    get:
      operationId: apiRecipeRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      - in: query
        name: share
        schema:
          type: string
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipe'
          description: ''
    put:
      operationId: apiRecipeUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Recipe'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Recipe'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Recipe'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipe'
          description: ''
    patch:
      operationId: apiRecipePartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedRecipe'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedRecipe'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedRecipe'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipe'
          description: ''
    delete:
      operationId: apiRecipeDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/recipe/{id}/aiproperties/:
    post:
      operationId: apiRecipeAipropertiesCreate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      - in: query
        name: provider
        schema:
          type: integer
        description: ID of the AI provider that should be used for this AI request
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Recipe'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Recipe'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Recipe'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipe'
          description: ''
  /api/recipe/{id}/cascading/:
    get:
      operationId: apiRecipeCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/recipe/{id}/delete_external/:
    patch:
      operationId: apiRecipeDeleteExternalPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedRecipe'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedRecipe'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedRecipe'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipe'
          description: ''
  /api/recipe/{id}/image/:
    put:
      operationId: apiRecipeImageUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      tags:
      - api
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeImage'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeImage'
          description: ''
  /api/recipe/{id}/nulling/:
    get:
      operationId: apiRecipeNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/recipe/{id}/protecting/:
    get:
      operationId: apiRecipeProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/recipe/{id}/related/:
    get:
      operationId: apiRecipeRelatedList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RecipeSimple'
          description: ''
  /api/recipe/{id}/shopping/:
    put:
      operationId: apiRecipeShoppingUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this recipe.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeShoppingUpdate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RecipeShoppingUpdate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeShoppingUpdate'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeShoppingUpdate'
          description: ''
  /api/recipe/batch_update/:
    put:
      operationId: apiRecipeBatchUpdateUpdate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipeBatchUpdate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RecipeBatchUpdate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/RecipeBatchUpdate'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipeBatchUpdate'
          description: ''
  /api/recipe/flat/:
    get:
      operationId: apiRecipeFlatList
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RecipeFlat'
          description: ''
  /api/reset-food-inheritance/:
    post:
      operationId: apiResetFoodInheritanceCreate
      description: function to reset inheritance from api, see food method for docs
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          description: No response body
  /api/search-fields/:
    get:
      operationId: apiSearchFieldsList
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SearchFields'
          description: ''
  /api/search-fields/{id}/:
    get:
      operationId: apiSearchFieldsRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this search fields.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchFields'
          description: ''
  /api/search-preference/:
    get:
      operationId: apiSearchPreferenceList
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SearchPreference'
          description: ''
  /api/search-preference/{user}/:
    get:
      operationId: apiSearchPreferenceRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: user
        schema:
          type: integer
        description: A unique value identifying this search preference.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchPreference'
          description: ''
    patch:
      operationId: apiSearchPreferencePartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: user
        schema:
          type: integer
        description: A unique value identifying this search preference.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedSearchPreference'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedSearchPreference'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedSearchPreference'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchPreference'
          description: ''
  /api/server-settings/current/:
    get:
      operationId: apiServerSettingsCurrentRetrieve
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerSettings'
          description: ''
  /api/share-link/{id}:
    get:
      operationId: apiShareLinkRetrieve
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShareLink'
          description: ''
  /api/shopping-list-entry/:
    get:
      operationId: apiShoppingListEntryList
      description: |-
        individual entries of a shopping list
        automatically filtered to only contain unchecked items that are not older than the shopping recent days setting to not bloat endpoint
      parameters:
      - in: query
        name: mealplan
        schema:
          type: integer
        description: Returns only entries associated with the given mealplan id
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: updated_after
        schema:
          type: string
          format: date-time
        description: Returns only elements updated after the given timestamp in ISO
          8601 format.
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedShoppingListEntryList'
          description: ''
    post:
      operationId: apiShoppingListEntryCreate
      description: |-
        individual entries of a shopping list
        automatically filtered to only contain unchecked items that are not older than the shopping recent days setting to not bloat endpoint
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingListEntry'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ShoppingListEntry'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ShoppingListEntry'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingListEntry'
          description: ''
  /api/shopping-list-entry/{id}/:
    get:
      operationId: apiShoppingListEntryRetrieve
      description: |-
        individual entries of a shopping list
        automatically filtered to only contain unchecked items that are not older than the shopping recent days setting to not bloat endpoint
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this shopping list entry.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingListEntry'
          description: ''
    put:
      operationId: apiShoppingListEntryUpdate
      description: |-
        individual entries of a shopping list
        automatically filtered to only contain unchecked items that are not older than the shopping recent days setting to not bloat endpoint
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this shopping list entry.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingListEntry'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ShoppingListEntry'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ShoppingListEntry'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingListEntry'
          description: ''
    patch:
      operationId: apiShoppingListEntryPartialUpdate
      description: |-
        individual entries of a shopping list
        automatically filtered to only contain unchecked items that are not older than the shopping recent days setting to not bloat endpoint
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this shopping list entry.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedShoppingListEntry'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedShoppingListEntry'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedShoppingListEntry'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingListEntry'
          description: ''
    delete:
      operationId: apiShoppingListEntryDestroy
      description: |-
        individual entries of a shopping list
        automatically filtered to only contain unchecked items that are not older than the shopping recent days setting to not bloat endpoint
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this shopping list entry.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/shopping-list-entry/bulk/:
    post:
      operationId: apiShoppingListEntryBulkCreate
      description: |-
        individual entries of a shopping list
        automatically filtered to only contain unchecked items that are not older than the shopping recent days setting to not bloat endpoint
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingListEntryBulk'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ShoppingListEntryBulk'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ShoppingListEntryBulk'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingListEntryBulk'
          description: ''
  /api/shopping-list-recipe/:
    get:
      operationId: apiShoppingListRecipeList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: mealplan
        schema:
          type: integer
        description: Returns only entries associated with the given mealplan id
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedShoppingListRecipeList'
          description: ''
    post:
      operationId: apiShoppingListRecipeCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingListRecipe'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ShoppingListRecipe'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ShoppingListRecipe'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingListRecipe'
          description: ''
  /api/shopping-list-recipe/{id}/:
    get:
      operationId: apiShoppingListRecipeRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this shopping list recipe.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingListRecipe'
          description: ''
    put:
      operationId: apiShoppingListRecipeUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this shopping list recipe.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingListRecipe'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ShoppingListRecipe'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ShoppingListRecipe'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingListRecipe'
          description: ''
    patch:
      operationId: apiShoppingListRecipePartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this shopping list recipe.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedShoppingListRecipe'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedShoppingListRecipe'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedShoppingListRecipe'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingListRecipe'
          description: ''
    delete:
      operationId: apiShoppingListRecipeDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this shopping list recipe.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/shopping-list-recipe/{id}/bulk_create_entries/:
    post:
      operationId: apiShoppingListRecipeBulkCreateEntriesCreate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this shopping list recipe.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingListEntryBulkCreate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ShoppingListEntryBulkCreate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ShoppingListEntryBulkCreate'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingListEntryBulkCreate'
          description: ''
  /api/space/:
    get:
      operationId: apiSpaceList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedSpaceList'
          description: ''
    post:
      operationId: apiSpaceCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Space'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Space'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Space'
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Space'
          description: ''
  /api/space/{id}/:
    get:
      operationId: apiSpaceRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this space.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Space'
          description: ''
    put:
      operationId: apiSpaceUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this space.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Space'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Space'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Space'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Space'
          description: ''
    patch:
      operationId: apiSpacePartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this space.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedSpace'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedSpace'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedSpace'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Space'
          description: ''
  /api/space/current/:
    get:
      operationId: apiSpaceCurrentRetrieve
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Space'
          description: ''
  /api/step/:
    get:
      operationId: apiStepList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: Query string matched (fuzzy) against object name.
      - in: query
        name: recipe
        schema:
          type: array
          items:
            type: integer
        description: ID of recipe a step is part of. For multiple repeat parameter.
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedStepList'
          description: ''
    post:
      operationId: apiStepCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Step'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Step'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Step'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Step'
          description: ''
  /api/step/{id}/:
    get:
      operationId: apiStepRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this step.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Step'
          description: ''
    put:
      operationId: apiStepUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this step.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Step'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Step'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Step'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Step'
          description: ''
    patch:
      operationId: apiStepPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this step.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedStep'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedStep'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedStep'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Step'
          description: ''
    delete:
      operationId: apiStepDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this step.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/storage/:
    get:
      operationId: apiStorageList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedStorageList'
          description: ''
    post:
      operationId: apiStorageCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Storage'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Storage'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Storage'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Storage'
          description: ''
  /api/storage/{id}/:
    get:
      operationId: apiStorageRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this storage.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Storage'
          description: ''
    put:
      operationId: apiStorageUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this storage.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Storage'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Storage'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Storage'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Storage'
          description: ''
    patch:
      operationId: apiStoragePartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this storage.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedStorage'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedStorage'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedStorage'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Storage'
          description: ''
    delete:
      operationId: apiStorageDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this storage.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/storage/{id}/cascading/:
    get:
      operationId: apiStorageCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this storage.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/storage/{id}/nulling/:
    get:
      operationId: apiStorageNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this storage.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/storage/{id}/protecting/:
    get:
      operationId: apiStorageProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this storage.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/supermarket/:
    get:
      operationId: apiSupermarketList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: limit
        schema:
          type: string
        description: limit number of entries to return
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: lookup if query string is contained within the name, case insensitive
      - in: query
        name: random
        schema:
          type: string
        description: randomly orders entries (only works together with limit)
      - in: query
        name: updated_at
        schema:
          type: string
        description: if model has an updated_at timestamp, filter only models updated
          at or after datetime
        examples:
          DateFormat:
            value: '1972-12-05'
            summary: Date Format
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedSupermarketList'
          description: ''
    post:
      operationId: apiSupermarketCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Supermarket'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Supermarket'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Supermarket'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Supermarket'
          description: ''
  /api/supermarket-category/:
    get:
      operationId: apiSupermarketCategoryList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: limit
        schema:
          type: string
        description: limit number of entries to return
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: lookup if query string is contained within the name, case insensitive
      - in: query
        name: random
        schema:
          type: string
        description: randomly orders entries (only works together with limit)
      - in: query
        name: updated_at
        schema:
          type: string
        description: if model has an updated_at timestamp, filter only models updated
          at or after datetime
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedSupermarketCategoryList'
          description: ''
    post:
      operationId: apiSupermarketCategoryCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SupermarketCategory'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SupermarketCategory'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SupermarketCategory'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupermarketCategory'
          description: ''
  /api/supermarket-category-relation/:
    get:
      operationId: apiSupermarketCategoryRelationList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: limit
        schema:
          type: string
        description: limit number of entries to return
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: lookup if query string is contained within the name, case insensitive
      - in: query
        name: random
        schema:
          type: string
        description: randomly orders entries (only works together with limit)
      - in: query
        name: updated_at
        schema:
          type: string
        description: if model has an updated_at timestamp, filter only models updated
          at or after datetime
        examples:
          DateFormat:
            value: '1972-12-05'
            summary: Date Format
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedSupermarketCategoryRelationList'
          description: ''
    post:
      operationId: apiSupermarketCategoryRelationCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SupermarketCategoryRelation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SupermarketCategoryRelation'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SupermarketCategoryRelation'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupermarketCategoryRelation'
          description: ''
  /api/supermarket-category-relation/{id}/:
    get:
      operationId: apiSupermarketCategoryRelationRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category
          relation.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupermarketCategoryRelation'
          description: ''
    put:
      operationId: apiSupermarketCategoryRelationUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category
          relation.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SupermarketCategoryRelation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SupermarketCategoryRelation'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SupermarketCategoryRelation'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupermarketCategoryRelation'
          description: ''
    patch:
      operationId: apiSupermarketCategoryRelationPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category
          relation.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedSupermarketCategoryRelation'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedSupermarketCategoryRelation'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedSupermarketCategoryRelation'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupermarketCategoryRelation'
          description: ''
    delete:
      operationId: apiSupermarketCategoryRelationDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category
          relation.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/supermarket-category/{id}/:
    get:
      operationId: apiSupermarketCategoryRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupermarketCategory'
          description: ''
    put:
      operationId: apiSupermarketCategoryUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SupermarketCategory'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SupermarketCategory'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SupermarketCategory'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupermarketCategory'
          description: ''
    patch:
      operationId: apiSupermarketCategoryPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedSupermarketCategory'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedSupermarketCategory'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedSupermarketCategory'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupermarketCategory'
          description: ''
    delete:
      operationId: apiSupermarketCategoryDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/supermarket-category/{id}/cascading/:
    get:
      operationId: apiSupermarketCategoryCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/supermarket-category/{id}/merge/{target}/:
    put:
      operationId: apiSupermarketCategoryMergeUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category.
        required: true
      - in: path
        name: target
        schema:
          type: integer
        description: The ID of the {obj} you want to merge with.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SupermarketCategory'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SupermarketCategory'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SupermarketCategory'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupermarketCategory'
          description: ''
  /api/supermarket-category/{id}/nulling/:
    get:
      operationId: apiSupermarketCategoryNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/supermarket-category/{id}/protecting/:
    get:
      operationId: apiSupermarketCategoryProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket category.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/supermarket/{id}/:
    get:
      operationId: apiSupermarketRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Supermarket'
          description: ''
    put:
      operationId: apiSupermarketUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Supermarket'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Supermarket'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Supermarket'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Supermarket'
          description: ''
    patch:
      operationId: apiSupermarketPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedSupermarket'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedSupermarket'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedSupermarket'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Supermarket'
          description: ''
    delete:
      operationId: apiSupermarketDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/supermarket/{id}/cascading/:
    get:
      operationId: apiSupermarketCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/supermarket/{id}/nulling/:
    get:
      operationId: apiSupermarketNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/supermarket/{id}/protecting/:
    get:
      operationId: apiSupermarketProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this supermarket.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/switch-active-space/{spaceId}/:
    get:
      operationId: apiSwitchActiveSpaceRetrieve
      description: api endpoint to switch space function
      parameters:
      - in: path
        name: spaceId
        schema:
          type: integer
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          description: No response body
  /api/sync/:
    get:
      operationId: apiSyncList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedSyncList'
          description: ''
    post:
      operationId: apiSyncCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Sync'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Sync'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Sync'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sync'
          description: ''
  /api/sync-log/:
    get:
      operationId: apiSyncLogList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedSyncLogList'
          description: ''
  /api/sync-log/{id}/:
    get:
      operationId: apiSyncLogRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this sync log.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncLog'
          description: ''
  /api/sync/{id}/:
    get:
      operationId: apiSyncRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this sync.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sync'
          description: ''
    put:
      operationId: apiSyncUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this sync.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Sync'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Sync'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Sync'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sync'
          description: ''
    patch:
      operationId: apiSyncPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this sync.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedSync'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedSync'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedSync'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sync'
          description: ''
    delete:
      operationId: apiSyncDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this sync.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/sync/{id}/cascading/:
    get:
      operationId: apiSyncCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this sync.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/sync/{id}/nulling/:
    get:
      operationId: apiSyncNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this sync.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/sync/{id}/protecting/:
    get:
      operationId: apiSyncProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this sync.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/sync/{id}/query_synced_folder/:
    post:
      operationId: apiSyncQuerySyncedFolderCreate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this sync.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Sync'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Sync'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Sync'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncLog'
          description: ''
  /api/unit/:
    get:
      operationId: apiUnitList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: limit
        schema:
          type: string
        description: limit number of entries to return
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: lookup if query string is contained within the name, case insensitive
      - in: query
        name: random
        schema:
          type: string
        description: randomly orders entries (only works together with limit)
      - in: query
        name: updated_at
        schema:
          type: string
        description: if model has an updated_at timestamp, filter only models updated
          at or after datetime
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUnitList'
          description: ''
    post:
      operationId: apiUnitCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Unit'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Unit'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Unit'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unit'
          description: ''
  /api/unit-conversion/:
    get:
      operationId: apiUnitConversionList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: food_id
        schema:
          type: integer
        description: ID of food to filter for
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: query that looks into food, base unit or converted unit by name
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUnitConversionList'
          description: ''
    post:
      operationId: apiUnitConversionCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnitConversion'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UnitConversion'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UnitConversion'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnitConversion'
          description: ''
  /api/unit-conversion/{id}/:
    get:
      operationId: apiUnitConversionRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit conversion.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnitConversion'
          description: ''
    put:
      operationId: apiUnitConversionUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit conversion.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnitConversion'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UnitConversion'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UnitConversion'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnitConversion'
          description: ''
    patch:
      operationId: apiUnitConversionPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit conversion.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUnitConversion'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUnitConversion'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUnitConversion'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnitConversion'
          description: ''
    delete:
      operationId: apiUnitConversionDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit conversion.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/unit/{id}/:
    get:
      operationId: apiUnitRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unit'
          description: ''
    put:
      operationId: apiUnitUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Unit'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Unit'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Unit'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unit'
          description: ''
    patch:
      operationId: apiUnitPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUnit'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUnit'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUnit'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unit'
          description: ''
    delete:
      operationId: apiUnitDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/unit/{id}/cascading/:
    get:
      operationId: apiUnitCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/unit/{id}/merge/{target}/:
    put:
      operationId: apiUnitMergeUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit.
        required: true
      - in: path
        name: target
        schema:
          type: integer
        description: The ID of the {obj} you want to merge with.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Unit'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Unit'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Unit'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unit'
          description: ''
  /api/unit/{id}/nulling/:
    get:
      operationId: apiUnitNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/unit/{id}/protecting/:
    get:
      operationId: apiUnitProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this unit.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/user/:
    get:
      operationId: apiUserList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: filter_list
        schema:
          type: array
          items:
            type: string
        description: User IDs, repeat for multiple
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
          description: ''
  /api/user-file/:
    get:
      operationId: apiUserFileList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: limit
        schema:
          type: string
        description: limit number of entries to return
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - in: query
        name: query
        schema:
          type: string
        description: lookup if query string is contained within the name, case insensitive
      - in: query
        name: random
        schema:
          type: string
        description: randomly orders entries (only works together with limit)
      - in: query
        name: updated_at
        schema:
          type: string
        description: if model has an updated_at timestamp, filter only models updated
          at or after datetime
        examples:
          DateFormat:
            value: '1972-12-05'
            summary: Date Format
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUserFileList'
          description: ''
    post:
      operationId: apiUserFileCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UserFile'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserFile'
          description: ''
  /api/user-file/{id}/:
    get:
      operationId: apiUserFileRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user file.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserFile'
          description: ''
    put:
      operationId: apiUserFileUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user file.
        required: true
      tags:
      - api
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UserFile'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserFile'
          description: ''
    patch:
      operationId: apiUserFilePartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user file.
        required: true
      tags:
      - api
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUserFile'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserFile'
          description: ''
    delete:
      operationId: apiUserFileDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user file.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/user-file/{id}/cascading/:
    get:
      operationId: apiUserFileCascadingList
      description: get a paginated list of objects that will be cascaded (deleted)
        when deleting the selected object
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user file.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/user-file/{id}/nulling/:
    get:
      operationId: apiUserFileNullingList
      description: get a paginated list of objects where the selected object will
        be removed whe its deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user file.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/user-file/{id}/protecting/:
    get:
      operationId: apiUserFileProtectingList
      description: get a paginated list of objects that are protecting the selected
        object form being deleted
      parameters:
      - in: query
        name: cache
        schema:
          type: boolean
          default: true
        description: If results can be cached or not
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user file.
        required: true
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericModelReferenceList'
          description: ''
  /api/user-preference/:
    get:
      operationId: apiUserPreferenceList
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserPreference'
          description: ''
  /api/user-preference/{user}/:
    get:
      operationId: apiUserPreferenceRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: user
        schema:
          type: integer
        description: A unique value identifying this user preference.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreference'
          description: ''
    patch:
      operationId: apiUserPreferencePartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: user
        schema:
          type: integer
        description: A unique value identifying this user preference.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUserPreference'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUserPreference'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUserPreference'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreference'
          description: ''
  /api/user-space/:
    get:
      operationId: apiUserSpaceList
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: query
        name: internal_note
        schema:
          type: string
        description: text field to store information about the invite link
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUserSpaceList'
          description: ''
  /api/user-space/{id}/:
    get:
      operationId: apiUserSpaceRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user space.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSpace'
          description: ''
    put:
      operationId: apiUserSpaceUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user space.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserSpace'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UserSpace'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UserSpace'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSpace'
          description: ''
    patch:
      operationId: apiUserSpacePartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user space.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUserSpace'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUserSpace'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUserSpace'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSpace'
          description: ''
    delete:
      operationId: apiUserSpaceDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user space.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
  /api/user-space/all_personal/:
    get:
      operationId: apiUserSpaceAllPersonalList
      description: |-
        return all userspaces for the user requesting the endpoint
        :param request:
        :return:
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUserSpaceList'
          description: ''
  /api/user/{id}/:
    get:
      operationId: apiUserRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this utente.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: ''
    patch:
      operationId: apiUserPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this utente.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUser'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: ''
  /api/view-log/:
    get:
      operationId: apiViewLogList
      description: logs request counts to redis cache total/per user/
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedViewLogList'
          description: ''
    post:
      operationId: apiViewLogCreate
      description: logs request counts to redis cache total/per user/
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ViewLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ViewLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ViewLog'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewLog'
          description: ''
  /api/view-log/{id}/:
    get:
      operationId: apiViewLogRetrieve
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this view log.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewLog'
          description: ''
    put:
      operationId: apiViewLogUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this view log.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ViewLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ViewLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ViewLog'
        required: true
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewLog'
          description: ''
    patch:
      operationId: apiViewLogPartialUpdate
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this view log.
        required: true
      tags:
      - api
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedViewLog'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedViewLog'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedViewLog'
      security:
      - ApiKeyAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ViewLog'
          description: ''
    delete:
      operationId: apiViewLogDestroy
      description: logs request counts to redis cache total/per user/
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this view log.
        required: true
      tags:
      - api
      security:
      - ApiKeyAuth: []
      responses:
        '204':
          description: No response body
components:
  schemas:
    AccessToken:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        token:
          type: string
          readOnly: true
        expires:
          type: string
          format: date-time
        scope:
          type: string
        created:
          type: string
          format: date-time
          readOnly: true
        updated:
          type: string
          format: date-time
          readOnly: true
      required:
      - created
      - expires
      - token
      - updated
    AiImport:
      type: object
      properties:
        ai_provider_id:
          type: integer
        file:
          type: string
          format: uri
          nullable: true
        text:
          type: string
          nullable: true
        recipe_id:
          type: string
          nullable: true
      required:
      - ai_provider_id
      - file
      - recipe_id
      - text
    AiLog:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        ai_provider:
          allOf:
          - $ref: '#/components/schemas/AiProvider'
          readOnly: true
        function:
          type: string
          maxLength: 64
        credit_cost:
          type: number
          format: double
          maximum: 1000000000000
          minimum: -1000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
        credits_from_balance:
          type: boolean
        input_tokens:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        output_tokens:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        start_time:
          type: string
          format: date-time
          nullable: true
        end_time:
          type: string
          format: date-time
          nullable: true
        created_by:
          type: integer
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - ai_provider
      - created_at
      - credit_cost
      - function
      - updated_at
    AiProvider:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        description:
          type: string
        api_key:
          type: string
          writeOnly: true
        model_name:
          type: string
          maxLength: 256
        url:
          type: string
          nullable: true
          maxLength: 2048
        log_credit_cost:
          type: boolean
        space:
          type: integer
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - model_name
      - name
      - updated_at
    AuthToken:
      type: object
      properties:
        username:
          type: string
          writeOnly: true
        password:
          type: string
          writeOnly: true
        token:
          type: string
          readOnly: true
      required:
      - password
      - token
      - username
    AutoMealPlan:
      type: object
      properties:
        start_date:
          type: string
          format: date-time
        end_date:
          type: string
          format: date-time
        meal_type_id:
          type: integer
        keyword_ids:
          type: array
          items: {}
        servings:
          type: number
          format: double
        shared:
          type: array
          items:
            $ref: '#/components/schemas/User'
          nullable: true
        addshopping:
          type: boolean
      required:
      - addshopping
      - end_date
      - keyword_ids
      - meal_type_id
      - servings
      - start_date
    Automation:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        type:
          $ref: '#/components/schemas/AutomationTypeEnum'
        name:
          type: string
          maxLength: 128
        description:
          type: string
          nullable: true
        param_1:
          type: string
          nullable: true
          maxLength: 128
        param_2:
          type: string
          nullable: true
          maxLength: 128
        param_3:
          type: string
          nullable: true
          maxLength: 128
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        disabled:
          type: boolean
        created_by:
          type: integer
          readOnly: true
      required:
      - created_by
      - type
    AutomationTypeEnum:
      enum:
      - FOOD_ALIAS
      - UNIT_ALIAS
      - KEYWORD_ALIAS
      - DESCRIPTION_REPLACE
      - INSTRUCTION_REPLACE
      - NEVER_UNIT
      - TRANSPOSE_WORDS
      - FOOD_REPLACE
      - UNIT_REPLACE
      - NAME_REPLACE
      type: string
      description: |-
        * `FOOD_ALIAS` - Food Alias
        * `UNIT_ALIAS` - Unit Alias
        * `KEYWORD_ALIAS` - Keyword Alias
        * `DESCRIPTION_REPLACE` - Description Replace
        * `INSTRUCTION_REPLACE` - Instruction Replace
        * `NEVER_UNIT` - Never Unit
        * `TRANSPOSE_WORDS` - Transpose Words
        * `FOOD_REPLACE` - Food Replace
        * `UNIT_REPLACE` - Unit Replace
        * `NAME_REPLACE` - Name Replace
    BookmarkletImport:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        url:
          type: string
          nullable: true
          maxLength: 256
        html:
          type: string
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - created_by
      - html
    BookmarkletImportList:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        url:
          type: string
          nullable: true
          maxLength: 256
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - created_by
    ConnectorConfig:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
          minLength: 1
        type:
          $ref: '#/components/schemas/ConnectorConfigTypeEnum'
        url:
          type: string
          format: uri
          nullable: true
          maxLength: 200
        token:
          type: string
          writeOnly: true
          nullable: true
          maxLength: 512
        todo_entity:
          type: string
          nullable: true
          maxLength: 128
        enabled:
          type: boolean
          description: Is Connector Enabled
        on_shopping_list_entry_created_enabled:
          type: boolean
        on_shopping_list_entry_updated_enabled:
          type: boolean
        on_shopping_list_entry_deleted_enabled:
          type: boolean
        supports_description_field:
          type: boolean
          description: Does the todo entity support the description field
        created_by:
          type: integer
          readOnly: true
      required:
      - created_by
      - name
    ConnectorConfigTypeEnum:
      enum:
      - HomeAssistant
      type: string
      description: '* `HomeAssistant` - HomeAssistant'
    CookLog:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        recipe:
          type: integer
        servings:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          nullable: true
        rating:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          nullable: true
        comment:
          type: string
          nullable: true
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_by
      - recipe
      - updated_at
    CustomFilter:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        search:
          type: string
        shared:
          type: array
          items:
            $ref: '#/components/schemas/User'
        created_by:
          type: integer
          readOnly: true
      required:
      - created_by
      - name
      - search
    DefaultPageEnum:
      enum:
      - SEARCH
      - PLAN
      - BOOKS
      - SHOPPING
      type: string
      description: |-
        * `SEARCH` - Search
        * `PLAN` - Meal-Plan
        * `BOOKS` - Books
        * `SHOPPING` - Shopping
    DeleteEnum:
      enum:
      - 'true'
      type: string
      description: '* `true` - true'
    ExportLog:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        type:
          type: string
          maxLength: 32
        msg:
          type: string
        running:
          type: boolean
        total_recipes:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        exported_recipes:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        cache_duration:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        possibly_not_expired:
          type: boolean
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - created_by
      - type
    ExportRequest:
      type: object
      properties:
        type:
          type: string
        all:
          type: boolean
          default: false
        recipes:
          type: array
          items:
            $ref: '#/components/schemas/RecipeSimple'
          default: []
        custom_filter:
          allOf:
          - $ref: '#/components/schemas/CustomFilter'
          nullable: true
      required:
      - type
    FdcQuery:
      type: object
      properties:
        totalHits:
          type: integer
        currentPage:
          type: integer
        totalPages:
          type: integer
        foods:
          type: array
          items:
            $ref: '#/components/schemas/FdcQueryFoods'
      required:
      - currentPage
      - foods
      - totalHits
      - totalPages
    FdcQueryFoods:
      type: object
      properties:
        fdcId:
          type: integer
        description:
          type: string
        dataType:
          type: string
      required:
      - dataType
      - description
      - fdcId
    Food:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
          minLength: 1
        plural_name:
          type: string
          nullable: true
          maxLength: 128
        description:
          type: string
        shopping:
          type: string
          readOnly: true
        recipe:
          allOf:
          - $ref: '#/components/schemas/RecipeSimple'
          nullable: true
        url:
          type: string
          nullable: true
          maxLength: 1024
        properties:
          type: array
          items:
            $ref: '#/components/schemas/Property'
          nullable: true
        properties_food_amount:
          type: number
          format: double
        properties_food_unit:
          allOf:
          - $ref: '#/components/schemas/Unit'
          nullable: true
        fdc_id:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          nullable: true
        food_onhand:
          type: boolean
          nullable: true
        supermarket_category:
          allOf:
          - $ref: '#/components/schemas/SupermarketCategory'
          nullable: true
        parent:
          type: integer
          readOnly: true
        numchild:
          type: integer
          readOnly: true
        inherit_fields:
          type: array
          items:
            $ref: '#/components/schemas/FoodInheritField'
          nullable: true
        full_name:
          type: string
          description: |-
            Returns a string representation of a tree node and it's ancestors,
            e.g. 'Cuisine > Asian > Chinese > Catonese'.
          readOnly: true
        ignore_shopping:
          type: boolean
        substitute:
          type: array
          items:
            $ref: '#/components/schemas/FoodSimple'
          nullable: true
        substitute_siblings:
          type: boolean
        substitute_children:
          type: boolean
        substitute_onhand:
          type: boolean
          readOnly: true
        child_inherit_fields:
          type: array
          items:
            $ref: '#/components/schemas/FoodInheritField'
          nullable: true
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
      required:
      - full_name
      - name
      - numchild
      - parent
      - shopping
      - substitute_onhand
    FoodBatchUpdate:
      type: object
      properties:
        foods:
          type: array
          items:
            type: integer
        category:
          type: integer
          nullable: true
        substitute_add:
          type: array
          items:
            type: integer
        substitute_remove:
          type: array
          items:
            type: integer
        substitute_set:
          type: array
          items:
            type: integer
        substitute_remove_all:
          type: boolean
          default: false
        inherit_fields_add:
          type: array
          items:
            type: integer
        inherit_fields_remove:
          type: array
          items:
            type: integer
        inherit_fields_set:
          type: array
          items:
            type: integer
        inherit_fields_remove_all:
          type: boolean
          default: false
        child_inherit_fields_add:
          type: array
          items:
            type: integer
        child_inherit_fields_remove:
          type: array
          items:
            type: integer
        child_inherit_fields_set:
          type: array
          items:
            type: integer
        child_inherit_fields_remove_all:
          type: boolean
          default: false
        substitute_children:
          type: boolean
          nullable: true
        substitute_siblings:
          type: boolean
          nullable: true
        ignore_shopping:
          type: boolean
          nullable: true
        on_hand:
          type: boolean
          nullable: true
        parent_remove:
          type: boolean
          nullable: true
        parent_set:
          type: integer
          nullable: true
      required:
      - child_inherit_fields_add
      - child_inherit_fields_remove
      - child_inherit_fields_set
      - foods
      - inherit_fields_add
      - inherit_fields_remove
      - inherit_fields_set
      - substitute_add
      - substitute_remove
      - substitute_set
    FoodInheritField:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          nullable: true
        field:
          type: string
          nullable: true
      required: []
    FoodShoppingUpdate:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        amount:
          type: integer
          writeOnly: true
          nullable: true
          description: Amount of food to add to the shopping list
        unit:
          type: integer
          writeOnly: true
          nullable: true
          description: ID of unit to use for the shopping list
        delete:
          allOf:
          - $ref: '#/components/schemas/DeleteEnum'
          writeOnly: true
          nullable: true
          description: |-
            When set to true will delete all food from active shopping lists.

            * `true` - true
      required:
      - delete
    FoodSimple:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
          minLength: 1
        plural_name:
          type: string
          nullable: true
          maxLength: 128
      required:
      - name
    GenericModelReference:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        model:
          type: string
        name:
          type: string
      required:
      - model
      - name
    Group:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          readOnly: true
          title: Nome
      required:
      - name
    ImportLog:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        type:
          type: string
          maxLength: 32
        msg:
          type: string
        running:
          type: boolean
        keyword:
          allOf:
          - $ref: '#/components/schemas/Keyword'
          readOnly: true
        total_recipes:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        imported_recipes:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - created_by
      - keyword
      - type
    ImportOpenData:
      type: object
      properties:
        selected_version:
          type: string
        selected_datatypes:
          type: array
          items:
            type: string
        update_existing:
          type: boolean
          default: true
        use_metric:
          type: boolean
          default: true
      required:
      - selected_datatypes
      - selected_version
    ImportOpenDataMetaData:
      type: object
      properties:
        versions:
          type: array
          items:
            type: string
        datatypes:
          type: array
          items:
            type: string
        base:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        cs:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        da:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        de:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        el:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        en:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        es:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        fr:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        hu:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        it:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        nb_NO:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        nl:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        pl:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        pt:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        pt_BR:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        sk:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        sl:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
        zh_Hans:
          $ref: '#/components/schemas/ImportOpenDataVersionMetaData'
      required:
      - base
      - cs
      - da
      - datatypes
      - de
      - el
      - en
      - es
      - fr
      - hu
      - it
      - nb_NO
      - nl
      - pl
      - pt
      - pt_BR
      - sk
      - sl
      - versions
      - zh_Hans
    ImportOpenDataResponse:
      type: object
      properties:
        food:
          $ref: '#/components/schemas/ImportOpenDataResponseDetail'
        unit:
          $ref: '#/components/schemas/ImportOpenDataResponseDetail'
        category:
          $ref: '#/components/schemas/ImportOpenDataResponseDetail'
        property:
          $ref: '#/components/schemas/ImportOpenDataResponseDetail'
        store:
          $ref: '#/components/schemas/ImportOpenDataResponseDetail'
        conversion:
          $ref: '#/components/schemas/ImportOpenDataResponseDetail'
    ImportOpenDataResponseDetail:
      type: object
      properties:
        total_created:
          type: integer
          default: 0
        total_updated:
          type: integer
          default: 0
        total_untouched:
          type: integer
          default: 0
        total_errored:
          type: integer
          default: 0
    ImportOpenDataVersionMetaData:
      type: object
      properties:
        food:
          type: integer
        unit:
          type: integer
        category:
          type: integer
        property:
          type: integer
        store:
          type: integer
        conversion:
          type: integer
      required:
      - category
      - conversion
      - food
      - property
      - store
      - unit
    Ingredient:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        food:
          allOf:
          - $ref: '#/components/schemas/Food'
          nullable: true
        unit:
          allOf:
          - $ref: '#/components/schemas/Unit'
          nullable: true
        amount:
          type: number
          format: double
        conversions:
          type: array
          items: {}
          readOnly: true
        note:
          type: string
          nullable: true
          maxLength: 256
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        is_header:
          type: boolean
        no_amount:
          type: boolean
        original_text:
          type: string
          nullable: true
          maxLength: 512
        used_in_recipes:
          type: array
          items: {}
          readOnly: true
        always_use_plural_unit:
          type: boolean
        always_use_plural_food:
          type: boolean
      required:
      - amount
      - conversions
      - food
      - unit
      - used_in_recipes
    IngredientString:
      type: object
      properties:
        text:
          type: string
      required:
      - text
    InviteLink:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        uuid:
          type: string
          format: uuid
          readOnly: true
        email:
          type: string
          format: email
          maxLength: 254
        group:
          $ref: '#/components/schemas/Group'
        valid_until:
          type: string
          format: date
        used_by:
          type: integer
          readOnly: true
          nullable: true
        reusable:
          type: boolean
        internal_note:
          type: string
          nullable: true
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - created_by
      - group
      - used_by
      - uuid
    Keyword:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 64
        label:
          type: string
          readOnly: true
        description:
          type: string
        parent:
          type: integer
          readOnly: true
        numchild:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        full_name:
          type: string
          description: |-
            Returns a string representation of a tree node and it's ancestors,
            e.g. 'Cuisine > Asian > Chinese > Catonese'.
          readOnly: true
      required:
      - created_at
      - full_name
      - label
      - name
      - numchild
      - parent
      - updated_at
    KeywordLabel:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        label:
          type: string
          readOnly: true
      required:
      - label
    Localization:
      type: object
      properties:
        code:
          type: string
          readOnly: true
          maxLength: 8
        language:
          type: string
          readOnly: true
      required:
      - code
      - language
    MealPlan:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        title:
          type: string
          maxLength: 64
        recipe:
          allOf:
          - $ref: '#/components/schemas/RecipeOverview'
          nullable: true
        servings:
          type: number
          format: double
        note:
          type: string
        note_markdown:
          type: string
          readOnly: true
        from_date:
          type: string
          format: date-time
        to_date:
          type: string
          format: date-time
        meal_type:
          $ref: '#/components/schemas/MealType'
        created_by:
          type: integer
          readOnly: true
        shared:
          type: array
          items:
            $ref: '#/components/schemas/User'
          nullable: true
        recipe_name:
          type: string
          readOnly: true
        meal_type_name:
          type: string
          readOnly: true
        shopping:
          type: boolean
          readOnly: true
        addshopping:
          type: boolean
          writeOnly: true
      required:
      - created_by
      - from_date
      - meal_type
      - meal_type_name
      - note_markdown
      - recipe_name
      - servings
      - shopping
    MealType:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        time:
          type: string
          format: time
          nullable: true
        color:
          type: string
          nullable: true
          maxLength: 7
        default:
          type: boolean
        created_by:
          type: integer
          readOnly: true
      required:
      - created_by
      - name
    MethodEnum:
      enum:
      - DB
      - NEXTCLOUD
      - LOCAL
      type: string
      description: |-
        * `DB` - Dropbox
        * `NEXTCLOUD` - Nextcloud
        * `LOCAL` - Local
    NutritionInformation:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        carbohydrates:
          type: number
          format: double
        fats:
          type: number
          format: double
        proteins:
          type: number
          format: double
        calories:
          type: number
          format: double
        source:
          type: string
          nullable: true
          maxLength: 512
      required:
      - calories
      - carbohydrates
      - fats
      - proteins
    PaginatedAiLogList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/AiLog'
        timestamp:
          type: string
          format: date-time
    PaginatedAiProviderList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/AiProvider'
        timestamp:
          type: string
          format: date-time
    PaginatedAutomationList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Automation'
        timestamp:
          type: string
          format: date-time
    PaginatedBookmarkletImportListList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/BookmarkletImportList'
        timestamp:
          type: string
          format: date-time
    PaginatedConnectorConfigList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/ConnectorConfig'
        timestamp:
          type: string
          format: date-time
    PaginatedCookLogList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/CookLog'
        timestamp:
          type: string
          format: date-time
    PaginatedCustomFilterList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/CustomFilter'
        timestamp:
          type: string
          format: date-time
    PaginatedExportLogList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/ExportLog'
        timestamp:
          type: string
          format: date-time
    PaginatedFoodList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Food'
        timestamp:
          type: string
          format: date-time
    PaginatedGenericModelReferenceList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/GenericModelReference'
        timestamp:
          type: string
          format: date-time
    PaginatedImportLogList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/ImportLog'
        timestamp:
          type: string
          format: date-time
    PaginatedIngredientList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Ingredient'
        timestamp:
          type: string
          format: date-time
    PaginatedInviteLinkList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/InviteLink'
        timestamp:
          type: string
          format: date-time
    PaginatedKeywordList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Keyword'
        timestamp:
          type: string
          format: date-time
    PaginatedMealPlanList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/MealPlan'
        timestamp:
          type: string
          format: date-time
    PaginatedMealTypeList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/MealType'
        timestamp:
          type: string
          format: date-time
    PaginatedPropertyList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Property'
        timestamp:
          type: string
          format: date-time
    PaginatedPropertyTypeList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/PropertyType'
        timestamp:
          type: string
          format: date-time
    PaginatedRecipeBookEntryList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/RecipeBookEntry'
        timestamp:
          type: string
          format: date-time
    PaginatedRecipeBookList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/RecipeBook'
        timestamp:
          type: string
          format: date-time
    PaginatedRecipeImportList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/RecipeImport'
        timestamp:
          type: string
          format: date-time
    PaginatedRecipeOverviewList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/RecipeOverview'
    PaginatedShoppingListEntryList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/ShoppingListEntry'
        timestamp:
          type: string
          format: date-time
    PaginatedShoppingListRecipeList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/ShoppingListRecipe'
        timestamp:
          type: string
          format: date-time
    PaginatedSpaceList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Space'
        timestamp:
          type: string
          format: date-time
    PaginatedStepList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Step'
        timestamp:
          type: string
          format: date-time
    PaginatedStorageList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Storage'
        timestamp:
          type: string
          format: date-time
    PaginatedSupermarketCategoryList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/SupermarketCategory'
        timestamp:
          type: string
          format: date-time
    PaginatedSupermarketCategoryRelationList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/SupermarketCategoryRelation'
        timestamp:
          type: string
          format: date-time
    PaginatedSupermarketList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Supermarket'
        timestamp:
          type: string
          format: date-time
    PaginatedSyncList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Sync'
        timestamp:
          type: string
          format: date-time
    PaginatedSyncLogList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/SyncLog'
        timestamp:
          type: string
          format: date-time
    PaginatedUnitConversionList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/UnitConversion'
        timestamp:
          type: string
          format: date-time
    PaginatedUnitList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Unit'
        timestamp:
          type: string
          format: date-time
    PaginatedUserFileList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/UserFile'
        timestamp:
          type: string
          format: date-time
    PaginatedUserSpaceList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/UserSpace'
        timestamp:
          type: string
          format: date-time
    PaginatedViewLogList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/ViewLog'
        timestamp:
          type: string
          format: date-time
    ParsedIngredient:
      type: object
      properties:
        amount:
          type: integer
        unit:
          type: string
        food:
          type: string
        note:
          type: string
        original_text:
          type: string
      required:
      - amount
      - food
      - note
      - original_text
      - unit
    PatchedAccessToken:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        token:
          type: string
          readOnly: true
        expires:
          type: string
          format: date-time
        scope:
          type: string
        created:
          type: string
          format: date-time
          readOnly: true
        updated:
          type: string
          format: date-time
          readOnly: true
    PatchedAiProvider:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        description:
          type: string
        api_key:
          type: string
          writeOnly: true
        model_name:
          type: string
          maxLength: 256
        url:
          type: string
          nullable: true
          maxLength: 2048
        log_credit_cost:
          type: boolean
        space:
          type: integer
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
    PatchedAutomation:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        type:
          $ref: '#/components/schemas/AutomationTypeEnum'
        name:
          type: string
          maxLength: 128
        description:
          type: string
          nullable: true
        param_1:
          type: string
          nullable: true
          maxLength: 128
        param_2:
          type: string
          nullable: true
          maxLength: 128
        param_3:
          type: string
          nullable: true
          maxLength: 128
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        disabled:
          type: boolean
        created_by:
          type: integer
          readOnly: true
    PatchedBookmarkletImport:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        url:
          type: string
          nullable: true
          maxLength: 256
        html:
          type: string
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
    PatchedConnectorConfig:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
          minLength: 1
        type:
          $ref: '#/components/schemas/ConnectorConfigTypeEnum'
        url:
          type: string
          format: uri
          nullable: true
          maxLength: 200
        token:
          type: string
          writeOnly: true
          nullable: true
          maxLength: 512
        todo_entity:
          type: string
          nullable: true
          maxLength: 128
        enabled:
          type: boolean
          description: Is Connector Enabled
        on_shopping_list_entry_created_enabled:
          type: boolean
        on_shopping_list_entry_updated_enabled:
          type: boolean
        on_shopping_list_entry_deleted_enabled:
          type: boolean
        supports_description_field:
          type: boolean
          description: Does the todo entity support the description field
        created_by:
          type: integer
          readOnly: true
    PatchedCookLog:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        recipe:
          type: integer
        servings:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          nullable: true
        rating:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          nullable: true
        comment:
          type: string
          nullable: true
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
          readOnly: true
    PatchedCustomFilter:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        search:
          type: string
        shared:
          type: array
          items:
            $ref: '#/components/schemas/User'
        created_by:
          type: integer
          readOnly: true
    PatchedExportLog:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        type:
          type: string
          maxLength: 32
        msg:
          type: string
        running:
          type: boolean
        total_recipes:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        exported_recipes:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        cache_duration:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        possibly_not_expired:
          type: boolean
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
    PatchedFood:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
          minLength: 1
        plural_name:
          type: string
          nullable: true
          maxLength: 128
        description:
          type: string
        shopping:
          type: string
          readOnly: true
        recipe:
          allOf:
          - $ref: '#/components/schemas/RecipeSimple'
          nullable: true
        url:
          type: string
          nullable: true
          maxLength: 1024
        properties:
          type: array
          items:
            $ref: '#/components/schemas/Property'
          nullable: true
        properties_food_amount:
          type: number
          format: double
        properties_food_unit:
          allOf:
          - $ref: '#/components/schemas/Unit'
          nullable: true
        fdc_id:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          nullable: true
        food_onhand:
          type: boolean
          nullable: true
        supermarket_category:
          allOf:
          - $ref: '#/components/schemas/SupermarketCategory'
          nullable: true
        parent:
          type: integer
          readOnly: true
        numchild:
          type: integer
          readOnly: true
        inherit_fields:
          type: array
          items:
            $ref: '#/components/schemas/FoodInheritField'
          nullable: true
        full_name:
          type: string
          description: |-
            Returns a string representation of a tree node and it's ancestors,
            e.g. 'Cuisine > Asian > Chinese > Catonese'.
          readOnly: true
        ignore_shopping:
          type: boolean
        substitute:
          type: array
          items:
            $ref: '#/components/schemas/FoodSimple'
          nullable: true
        substitute_siblings:
          type: boolean
        substitute_children:
          type: boolean
        substitute_onhand:
          type: boolean
          readOnly: true
        child_inherit_fields:
          type: array
          items:
            $ref: '#/components/schemas/FoodInheritField'
          nullable: true
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
    PatchedImportLog:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        type:
          type: string
          maxLength: 32
        msg:
          type: string
        running:
          type: boolean
        keyword:
          allOf:
          - $ref: '#/components/schemas/Keyword'
          readOnly: true
        total_recipes:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        imported_recipes:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
    PatchedIngredient:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        food:
          allOf:
          - $ref: '#/components/schemas/Food'
          nullable: true
        unit:
          allOf:
          - $ref: '#/components/schemas/Unit'
          nullable: true
        amount:
          type: number
          format: double
        conversions:
          type: array
          items: {}
          readOnly: true
        note:
          type: string
          nullable: true
          maxLength: 256
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        is_header:
          type: boolean
        no_amount:
          type: boolean
        original_text:
          type: string
          nullable: true
          maxLength: 512
        used_in_recipes:
          type: array
          items: {}
          readOnly: true
        always_use_plural_unit:
          type: boolean
        always_use_plural_food:
          type: boolean
    PatchedInviteLink:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        uuid:
          type: string
          format: uuid
          readOnly: true
        email:
          type: string
          format: email
          maxLength: 254
        group:
          $ref: '#/components/schemas/Group'
        valid_until:
          type: string
          format: date
        used_by:
          type: integer
          readOnly: true
          nullable: true
        reusable:
          type: boolean
        internal_note:
          type: string
          nullable: true
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
    PatchedKeyword:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 64
        label:
          type: string
          readOnly: true
        description:
          type: string
        parent:
          type: integer
          readOnly: true
        numchild:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        full_name:
          type: string
          description: |-
            Returns a string representation of a tree node and it's ancestors,
            e.g. 'Cuisine > Asian > Chinese > Catonese'.
          readOnly: true
    PatchedMealPlan:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        title:
          type: string
          maxLength: 64
        recipe:
          allOf:
          - $ref: '#/components/schemas/RecipeOverview'
          nullable: true
        servings:
          type: number
          format: double
        note:
          type: string
        note_markdown:
          type: string
          readOnly: true
        from_date:
          type: string
          format: date-time
        to_date:
          type: string
          format: date-time
        meal_type:
          $ref: '#/components/schemas/MealType'
        created_by:
          type: integer
          readOnly: true
        shared:
          type: array
          items:
            $ref: '#/components/schemas/User'
          nullable: true
        recipe_name:
          type: string
          readOnly: true
        meal_type_name:
          type: string
          readOnly: true
        shopping:
          type: boolean
          readOnly: true
        addshopping:
          type: boolean
          writeOnly: true
    PatchedMealType:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        time:
          type: string
          format: time
          nullable: true
        color:
          type: string
          nullable: true
          maxLength: 7
        default:
          type: boolean
        created_by:
          type: integer
          readOnly: true
    PatchedProperty:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        property_amount:
          type: number
          format: double
          nullable: true
        property_type:
          $ref: '#/components/schemas/PropertyType'
    PatchedPropertyType:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        unit:
          type: string
          nullable: true
          maxLength: 64
        description:
          type: string
          nullable: true
          maxLength: 512
        order:
          type: integer
          default: 0
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
        fdc_id:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          nullable: true
    PatchedRecipe:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        description:
          type: string
          nullable: true
          maxLength: 512
        image:
          type: string
          format: uri
          readOnly: true
          nullable: true
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/Keyword'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/Step'
        working_time:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        waiting_time:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        source_url:
          type: string
          nullable: true
          maxLength: 1024
        internal:
          type: boolean
        show_ingredient_overview:
          type: boolean
        nutrition:
          allOf:
          - $ref: '#/components/schemas/NutritionInformation'
          nullable: true
        properties:
          type: array
          items:
            $ref: '#/components/schemas/Property'
        food_properties:
          readOnly: true
        servings:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        file_path:
          type: string
          maxLength: 512
        servings_text:
          type: string
          maxLength: 32
        rating:
          type: number
          format: double
          readOnly: true
          nullable: true
        last_cooked:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        private:
          type: boolean
        shared:
          type: array
          items:
            $ref: '#/components/schemas/User'
    PatchedRecipeBook:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        description:
          type: string
        shared:
          type: array
          items:
            $ref: '#/components/schemas/User'
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        filter:
          allOf:
          - $ref: '#/components/schemas/CustomFilter'
          nullable: true
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
    PatchedRecipeBookEntry:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        book:
          type: integer
        book_content:
          allOf:
          - $ref: '#/components/schemas/RecipeBook'
          readOnly: true
        recipe:
          type: integer
        recipe_content:
          allOf:
          - $ref: '#/components/schemas/RecipeOverview'
          readOnly: true
    PatchedRecipeImport:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        file_uid:
          type: string
          maxLength: 256
        file_path:
          type: string
          maxLength: 512
        created_at:
          type: string
          format: date-time
          readOnly: true
        storage:
          type: integer
        space:
          type: integer
    PatchedSearchPreference:
      type: object
      description: Adds nested create feature
      properties:
        user:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        search:
          $ref: '#/components/schemas/SearchEnum'
        lookup:
          type: boolean
        unaccent:
          type: array
          items:
            $ref: '#/components/schemas/SearchFields'
          nullable: true
        icontains:
          type: array
          items:
            $ref: '#/components/schemas/SearchFields'
          nullable: true
        istartswith:
          type: array
          items:
            $ref: '#/components/schemas/SearchFields'
          nullable: true
        trigram:
          type: array
          items:
            $ref: '#/components/schemas/SearchFields'
          nullable: true
        fulltext:
          type: array
          items:
            $ref: '#/components/schemas/SearchFields'
          nullable: true
        trigram_threshold:
          type: number
          format: double
          maximum: 10
          minimum: -10
          exclusiveMaximum: true
          exclusiveMinimum: true
    PatchedShoppingListEntry:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        list_recipe:
          type: integer
          nullable: true
        food:
          allOf:
          - $ref: '#/components/schemas/Food'
          nullable: true
        unit:
          allOf:
          - $ref: '#/components/schemas/Unit'
          nullable: true
        amount:
          type: number
          format: double
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        checked:
          type: boolean
        ingredient:
          type: integer
          nullable: true
        list_recipe_data:
          allOf:
          - $ref: '#/components/schemas/ShoppingListRecipe'
          readOnly: true
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        completed_at:
          type: string
          format: date-time
          nullable: true
        delay_until:
          type: string
          format: date-time
          nullable: true
        mealplan_id:
          type: integer
          writeOnly: true
          description: If a mealplan id is given try to find existing or create new
            ShoppingListRecipe with that meal plan and link entry to it
    PatchedShoppingListRecipe:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 32
        recipe:
          type: integer
          nullable: true
        recipe_data:
          allOf:
          - $ref: '#/components/schemas/RecipeOverview'
          readOnly: true
        mealplan:
          type: integer
          nullable: true
        meal_plan_data:
          allOf:
          - $ref: '#/components/schemas/MealPlan'
          readOnly: true
        servings:
          type: number
          format: double
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
    PatchedSpace:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        message:
          type: string
          maxLength: 512
        max_recipes:
          type: integer
          readOnly: true
        max_file_storage_mb:
          type: integer
          readOnly: true
          description: Maximum file storage for space in MB. 0 for unlimited, -1 to
            disable file upload.
        max_users:
          type: integer
          readOnly: true
        allow_sharing:
          type: boolean
          readOnly: true
        demo:
          type: boolean
          readOnly: true
        food_inherit:
          type: array
          items:
            $ref: '#/components/schemas/FoodInheritField'
        user_count:
          type: integer
          readOnly: true
        recipe_count:
          type: integer
          readOnly: true
        file_size_mb:
          type: number
          format: double
          readOnly: true
        image:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        nav_logo:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        space_theme:
          $ref: '#/components/schemas/SpaceThemeEnum'
        custom_space_theme:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        nav_bg_color:
          type: string
          maxLength: 8
        nav_text_color:
          $ref: '#/components/schemas/SpaceNavTextColorEnum'
        logo_color_32:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_128:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_144:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_180:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_192:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_512:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_svg:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        ai_credits_monthly:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        ai_credits_balance:
          type: number
          format: double
          maximum: 1000000000000
          minimum: -1000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
        ai_monthly_credits_used:
          type: integer
          readOnly: true
        ai_enabled:
          type: boolean
        ai_default_provider:
          allOf:
          - $ref: '#/components/schemas/AiProvider'
          nullable: true
        space_setup_completed:
          type: boolean
    PatchedStep:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        instruction:
          type: string
        ingredients:
          type: array
          items:
            $ref: '#/components/schemas/Ingredient'
        instructions_markdown:
          type: string
          readOnly: true
        time:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        show_as_header:
          type: boolean
        file:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        step_recipe:
          type: integer
          nullable: true
        step_recipe_data:
          readOnly: true
        numrecipe:
          type: integer
          readOnly: true
        show_ingredients_table:
          type: boolean
    PatchedStorage:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        method:
          $ref: '#/components/schemas/MethodEnum'
        username:
          type: string
          nullable: true
          maxLength: 128
        password:
          type: string
          writeOnly: true
          nullable: true
          maxLength: 128
        token:
          type: string
          writeOnly: true
          nullable: true
          maxLength: 4098
        url:
          type: string
          format: uri
          nullable: true
          maxLength: 200
        path:
          type: string
          maxLength: 256
        created_by:
          type: integer
          readOnly: true
    PatchedSupermarket:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
          minLength: 1
        description:
          type: string
          nullable: true
        category_to_supermarket:
          type: array
          items:
            $ref: '#/components/schemas/SupermarketCategoryRelation'
          readOnly: true
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
    PatchedSupermarketCategory:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
          minLength: 1
        description:
          type: string
          nullable: true
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
    PatchedSupermarketCategoryRelation:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        category:
          $ref: '#/components/schemas/SupermarketCategory'
        supermarket:
          type: integer
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
    PatchedSync:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        storage:
          $ref: '#/components/schemas/Storage'
        path:
          type: string
          maxLength: 512
        active:
          type: boolean
        last_checked:
          type: string
          format: date-time
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
    PatchedUnit:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
          minLength: 1
        plural_name:
          type: string
          nullable: true
          maxLength: 128
        description:
          type: string
          nullable: true
        base_unit:
          type: string
          nullable: true
          maxLength: 256
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
    PatchedUnitConversion:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          readOnly: true
        base_amount:
          type: number
          format: double
        base_unit:
          $ref: '#/components/schemas/Unit'
        converted_amount:
          type: number
          format: double
        converted_unit:
          $ref: '#/components/schemas/Unit'
        food:
          allOf:
          - $ref: '#/components/schemas/Food'
          nullable: true
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
    PatchedUser:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        username:
          type: string
          readOnly: true
          title: Nome utente
          description: Obbligatorio. 150 caratteri o meno.Solo lettere, cifre e @/./+/-/_
        first_name:
          type: string
          title: Nome
          maxLength: 150
        last_name:
          type: string
          title: Cognome
          maxLength: 150
        display_name:
          type: string
          readOnly: true
        is_staff:
          type: boolean
          readOnly: true
          title: Privilegi di staff
          description: Stabilisce se l'utente può accedere a questo sito di amministrazione.
        is_superuser:
          type: boolean
          readOnly: true
          title: Privilegi di superutente
          description: Attribuisce all'utente tutti i privilegi, senza che sia necessario
            assegnarli esplicitamente.
        is_active:
          type: boolean
          readOnly: true
          title: Attivo
          description: Stabilisce se l'utente debba essere considerato attivo. Deseleziona
            qui, piuttosto che cancellare gli account.
    PatchedUserFile:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        file:
          type: string
          format: uri
          writeOnly: true
        file_download:
          type: string
          readOnly: true
        preview:
          type: string
          readOnly: true
        file_size_kb:
          type: integer
          readOnly: true
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
    PatchedUserPreference:
      type: object
      description: Adds nested create feature
      properties:
        user:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        image:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        theme:
          $ref: '#/components/schemas/ThemeEnum'
        nav_bg_color:
          type: string
          maxLength: 8
        nav_text_color:
          $ref: '#/components/schemas/UserPreferenceNavTextColorEnum'
        nav_show_logo:
          type: boolean
        default_unit:
          type: string
          maxLength: 32
        default_page:
          $ref: '#/components/schemas/DefaultPageEnum'
        use_fractions:
          type: boolean
        use_kj:
          type: boolean
        plan_share:
          type: array
          items:
            $ref: '#/components/schemas/User'
          nullable: true
        nav_sticky:
          type: boolean
        ingredient_decimals:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        comments:
          type: boolean
        shopping_auto_sync:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        mealplan_autoadd_shopping:
          type: boolean
        food_inherit_default:
          allOf:
          - $ref: '#/components/schemas/FoodInheritField'
          readOnly: true
        default_delay:
          type: number
          format: double
          maximum: 10000
          minimum: -10000
          exclusiveMaximum: true
          exclusiveMinimum: true
        mealplan_autoinclude_related:
          type: boolean
        mealplan_autoexclude_onhand:
          type: boolean
        shopping_share:
          type: array
          items:
            $ref: '#/components/schemas/User'
          nullable: true
        shopping_recent_days:
          type: integer
          maximum: 9223372036854775807
          minimum: 0
          format: int64
        csv_delim:
          type: string
          maxLength: 2
        csv_prefix:
          type: string
          maxLength: 10
        filter_to_supermarket:
          type: boolean
        shopping_add_onhand:
          type: boolean
        left_handed:
          type: boolean
        show_step_ingredients:
          type: boolean
        food_children_exist:
          type: boolean
          readOnly: true
    PatchedUserSpace:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        user:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        space:
          type: integer
          readOnly: true
        groups:
          type: array
          items:
            $ref: '#/components/schemas/Group'
        active:
          type: boolean
        internal_note:
          type: string
          nullable: true
        invite_link:
          type: integer
          readOnly: true
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
    PatchedViewLog:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        recipe:
          type: integer
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
    Property:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        property_amount:
          type: number
          format: double
          nullable: true
        property_type:
          $ref: '#/components/schemas/PropertyType'
      required:
      - property_amount
      - property_type
    PropertyType:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        unit:
          type: string
          nullable: true
          maxLength: 64
        description:
          type: string
          nullable: true
          maxLength: 512
        order:
          type: integer
          default: 0
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
        fdc_id:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
          nullable: true
      required:
      - name
    Recipe:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        description:
          type: string
          nullable: true
          maxLength: 512
        image:
          type: string
          format: uri
          readOnly: true
          nullable: true
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/Keyword'
        steps:
          type: array
          items:
            $ref: '#/components/schemas/Step'
        working_time:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        waiting_time:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        source_url:
          type: string
          nullable: true
          maxLength: 1024
        internal:
          type: boolean
        show_ingredient_overview:
          type: boolean
        nutrition:
          allOf:
          - $ref: '#/components/schemas/NutritionInformation'
          nullable: true
        properties:
          type: array
          items:
            $ref: '#/components/schemas/Property'
        food_properties:
          readOnly: true
        servings:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        file_path:
          type: string
          maxLength: 512
        servings_text:
          type: string
          maxLength: 32
        rating:
          type: number
          format: double
          readOnly: true
          nullable: true
        last_cooked:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        private:
          type: boolean
        shared:
          type: array
          items:
            $ref: '#/components/schemas/User'
      required:
      - created_at
      - created_by
      - food_properties
      - image
      - last_cooked
      - name
      - rating
      - steps
      - updated_at
    RecipeBatchUpdate:
      type: object
      properties:
        recipes:
          type: array
          items:
            type: integer
        keywords_add:
          type: array
          items:
            type: integer
        keywords_remove:
          type: array
          items:
            type: integer
        keywords_set:
          type: array
          items:
            type: integer
        keywords_remove_all:
          type: boolean
          default: false
        working_time:
          type: integer
          nullable: true
        waiting_time:
          type: integer
          nullable: true
        servings:
          type: integer
          nullable: true
        servings_text:
          type: string
          nullable: true
        private:
          type: boolean
          nullable: true
        shared_add:
          type: array
          items:
            type: integer
        shared_remove:
          type: array
          items:
            type: integer
        shared_set:
          type: array
          items:
            type: integer
        shared_remove_all:
          type: boolean
          default: false
        show_ingredient_overview:
          type: boolean
          nullable: true
        clear_description:
          type: boolean
          nullable: true
      required:
      - keywords_add
      - keywords_remove
      - keywords_set
      - recipes
      - shared_add
      - shared_remove
      - shared_set
    RecipeBook:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        description:
          type: string
        shared:
          type: array
          items:
            $ref: '#/components/schemas/User'
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        filter:
          allOf:
          - $ref: '#/components/schemas/CustomFilter'
          nullable: true
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
      required:
      - created_by
      - name
      - shared
    RecipeBookEntry:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        book:
          type: integer
        book_content:
          allOf:
          - $ref: '#/components/schemas/RecipeBook'
          readOnly: true
        recipe:
          type: integer
        recipe_content:
          allOf:
          - $ref: '#/components/schemas/RecipeOverview'
          readOnly: true
      required:
      - book
      - book_content
      - recipe
      - recipe_content
    RecipeFlat:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          readOnly: true
        image:
          type: string
          format: uri
          readOnly: true
          nullable: true
      required:
      - image
      - name
    RecipeFromSource:
      type: object
      properties:
        url:
          type: string
          nullable: true
          maxLength: 4096
        data:
          type: string
          nullable: true
        bookmarklet:
          type: integer
          nullable: true
    RecipeFromSourceResponse:
      type: object
      properties:
        recipe:
          $ref: '#/components/schemas/SourceImportRecipe'
        recipe_id:
          type: integer
        images:
          type: array
          items:
            type: string
          default: []
        error:
          type: boolean
          default: false
        msg:
          type: string
          default: ''
          maxLength: 1024
        duplicates:
          type: array
          items:
            $ref: '#/components/schemas/SourceImportDuplicate'
          default: []
    RecipeImage:
      type: object
      description: Adds nested create feature
      properties:
        image:
          type: string
          format: uri
          nullable: true
        image_url:
          type: string
          nullable: true
          maxLength: 4096
    RecipeImport:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        file_uid:
          type: string
          maxLength: 256
        file_path:
          type: string
          maxLength: 512
        created_at:
          type: string
          format: date-time
          readOnly: true
        storage:
          type: integer
        space:
          type: integer
      required:
      - created_at
      - name
      - space
      - storage
    RecipeOverview:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        description:
          type: string
          nullable: true
          maxLength: 512
        image:
          type: string
          format: uri
          readOnly: true
          nullable: true
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/KeywordLabel'
          readOnly: true
        working_time:
          type: integer
          readOnly: true
        waiting_time:
          type: integer
          readOnly: true
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        internal:
          type: boolean
          readOnly: true
        private:
          type: boolean
        servings:
          type: integer
          readOnly: true
        servings_text:
          type: string
          readOnly: true
        rating:
          type: number
          format: double
          readOnly: true
          nullable: true
        last_cooked:
          type: string
          format: date-time
          readOnly: true
          nullable: true
        new:
          type: boolean
          readOnly: true
        recent:
          type: string
          readOnly: true
      required:
      - created_at
      - created_by
      - image
      - internal
      - keywords
      - last_cooked
      - name
      - new
      - rating
      - recent
      - servings
      - servings_text
      - updated_at
      - waiting_time
      - working_time
    RecipeShoppingUpdate:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        list_recipe:
          type: integer
          writeOnly: true
          nullable: true
          description: Existing shopping list to update
        ingredients:
          type: array
          items:
            type: integer
            writeOnly: true
            nullable: true
            description: List of ingredient IDs from the recipe to add, if not provided
              all ingredients will be added.
        servings:
          type: integer
          writeOnly: true
          nullable: true
          default: 1
          description: Providing a list_recipe ID and servings of 0 will delete that
            shopping list.
      required:
      - ingredients
    RecipeSimple:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        url:
          type: string
          readOnly: true
      required:
      - name
      - url
    SearchEnum:
      enum:
      - plain
      - phrase
      - websearch
      - raw
      type: string
      description: |-
        * `plain` - Simple
        * `phrase` - Phrase
        * `websearch` - Web
        * `raw` - Raw
    SearchFields:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          nullable: true
        field:
          type: string
          nullable: true
      required: []
    SearchPreference:
      type: object
      description: Adds nested create feature
      properties:
        user:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        search:
          $ref: '#/components/schemas/SearchEnum'
        lookup:
          type: boolean
        unaccent:
          type: array
          items:
            $ref: '#/components/schemas/SearchFields'
          nullable: true
        icontains:
          type: array
          items:
            $ref: '#/components/schemas/SearchFields'
          nullable: true
        istartswith:
          type: array
          items:
            $ref: '#/components/schemas/SearchFields'
          nullable: true
        trigram:
          type: array
          items:
            $ref: '#/components/schemas/SearchFields'
          nullable: true
        fulltext:
          type: array
          items:
            $ref: '#/components/schemas/SearchFields'
          nullable: true
        trigram_threshold:
          type: number
          format: double
          maximum: 10
          minimum: -10
          exclusiveMaximum: true
          exclusiveMinimum: true
      required:
      - user
    ServerSettings:
      type: object
      properties:
        shopping_min_autosync_interval:
          type: string
        enable_pdf_export:
          type: boolean
        disable_external_connectors:
          type: boolean
        terms_url:
          type: string
        privacy_url:
          type: string
        imprint_url:
          type: string
        hosted:
          type: boolean
        debug:
          type: boolean
        version:
          type: string
        unauthenticated_theme_from_space:
          type: integer
        force_theme_from_space:
          type: integer
        logo_color_32:
          type: string
          format: uri
        logo_color_128:
          type: string
        logo_color_144:
          type: string
        logo_color_180:
          type: string
        logo_color_192:
          type: string
        logo_color_512:
          type: string
        logo_color_svg:
          type: string
        custom_space_theme:
          type: string
        nav_logo:
          type: string
        nav_bg_color:
          type: string
      required:
      - debug
      - disable_external_connectors
      - enable_pdf_export
      - force_theme_from_space
      - hosted
      - imprint_url
      - privacy_url
      - shopping_min_autosync_interval
      - terms_url
      - unauthenticated_theme_from_space
      - version
    ShareLink:
      type: object
      properties:
        pk:
          type: integer
        share:
          type: string
          format: uuid
        link:
          type: string
      required:
      - link
      - pk
      - share
    ShoppingListEntry:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        list_recipe:
          type: integer
          nullable: true
        food:
          allOf:
          - $ref: '#/components/schemas/Food'
          nullable: true
        unit:
          allOf:
          - $ref: '#/components/schemas/Unit'
          nullable: true
        amount:
          type: number
          format: double
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        checked:
          type: boolean
        ingredient:
          type: integer
          nullable: true
        list_recipe_data:
          allOf:
          - $ref: '#/components/schemas/ShoppingListRecipe'
          readOnly: true
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        completed_at:
          type: string
          format: date-time
          nullable: true
        delay_until:
          type: string
          format: date-time
          nullable: true
        mealplan_id:
          type: integer
          writeOnly: true
          description: If a mealplan id is given try to find existing or create new
            ShoppingListRecipe with that meal plan and link entry to it
      required:
      - amount
      - created_at
      - created_by
      - food
      - list_recipe_data
      - updated_at
    ShoppingListEntryBulk:
      type: object
      properties:
        ids:
          type: array
          items: {}
        checked:
          type: boolean
        timestamp:
          type: string
          format: date-time
          readOnly: true
      required:
      - checked
      - ids
      - timestamp
    ShoppingListEntryBulkCreate:
      type: object
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/ShoppingListEntrySimpleCreate'
      required:
      - entries
    ShoppingListEntrySimpleCreate:
      type: object
      properties:
        amount:
          type: number
          format: double
        unit_id:
          type: integer
          nullable: true
        food_id:
          type: integer
          nullable: true
        ingredient_id:
          type: integer
          nullable: true
      required:
      - amount
      - food_id
      - ingredient_id
      - unit_id
    ShoppingListRecipe:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 32
        recipe:
          type: integer
          nullable: true
        recipe_data:
          allOf:
          - $ref: '#/components/schemas/RecipeOverview'
          readOnly: true
        mealplan:
          type: integer
          nullable: true
        meal_plan_data:
          allOf:
          - $ref: '#/components/schemas/MealPlan'
          readOnly: true
        servings:
          type: number
          format: double
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
      required:
      - created_by
      - meal_plan_data
      - recipe_data
      - servings
    SourceImportDuplicate:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
      required:
      - name
    SourceImportFood:
      type: object
      properties:
        name:
          type: string
      required:
      - name
    SourceImportIngredient:
      type: object
      properties:
        amount:
          type: number
          format: double
        food:
          $ref: '#/components/schemas/SourceImportFood'
        unit:
          $ref: '#/components/schemas/SourceImportUnit'
        note:
          type: string
        original_text:
          type: string
      required:
      - amount
      - food
      - original_text
      - unit
    SourceImportKeyword:
      type: object
      properties:
        id:
          type: integer
          nullable: true
          readOnly: false
        label:
          type: string
        name:
          type: string
        import_keyword:
          type: boolean
          default: true
      required:
      - label
      - name
    SourceImportProperty:
      type: object
      properties:
        property_type:
          $ref: '#/components/schemas/SourceImportPropertyType'
        property_amount:
          type: number
          format: double
      required:
      - property_amount
      - property_type
    SourceImportPropertyType:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
      required:
      - name
    SourceImportRecipe:
      type: object
      properties:
        steps:
          type: array
          items:
            $ref: '#/components/schemas/SourceImportStep'
        internal:
          type: boolean
          default: true
        source_url:
          type: string
          format: uri
        name:
          type: string
        description:
          type: string
        servings:
          type: integer
          default: 1
        servings_text:
          type: string
          default: ''
        working_time:
          type: integer
          default: 0
        waiting_time:
          type: integer
          default: 0
        image_url:
          type: string
          format: uri
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/SourceImportKeyword'
          default: []
        properties:
          type: array
          items:
            $ref: '#/components/schemas/SourceImportProperty'
          default: []
      required:
      - name
      - source_url
      - steps
    SourceImportStep:
      type: object
      properties:
        instruction:
          type: string
        ingredients:
          type: array
          items:
            $ref: '#/components/schemas/SourceImportIngredient'
        show_ingredients_table:
          type: boolean
          default: true
      required:
      - ingredients
      - instruction
    SourceImportUnit:
      type: object
      properties:
        name:
          type: string
      required:
      - name
    Space:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        message:
          type: string
          maxLength: 512
        max_recipes:
          type: integer
          readOnly: true
        max_file_storage_mb:
          type: integer
          readOnly: true
          description: Maximum file storage for space in MB. 0 for unlimited, -1 to
            disable file upload.
        max_users:
          type: integer
          readOnly: true
        allow_sharing:
          type: boolean
          readOnly: true
        demo:
          type: boolean
          readOnly: true
        food_inherit:
          type: array
          items:
            $ref: '#/components/schemas/FoodInheritField'
        user_count:
          type: integer
          readOnly: true
        recipe_count:
          type: integer
          readOnly: true
        file_size_mb:
          type: number
          format: double
          readOnly: true
        image:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        nav_logo:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        space_theme:
          $ref: '#/components/schemas/SpaceThemeEnum'
        custom_space_theme:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        nav_bg_color:
          type: string
          maxLength: 8
        nav_text_color:
          $ref: '#/components/schemas/SpaceNavTextColorEnum'
        logo_color_32:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_128:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_144:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_180:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_192:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_512:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        logo_color_svg:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        ai_credits_monthly:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        ai_credits_balance:
          type: number
          format: double
          maximum: 1000000000000
          minimum: -1000000000000
          exclusiveMaximum: true
          exclusiveMinimum: true
        ai_monthly_credits_used:
          type: integer
          readOnly: true
        ai_enabled:
          type: boolean
        ai_default_provider:
          allOf:
          - $ref: '#/components/schemas/AiProvider'
          nullable: true
        space_setup_completed:
          type: boolean
      required:
      - ai_monthly_credits_used
      - allow_sharing
      - created_at
      - created_by
      - demo
      - file_size_mb
      - max_file_storage_mb
      - max_recipes
      - max_users
      - recipe_count
      - user_count
    SpaceNavTextColorEnum:
      enum:
      - BLANK
      - LIGHT
      - DARK
      type: string
      description: |-
        * `BLANK` - -------
        * `LIGHT` - Light
        * `DARK` - Dark
    SpaceThemeEnum:
      enum:
      - BLANK
      - TANDOOR
      - BOOTSTRAP
      - DARKLY
      - FLATLY
      - SUPERHERO
      - TANDOOR_DARK
      type: string
      description: |-
        * `BLANK` - -------
        * `TANDOOR` - Tandoor
        * `BOOTSTRAP` - Bootstrap
        * `DARKLY` - Darkly
        * `FLATLY` - Flatly
        * `SUPERHERO` - Superhero
        * `TANDOOR_DARK` - Tandoor Dark (INCOMPLETE)
    Step:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        instruction:
          type: string
        ingredients:
          type: array
          items:
            $ref: '#/components/schemas/Ingredient'
        instructions_markdown:
          type: string
          readOnly: true
        time:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        show_as_header:
          type: boolean
        file:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        step_recipe:
          type: integer
          nullable: true
        step_recipe_data:
          readOnly: true
        numrecipe:
          type: integer
          readOnly: true
        show_ingredients_table:
          type: boolean
      required:
      - ingredients
      - instructions_markdown
      - numrecipe
      - step_recipe_data
    Storage:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        method:
          $ref: '#/components/schemas/MethodEnum'
        username:
          type: string
          nullable: true
          maxLength: 128
        password:
          type: string
          writeOnly: true
          nullable: true
          maxLength: 128
        token:
          type: string
          writeOnly: true
          nullable: true
          maxLength: 4098
        url:
          type: string
          format: uri
          nullable: true
          maxLength: 200
        path:
          type: string
          maxLength: 256
        created_by:
          type: integer
          readOnly: true
      required:
      - created_by
      - name
    Supermarket:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
          minLength: 1
        description:
          type: string
          nullable: true
        category_to_supermarket:
          type: array
          items:
            $ref: '#/components/schemas/SupermarketCategoryRelation'
          readOnly: true
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
      required:
      - category_to_supermarket
      - name
    SupermarketCategory:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
          minLength: 1
        description:
          type: string
          nullable: true
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
      required:
      - name
    SupermarketCategoryRelation:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        category:
          $ref: '#/components/schemas/SupermarketCategory'
        supermarket:
          type: integer
        order:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
      required:
      - category
      - supermarket
    Sync:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        storage:
          $ref: '#/components/schemas/Storage'
        path:
          type: string
          maxLength: 512
        active:
          type: boolean
        last_checked:
          type: string
          format: date-time
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - storage
      - updated_at
    SyncLog:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        sync:
          allOf:
          - $ref: '#/components/schemas/Sync'
          readOnly: true
        status:
          type: string
          maxLength: 32
        msg:
          type: string
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - status
      - sync
    ThemeEnum:
      enum:
      - TANDOOR
      - BOOTSTRAP
      - DARKLY
      - FLATLY
      - SUPERHERO
      - TANDOOR_DARK
      type: string
      description: |-
        * `TANDOOR` - Tandoor
        * `BOOTSTRAP` - Bootstrap
        * `DARKLY` - Darkly
        * `FLATLY` - Flatly
        * `SUPERHERO` - Superhero
        * `TANDOOR_DARK` - Tandoor Dark (INCOMPLETE)
    Unit:
      type: object
      description: |-
        Moves `UniqueValidator`'s from the validation stage to the save stage.
        It solves the problem with nested validation for unique fields on update.

        If you want more details, you can read related issues and articles:
        https://github.com/beda-software/drf-writable-nested/issues/1
        http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers

        Example of usage:
        ```
            class Child(models.Model):
            field = models.CharField(unique=True)


        class Parent(models.Model):
            child = models.ForeignKey('Child')


        class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer):
            class Meta:
                model = Child


        class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer):
            child = ChildSerializer()

            class Meta:
                model = Parent
        ```

        Note: `UniqueFieldsMixin` must be applied only on the serializer
        which has unique fields.

        Note: When you are using both mixins
        (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`)
        you should put `UniqueFieldsMixin` ahead.
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
          minLength: 1
        plural_name:
          type: string
          nullable: true
          maxLength: 128
        description:
          type: string
          nullable: true
        base_unit:
          type: string
          nullable: true
          maxLength: 256
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
      required:
      - name
    UnitConversion:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          readOnly: true
        base_amount:
          type: number
          format: double
        base_unit:
          $ref: '#/components/schemas/Unit'
        converted_amount:
          type: number
          format: double
        converted_unit:
          $ref: '#/components/schemas/Unit'
        food:
          allOf:
          - $ref: '#/components/schemas/Food'
          nullable: true
        open_data_slug:
          type: string
          nullable: true
          maxLength: 128
      required:
      - base_amount
      - base_unit
      - converted_amount
      - converted_unit
      - name
    User:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        username:
          type: string
          readOnly: true
          title: Nome utente
          description: Obbligatorio. 150 caratteri o meno.Solo lettere, cifre e @/./+/-/_
        first_name:
          type: string
          title: Nome
          maxLength: 150
        last_name:
          type: string
          title: Cognome
          maxLength: 150
        display_name:
          type: string
          readOnly: true
        is_staff:
          type: boolean
          readOnly: true
          title: Privilegi di staff
          description: Stabilisce se l'utente può accedere a questo sito di amministrazione.
        is_superuser:
          type: boolean
          readOnly: true
          title: Privilegi di superutente
          description: Attribuisce all'utente tutti i privilegi, senza che sia necessario
            assegnarli esplicitamente.
        is_active:
          type: boolean
          readOnly: true
          title: Attivo
          description: Stabilisce se l'utente debba essere considerato attivo. Deseleziona
            qui, piuttosto che cancellare gli account.
      required:
      - display_name
      - is_active
      - is_staff
      - is_superuser
      - username
    UserFile:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        file:
          type: string
          format: uri
          writeOnly: true
        file_download:
          type: string
          readOnly: true
        preview:
          type: string
          readOnly: true
        file_size_kb:
          type: integer
          readOnly: true
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - created_by
      - file_download
      - file_size_kb
      - name
      - preview
    UserFileView:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        name:
          type: string
          maxLength: 128
        file_download:
          type: string
          readOnly: true
        preview:
          type: string
          readOnly: true
        file_size_kb:
          type: integer
          readOnly: true
        created_by:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - created_by
      - file_download
      - file_size_kb
      - name
      - preview
    UserPreference:
      type: object
      description: Adds nested create feature
      properties:
        user:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        image:
          allOf:
          - $ref: '#/components/schemas/UserFileView'
          nullable: true
        theme:
          $ref: '#/components/schemas/ThemeEnum'
        nav_bg_color:
          type: string
          maxLength: 8
        nav_text_color:
          $ref: '#/components/schemas/UserPreferenceNavTextColorEnum'
        nav_show_logo:
          type: boolean
        default_unit:
          type: string
          maxLength: 32
        default_page:
          $ref: '#/components/schemas/DefaultPageEnum'
        use_fractions:
          type: boolean
        use_kj:
          type: boolean
        plan_share:
          type: array
          items:
            $ref: '#/components/schemas/User'
          nullable: true
        nav_sticky:
          type: boolean
        ingredient_decimals:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        comments:
          type: boolean
        shopping_auto_sync:
          type: integer
          maximum: 9223372036854775807
          minimum: -9223372036854775808
          format: int64
        mealplan_autoadd_shopping:
          type: boolean
        food_inherit_default:
          allOf:
          - $ref: '#/components/schemas/FoodInheritField'
          readOnly: true
        default_delay:
          type: number
          format: double
          maximum: 10000
          minimum: -10000
          exclusiveMaximum: true
          exclusiveMinimum: true
        mealplan_autoinclude_related:
          type: boolean
        mealplan_autoexclude_onhand:
          type: boolean
        shopping_share:
          type: array
          items:
            $ref: '#/components/schemas/User'
          nullable: true
        shopping_recent_days:
          type: integer
          maximum: 9223372036854775807
          minimum: 0
          format: int64
        csv_delim:
          type: string
          maxLength: 2
        csv_prefix:
          type: string
          maxLength: 10
        filter_to_supermarket:
          type: boolean
        shopping_add_onhand:
          type: boolean
        left_handed:
          type: boolean
        show_step_ingredients:
          type: boolean
        food_children_exist:
          type: boolean
          readOnly: true
      required:
      - food_children_exist
      - food_inherit_default
      - user
    UserPreferenceNavTextColorEnum:
      enum:
      - LIGHT
      - DARK
      type: string
      description: |-
        * `LIGHT` - Light
        * `DARK` - Dark
    UserSpace:
      type: object
      description: Adds nested create feature
      properties:
        id:
          type: integer
          readOnly: false
        user:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        space:
          type: integer
          readOnly: true
        groups:
          type: array
          items:
            $ref: '#/components/schemas/Group'
        active:
          type: boolean
        internal_note:
          type: string
          nullable: true
        invite_link:
          type: integer
          readOnly: true
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - groups
      - invite_link
      - space
      - updated_at
      - user
    ViewLog:
      type: object
      properties:
        id:
          type: integer
          readOnly: false
        recipe:
          type: integer
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - created_by
      - recipe
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
