openapi: 3.0.0
servers:
  - url: https://api.ynab.com/v1
info:
  contact:
    x-twitter: ynab
  description: Our API uses a REST based design, leverages the JSON data format, and relies upon HTTPS for transport. We respond with meaningful HTTP response codes and if an error occurs, we include error details in the response body.  API Documentation is at https://api.ynab.com
  title: YNAB API Endpoints
  version: 1.0.0
  x-apisguru-categories:
    - financial
  x-logo:
    url: https://twitter.com/ynab/profile_image?size=original
  x-origin:
    - format: openapi
      url: https://api.youneedabudget.com/papi/spec-v1-swagger.json
      version: "3.0"
  x-providerName: youneedabudget.com
security:
  - bearer: []
tags:
  - name: User
  - name: Budgets
  - description: The accounts for a budget
    name: Accounts
  - description: The categories for a budget
    name: Categories
  - description: The payees for a budget
    name: Payees
  - description: When you enter a transaction and specify a payee on the YNAB mobile apps, the GPS coordinates for that location are stored, with your permission, so that the next time you are in the same place (like the Grocery store) we can pre-populate nearby payees for you!  It’s handy and saves you time.  This resource makes these locations available.  Locations will not be available for all payees.
    name: Payee Locations
  - description: Each budget contains one or more months, which is where Ready to Assign, Age of Money and category (budgeted / activity / balances) amounts are available.
    name: Months
  - description: The transactions for a budget
    name: Transactions
  - description: The scheduled transactions for a budget
    name: Scheduled Transactions
paths:
  /budgets:
    get:
      description: Returns budgets list with summary information
      operationId: getBudgets
      parameters:
        - description: Whether to include the list of budget accounts
          in: query
          name: include_accounts
          required: false
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BudgetSummaryResponse"
          description: The list of budgets
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No budgets were found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: List budgets
      tags:
        - Budgets
  "/budgets/{budget_id}":
    get:
      description: Returns a single budget with all related entities.  This resource is effectively a full budget export.
      operationId: getBudgetById
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The starting server knowledge.  If provided, only entities that have changed since `last_knowledge_of_server` will be included.
          in: query
          name: last_knowledge_of_server
          required: false
          schema:
            format: int64
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BudgetDetailResponse"
          description: The requested budget
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The specified budget was not found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: Single budget
      tags:
        - Budgets
  "/budgets/{budget_id}/accounts":
    get:
      description: Returns all accounts
      operationId: getAccounts
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The starting server knowledge.  If provided, only entities that have changed since `last_knowledge_of_server` will be included.
          in: query
          name: last_knowledge_of_server
          required: false
          schema:
            format: int64
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountsResponse"
          description: The list of requested accounts
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No accounts were found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: Account list
      tags:
        - Accounts
    post:
      description: Creates a new account
      operationId: createAccount
      parameters:
        - description: 'The id of the budget ("last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget)'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PostAccountWrapper"
        description: The account to create.
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountResponse"
          description: The account was successfully created
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The request could not be understood due to malformed syntax or validation error(s).
      summary: Create a new account
      tags:
        - Accounts
  "/budgets/{budget_id}/accounts/{account_id}":
    get:
      description: Returns a single account
      operationId: getAccountById
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The id of the account
          in: path
          name: account_id
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountResponse"
          description: The requested account
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The requested account was not found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: Single account
      tags:
        - Accounts
  "/budgets/{budget_id}/accounts/{account_id}/transactions":
    get:
      description: Returns all transactions for a specified account
      operationId: getTransactionsByAccount
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The id of the account
          in: path
          name: account_id
          required: true
          schema:
            type: string
        - description: If specified, only transactions on or after this date will be included.  The date should be ISO formatted (e.g. 2016-12-30).
          in: query
          name: since_date
          required: false
          schema:
            format: date
            type: string
        - description: If specified, only transactions of the specified type will be included. "uncategorized" and "unapproved" are currently supported.
          in: query
          name: type
          required: false
          schema:
            enum:
              - uncategorized
              - unapproved
            type: string
        - description: The starting server knowledge.  If provided, only entities that have changed since `last_knowledge_of_server` will be included.
          in: query
          name: last_knowledge_of_server
          required: false
          schema:
            format: int64
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionsResponse"
          description: The list of requested transactions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No transactions were found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: List account transactions
      tags:
        - Transactions
  "/budgets/{budget_id}/categories":
    get:
      description: Returns all categories grouped by category group.  Amounts (budgeted, activity, balance, etc.) are specific to the current budget month (UTC).
      operationId: getCategories
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The starting server knowledge.  If provided, only entities that have changed since `last_knowledge_of_server` will be included.
          in: query
          name: last_knowledge_of_server
          required: false
          schema:
            format: int64
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CategoriesResponse"
          description: The categories grouped by category group
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No categories were found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: List categories
      tags:
        - Categories
  "/budgets/{budget_id}/categories/{category_id}":
    get:
      description: Returns a single category.  Amounts (budgeted, activity, balance, etc.) are specific to the current budget month (UTC).
      operationId: getCategoryById
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The id of the category
          in: path
          name: category_id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CategoryResponse"
          description: The requested category
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The category not was found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: Single category
      tags:
        - Categories
  "/budgets/{budget_id}/categories/{category_id}/transactions":
    get:
      description: Returns all transactions for a specified category
      operationId: getTransactionsByCategory
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The id of the category
          in: path
          name: category_id
          required: true
          schema:
            type: string
        - description: If specified, only transactions on or after this date will be included.  The date should be ISO formatted (e.g. 2016-12-30).
          in: query
          name: since_date
          required: false
          schema:
            format: date
            type: string
        - description: If specified, only transactions of the specified type will be included. "uncategorized" and "unapproved" are currently supported.
          in: query
          name: type
          required: false
          schema:
            enum:
              - uncategorized
              - unapproved
            type: string
        - description: The starting server knowledge.  If provided, only entities that have changed since `last_knowledge_of_server` will be included.
          in: query
          name: last_knowledge_of_server
          required: false
          schema:
            format: int64
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HybridTransactionsResponse"
          description: The list of requested transactions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No transactions were found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: List category transactions
      tags:
        - Transactions
  "/budgets/{budget_id}/months":
    get:
      description: Returns all budget months
      operationId: getBudgetMonths
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The starting server knowledge.  If provided, only entities that have changed since `last_knowledge_of_server` will be included.
          in: query
          name: last_knowledge_of_server
          required: false
          schema:
            format: int64
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MonthSummariesResponse"
          description: The list of budget months
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No budget months were found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: List budget months
      tags:
        - Months
  "/budgets/{budget_id}/months/{month}":
    get:
      description: Returns a single budget month
      operationId: getBudgetMonth
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The budget month in ISO format (e.g. 2016-12-01) ("current" can also be used to specify the current calendar month (UTC))
          in: path
          name: month
          required: true
          schema:
            format: date
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MonthDetailResponse"
          description: The budget month detail
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The budget month was not found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: Single budget month
      tags:
        - Months
  "/budgets/{budget_id}/months/{month}/categories/{category_id}":
    get:
      description: Returns a single category for a specific budget month.  Amounts (budgeted, activity, balance, etc.) are specific to the current budget month (UTC).
      operationId: getMonthCategoryById
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The budget month in ISO format (e.g. 2016-12-01) ("current" can also be used to specify the current calendar month (UTC))
          in: path
          name: month
          required: true
          schema:
            format: date
            type: string
        - description: The id of the category
          in: path
          name: category_id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CategoryResponse"
          description: The requested month category
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The month category was not was found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: Single category for a specific budget month
      tags:
        - Categories
    patch:
      description: Update a category for a specific month.  Only `budgeted` amount can be updated.
      operationId: updateMonthCategory
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The budget month in ISO format (e.g. 2016-12-01) ("current" can also be used to specify the current calendar month (UTC))
          in: path
          name: month
          required: true
          schema:
            format: date
            type: string
        - description: The id of the category
          in: path
          name: category_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PatchMonthCategoryWrapper"
        description: The category to update.  Only `budgeted` amount can be updated and any other fields specified will be ignored.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SaveCategoryResponse"
          description: The month category was successfully updated
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The request could not be understood due to malformed syntax or validation error(s)
      summary: Update a category for a specific month
      tags:
        - Categories
  "/budgets/{budget_id}/payee_locations":
    get:
      description: Returns all payee locations
      operationId: getPayeeLocations
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayeeLocationsResponse"
          description: The list of payee locations
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No payees locations were found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: List payee locations
      tags:
        - Payee Locations
  "/budgets/{budget_id}/payee_locations/{payee_location_id}":
    get:
      description: Returns a single payee location
      operationId: getPayeeLocationById
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: id of payee location
          in: path
          name: payee_location_id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayeeLocationResponse"
          description: The payee location
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The payee location was not found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: Single payee location
      tags:
        - Payee Locations
  "/budgets/{budget_id}/payees":
    get:
      description: Returns all payees
      operationId: getPayees
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The starting server knowledge.  If provided, only entities that have changed since `last_knowledge_of_server` will be included.
          in: query
          name: last_knowledge_of_server
          required: false
          schema:
            format: int64
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayeesResponse"
          description: The requested list of payees
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No payees were found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: List payees
      tags:
        - Payees
  "/budgets/{budget_id}/payees/{payee_id}":
    get:
      description: Returns a single payee
      operationId: getPayeeById
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The id of the payee
          in: path
          name: payee_id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayeeResponse"
          description: The requested payee
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The payee was not found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: Single payee
      tags:
        - Payees
  "/budgets/{budget_id}/payees/{payee_id}/payee_locations":
    get:
      description: Returns all payee locations for a specified payee
      operationId: getPayeeLocationsByPayee
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: id of payee
          in: path
          name: payee_id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayeeLocationsResponse"
          description: The list of requested payee locations
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No payees locations were found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: List locations for a payee
      tags:
        - Payee Locations
  "/budgets/{budget_id}/payees/{payee_id}/transactions":
    get:
      description: Returns all transactions for a specified payee
      operationId: getTransactionsByPayee
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The id of the payee
          in: path
          name: payee_id
          required: true
          schema:
            type: string
        - description: If specified, only transactions on or after this date will be included.  The date should be ISO formatted (e.g. 2016-12-30).
          in: query
          name: since_date
          required: false
          schema:
            format: date
            type: string
        - description: If specified, only transactions of the specified type will be included. "uncategorized" and "unapproved" are currently supported.
          in: query
          name: type
          required: false
          schema:
            enum:
              - uncategorized
              - unapproved
            type: string
        - description: The starting server knowledge.  If provided, only entities that have changed since `last_knowledge_of_server` will be included.
          in: query
          name: last_knowledge_of_server
          required: false
          schema:
            format: int64
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HybridTransactionsResponse"
          description: The list of requested transactions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No transactions were found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: List payee transactions
      tags:
        - Transactions
  "/budgets/{budget_id}/scheduled_transactions":
    get:
      description: Returns all scheduled transactions
      operationId: getScheduledTransactions
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The starting server knowledge.  If provided, only entities that have changed since `last_knowledge_of_server` will be included.
          in: query
          name: last_knowledge_of_server
          required: false
          schema:
            format: int64
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScheduledTransactionsResponse"
          description: The list of requested scheduled transactions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No scheduled transactions were found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: List scheduled transactions
      tags:
        - Scheduled Transactions
  "/budgets/{budget_id}/scheduled_transactions/{scheduled_transaction_id}":
    get:
      description: Returns a single scheduled transaction
      operationId: getScheduledTransactionById
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The id of the scheduled transaction
          in: path
          name: scheduled_transaction_id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScheduledTransactionResponse"
          description: The requested Scheduled Transaction
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The scheduled transaction was not found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: Single scheduled transaction
      tags:
        - Scheduled Transactions
  "/budgets/{budget_id}/settings":
    get:
      description: Returns settings for a budget
      operationId: getBudgetSettingsById
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BudgetSettingsResponse"
          description: The requested budget settings
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The specified Budget was not found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: Budget Settings
      tags:
        - Budgets
  "/budgets/{budget_id}/transactions":
    get:
      description: Returns budget transactions
      operationId: getTransactions
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: If specified, only transactions on or after this date will be included.  The date should be ISO formatted (e.g. 2016-12-30).
          in: query
          name: since_date
          required: false
          schema:
            format: date
            type: string
        - description: If specified, only transactions of the specified type will be included. "uncategorized" and "unapproved" are currently supported.
          in: query
          name: type
          required: false
          schema:
            enum:
              - uncategorized
              - unapproved
            type: string
        - description: The starting server knowledge.  If provided, only entities that have changed since `last_knowledge_of_server` will be included.
          in: query
          name: last_knowledge_of_server
          required: false
          schema:
            format: int64
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionsResponse"
          description: The list of requested transactions
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No transactions were found
      summary: List transactions
      tags:
        - Transactions
    patch:
      description: Updates multiple transactions, by `id` or `import_id`.
      operationId: updateTransactions
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PatchTransactionsWrapper"
        description: The transactions to update. Each transaction must have either an `id` or `import_id` specified. If `id` is specified as null an `import_id` value can be provided which will allow transaction(s) to be updated by their `import_id`. If an `id` is specified, it will always be used for lookup.
        required: true
      responses:
        "209":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SaveTransactionsResponse"
          description: The transactions were successfully updated
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The request could not be understood due to malformed syntax or validation error(s).
      summary: Update multiple transactions
      tags:
        - Transactions
    post:
      description: Creates a single transaction or multiple transactions.  If you provide a body containing a `transaction` object, a single transaction will be created and if you provide a body containing a `transactions` array, multiple transactions will be created.  Scheduled transactions cannot be created on this endpoint.
      operationId: createTransaction
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PostTransactionsWrapper"
        description: The transaction or transactions to create.  To create a single transaction you can specify a value for the `transaction` object and to create multiple transactions you can specify an array of `transactions`.  It is expected that you will only provide a value for one of these objects.
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SaveTransactionsResponse"
          description: The transaction or transactions were successfully created
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The request could not be understood due to malformed syntax or validation error(s).
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: A transaction on the same account with the same `import_id` already exists.
      summary: Create a single transaction or multiple transactions
      tags:
        - Transactions
  "/budgets/{budget_id}/transactions/bulk":
    post:
      description: Creates multiple transactions.  Although this endpoint is still supported, it is recommended to use 'POST /budgets/{budget_id}/transactions' to create multiple transactions.
      operationId: bulkCreateTransactions
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BulkTransactions"
        description: The list of transactions to create
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BulkResponse"
          description: The bulk request was processed successfully
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The request could not be understood due to malformed syntax or validation error(s)
      summary: Bulk create transactions
      tags:
        - Deprecated
  "/budgets/{budget_id}/transactions/import":
    post:
      description: Imports available transactions on all linked accounts for the given budget.  Linked accounts allow transactions to be imported directly from a specified financial institution and this endpoint initiates that import.  Sending a request to this endpoint is the equivalent of clicking "Import" on each account in the web application or tapping the "New Transactions" banner in the mobile applications.  The response for this endpoint contains the transaction ids that have been imported.
      operationId: importTransactions
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionsImportResponse"
          description: The request was successful but there were no transactions to import
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionsImportResponse"
          description: One or more transactions were imported successfully
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The request could not be understood due to malformed syntax or validation error(s)
      summary: Import transactions
      tags:
        - Transactions
  "/budgets/{budget_id}/transactions/{transaction_id}":
    delete:
      description: Deletes a transaction
      operationId: deleteTransaction
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The id of the transaction
          in: path
          name: transaction_id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionResponse"
          description: The transaction was successfully deleted
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The transaction was not found
      summary: Deletes an existing transaction
      tags:
        - Transactions
    get:
      description: Returns a single transaction
      operationId: getTransactionById
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The id of the transaction
          in: path
          name: transaction_id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionResponse"
          description: The requested transaction
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The transaction was not found
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: Single transaction
      tags:
        - Transactions
    put:
      description: Updates a single transaction
      operationId: updateTransaction
      parameters:
        - description: 'The id of the budget. "last-used" can be used to specify the last used budget and "default" can be used if default budget selection is enabled (see: https://api.ynab.com/#oauth-default-budget).'
          in: path
          name: budget_id
          required: true
          schema:
            type: string
        - description: The id of the transaction
          in: path
          name: transaction_id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PutTransactionWrapper"
        description: The transaction to update
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionResponse"
          description: The transaction was successfully updated
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: The request could not be understood due to malformed syntax or validation error(s)
      summary: Updates an existing transaction
      tags:
        - Transactions
  /user:
    get:
      description: Returns authenticated user information
      operationId: getUser
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserResponse"
          description: The user info
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: An error occurred
      summary: User info
      tags:
        - User
components:
  schemas:
    Account:
      properties:
        balance:
          description: The current balance of the account in milliunits format
          format: int64
          type: integer
        cleared_balance:
          description: The current cleared balance of the account in milliunits format
          format: int64
          type: integer
        closed:
          description: Whether this account is closed or not
          type: boolean
        debt_escrow_amounts:
          $ref: "#/components/schemas/LoanAccountPeriodicValue"
        debt_interest_rates:
          $ref: "#/components/schemas/LoanAccountPeriodicValue"
        debt_minimum_payments:
          $ref: "#/components/schemas/LoanAccountPeriodicValue"
        debt_original_balance:
          description: The original debt/loan account balance, specified in milliunits format.
          format: int64
          type: integer
        deleted:
          description: Whether or not the account has been deleted.  Deleted accounts will only be included in delta requests.
          type: boolean
        direct_import_in_error:
          description: If an account linked to a financial institution (direct_import_linked=true) and the linked connection is not in a healthy state, this will be true.
          type: boolean
        direct_import_linked:
          description: Whether or not the account is linked to a financial institution for automatic transaction import.
          type: boolean
        id:
          format: uuid
          type: string
        last_reconciled_at:
          description: A date/time specifying when the account was last reconciled.
          format: date-time
          type: string
        name:
          type: string
        note:
          type: string
        on_budget:
          description: Whether this account is on budget or not
          type: boolean
        transfer_payee_id:
          description: The payee id which should be used when transferring to this account
          format: uuid
          type: string
        type:
          $ref: "#/components/schemas/AccountType"
        uncleared_balance:
          description: The current uncleared balance of the account in milliunits format
          format: int64
          type: integer
      required:
        - id
        - name
        - type
        - on_budget
        - closed
        - balance
        - cleared_balance
        - uncleared_balance
        - transfer_payee_id
        - deleted
      type: object
    AccountResponse:
      properties:
        data:
          properties:
            account:
              $ref: "#/components/schemas/Account"
          required:
            - account
          type: object
      required:
        - data
      type: object
    AccountType:
      description: The type of account
      enum:
        - checking
        - savings
        - cash
        - creditCard
        - lineOfCredit
        - otherAsset
        - otherLiability
        - mortgage
        - autoLoan
        - studentLoan
        - personalLoan
        - medicalDebt
        - otherDebt
      type: string
    AccountsResponse:
      properties:
        data:
          properties:
            accounts:
              items:
                $ref: "#/components/schemas/Account"
              type: array
            server_knowledge:
              description: The knowledge of the server
              format: int64
              type: integer
          required:
            - accounts
            - server_knowledge
          type: object
      required:
        - data
      type: object
    BudgetDetail:
      allOf:
        - $ref: "#/components/schemas/BudgetSummary"
        - properties:
            accounts:
              items:
                $ref: "#/components/schemas/Account"
              type: array
            categories:
              items:
                $ref: "#/components/schemas/Category"
              type: array
            category_groups:
              items:
                $ref: "#/components/schemas/CategoryGroup"
              type: array
            months:
              items:
                $ref: "#/components/schemas/MonthDetail"
              type: array
            payee_locations:
              items:
                $ref: "#/components/schemas/PayeeLocation"
              type: array
            payees:
              items:
                $ref: "#/components/schemas/Payee"
              type: array
            scheduled_subtransactions:
              items:
                $ref: "#/components/schemas/ScheduledSubTransaction"
              type: array
            scheduled_transactions:
              items:
                $ref: "#/components/schemas/ScheduledTransactionSummary"
              type: array
            subtransactions:
              items:
                $ref: "#/components/schemas/SubTransaction"
              type: array
            transactions:
              items:
                $ref: "#/components/schemas/TransactionSummary"
              type: array
          type: object
    BudgetDetailResponse:
      properties:
        data:
          properties:
            budget:
              $ref: "#/components/schemas/BudgetDetail"
            server_knowledge:
              description: The knowledge of the server
              format: int64
              type: integer
          required:
            - budget
            - server_knowledge
          type: object
      required:
        - data
      type: object
    BudgetSettings:
      properties:
        currency_format:
          $ref: "#/components/schemas/CurrencyFormat"
        date_format:
          $ref: "#/components/schemas/DateFormat"
      required:
        - date_format
        - currency_format
      type: object
    BudgetSettingsResponse:
      properties:
        data:
          properties:
            settings:
              $ref: "#/components/schemas/BudgetSettings"
          required:
            - settings
          type: object
      required:
        - data
      type: object
    BudgetSummary:
      properties:
        accounts:
          description: The budget accounts (only included if `include_accounts=true` specified as query parameter)
          items:
            $ref: "#/components/schemas/Account"
          type: array
        currency_format:
          $ref: "#/components/schemas/CurrencyFormat"
        date_format:
          $ref: "#/components/schemas/DateFormat"
        first_month:
          description: The earliest budget month
          format: date
          type: string
        id:
          format: uuid
          type: string
        last_modified_on:
          description: The last time any changes were made to the budget from either a web or mobile client
          format: date-time
          type: string
        last_month:
          description: The latest budget month
          format: date
          type: string
        name:
          type: string
      required:
        - id
        - name
      type: object
    BudgetSummaryResponse:
      properties:
        data:
          properties:
            budgets:
              items:
                $ref: "#/components/schemas/BudgetSummary"
              type: array
            default_budget:
              $ref: "#/components/schemas/BudgetSummary"
          required:
            - budgets
          type: object
      required:
        - data
      type: object
    BulkResponse:
      properties:
        data:
          properties:
            bulk:
              properties:
                duplicate_import_ids:
                  description: If any Transactions were not created because they had an `import_id` matching a transaction already on the same account, the specified import_id(s) will be included in this list.
                  items:
                    type: string
                  type: array
                transaction_ids:
                  description: The list of Transaction ids that were created.
                  items:
                    type: string
                  type: array
              required:
                - transaction_ids
                - duplicate_import_ids
              type: object
          required:
            - bulk
          type: object
      required:
        - data
      type: object
    BulkTransactions:
      properties:
        transactions:
          items:
            $ref: "#/components/schemas/SaveTransaction"
          type: array
      required:
        - transactions
      type: object
    CategoriesResponse:
      properties:
        data:
          properties:
            category_groups:
              items:
                $ref: "#/components/schemas/CategoryGroupWithCategories"
              type: array
            server_knowledge:
              description: The knowledge of the server
              format: int64
              type: integer
          required:
            - category_groups
            - server_knowledge
          type: object
      required:
        - data
      type: object
    Category:
      properties:
        activity:
          description: Activity amount in milliunits format
          format: int64
          type: integer
        balance:
          description: Balance in milliunits format
          format: int64
          type: integer
        budgeted:
          description: Budgeted amount in milliunits format
          format: int64
          type: integer
        category_group_id:
          format: uuid
          type: string
        deleted:
          description: Whether or not the category has been deleted.  Deleted categories will only be included in delta requests.
          type: boolean
        goal_cadence:
          description: The goal cadence
          format: int32
          type: integer
        goal_cadence_frequency:
          description: The goal cadence frequency
          format: int32
          type: integer
        goal_creation_month:
          description: The month a goal was created
          format: date
          type: string
        goal_day:
          description: The day of the goal
          format: int32
          type: integer
        goal_months_to_budget:
          description: The number of months, including the current month, left in the current goal period.
          format: int32
          type: integer
        goal_overall_funded:
          description: The total amount funded towards the goal within the current goal period.
          format: int64
          type: integer
        goal_overall_left:
          description: The amount of funding still needed to complete the goal within the current goal period.
          format: int64
          type: integer
        goal_percentage_complete:
          description: The percentage completion of the goal
          format: int32
          type: integer
        goal_target:
          description: The goal target amount in milliunits
          format: int64
          type: integer
        goal_target_month:
          description: The original target month for the goal to be completed.  Only some goal types specify this date.
          format: date
          type: string
        goal_type:
          description: The type of goal, if the category has a goal (TB='Target Category Balance', TBD='Target Category Balance by Date', MF='Monthly Funding', NEED='Plan Your Spending')
          enum:
            - TB
            - TBD
            - MF
            - NEED
            - DEBT
            - null
          type: string
        goal_under_funded:
          description: The amount of funding still needed in the current month to stay on track towards completing the goal within the current goal period.  This amount will generally correspond to the 'Underfunded' amount in the web and mobile clients except when viewing a category with a Needed for Spending Goal in a future month.  The web and mobile clients will ignore any funding from a prior goal period when viewing category with a Needed for Spending Goal in a future month.
          format: int64
          type: integer
        hidden:
          description: Whether or not the category is hidden
          type: boolean
        id:
          format: uuid
          type: string
        name:
          type: string
        note:
          type: string
        original_category_group_id:
          description: "DEPRECATED: No longer used.  Value will always be null."
          format: uuid
          type: string
      required:
        - id
        - category_group_id
        - name
        - hidden
        - budgeted
        - activity
        - balance
        - deleted
      type: object
    CategoryGroup:
      properties:
        deleted:
          description: Whether or not the category group has been deleted.  Deleted category groups will only be included in delta requests.
          type: boolean
        hidden:
          description: Whether or not the category group is hidden
          type: boolean
        id:
          format: uuid
          type: string
        name:
          type: string
      required:
        - id
        - name
        - hidden
        - deleted
      type: object
    CategoryGroupWithCategories:
      allOf:
        - $ref: "#/components/schemas/CategoryGroup"
        - properties:
            categories:
              description: Category group categories.  Amounts (budgeted, activity, balance, etc.) are specific to the current budget month (UTC).
              items:
                $ref: "#/components/schemas/Category"
              type: array
          required:
            - categories
          type: object
    CategoryResponse:
      properties:
        data:
          properties:
            category:
              $ref: "#/components/schemas/Category"
          required:
            - category
          type: object
      required:
        - data
      type: object
    CurrencyFormat:
      description: The currency format setting for the budget.  In some cases the format will not be available and will be specified as null.
      properties:
        currency_symbol:
          type: string
        decimal_digits:
          format: int32
          type: integer
        decimal_separator:
          type: string
        display_symbol:
          type: boolean
        example_format:
          type: string
        group_separator:
          type: string
        iso_code:
          type: string
        symbol_first:
          type: boolean
      required:
        - iso_code
        - example_format
        - decimal_digits
        - decimal_separator
        - symbol_first
        - group_separator
        - currency_symbol
        - display_symbol
      type: object
    DateFormat:
      description: The date format setting for the budget.  In some cases the format will not be available and will be specified as null.
      properties:
        format:
          type: string
      required:
        - format
      type: object
    ErrorDetail:
      properties:
        detail:
          type: string
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
        - detail
      type: object
    ErrorResponse:
      properties:
        error:
          $ref: "#/components/schemas/ErrorDetail"
      required:
        - error
      type: object
    HybridTransaction:
      allOf:
        - $ref: "#/components/schemas/TransactionSummary"
        - properties:
            account_name:
              type: string
            category_name:
              description: The name of the category.  If a split transaction, this will be 'Split'.
              type: string
            parent_transaction_id:
              description: For subtransaction types, this is the id of the parent transaction.  For transaction types, this id will be always be null.
              type: string
            payee_name:
              type: string
            type:
              description: Whether the hybrid transaction represents a regular transaction or a subtransaction
              enum:
                - transaction
                - subtransaction
              type: string
          required:
            - type
            - account_name
          type: object
    HybridTransactionsResponse:
      properties:
        data:
          properties:
            server_knowledge:
              description: The knowledge of the server
              format: int64
              type: integer
            transactions:
              items:
                $ref: "#/components/schemas/HybridTransaction"
              type: array
          required:
            - transactions
          type: object
      required:
        - data
      type: object
    LoanAccountPeriodicValue:
      additionalProperties:
        format: int64
        type: integer
      type: object
    MonthDetail:
      allOf:
        - $ref: "#/components/schemas/MonthSummary"
        - properties:
            categories:
              description: The budget month categories.  Amounts (budgeted, activity, balance, etc.) are specific to the {month} parameter specified.
              items:
                $ref: "#/components/schemas/Category"
              type: array
          required:
            - categories
          type: object
    MonthDetailResponse:
      properties:
        data:
          properties:
            month:
              $ref: "#/components/schemas/MonthDetail"
          required:
            - month
          type: object
      required:
        - data
      type: object
    MonthSummariesResponse:
      properties:
        data:
          properties:
            months:
              items:
                $ref: "#/components/schemas/MonthSummary"
              type: array
            server_knowledge:
              description: The knowledge of the server
              format: int64
              type: integer
          required:
            - months
            - server_knowledge
          type: object
      required:
        - data
      type: object
    MonthSummary:
      properties:
        activity:
          description: "The total amount of transactions in the month, excluding those categorized to 'Inflow: Ready to Assign'"
          format: int64
          type: integer
        age_of_money:
          description: The Age of Money as of the month
          format: int32
          type: integer
        budgeted:
          description: The total amount budgeted in the month
          format: int64
          type: integer
        deleted:
          description: Whether or not the month has been deleted.  Deleted months will only be included in delta requests.
          type: boolean
        income:
          description: "The total amount of transactions categorized to 'Inflow: Ready to Assign' in the month"
          format: int64
          type: integer
        month:
          format: date
          type: string
        note:
          type: string
        to_be_budgeted:
          description: The available amount for 'Ready to Assign'
          format: int64
          type: integer
      required:
        - month
        - income
        - budgeted
        - activity
        - to_be_budgeted
        - deleted
      type: object
    PatchMonthCategoryWrapper:
      properties:
        category:
          $ref: "#/components/schemas/SaveMonthCategory"
      required:
        - category
      type: object
    PatchTransactionsWrapper:
      properties:
        transactions:
          items:
            $ref: "#/components/schemas/SaveTransactionWithId"
          type: array
      required:
        - transactions
      type: object
    Payee:
      properties:
        deleted:
          description: Whether or not the payee has been deleted.  Deleted payees will only be included in delta requests.
          type: boolean
        id:
          format: uuid
          type: string
        name:
          type: string
        transfer_account_id:
          description: If a transfer payee, the `account_id` to which this payee transfers to
          type: string
      required:
        - id
        - name
        - deleted
      type: object
    PayeeLocation:
      properties:
        deleted:
          description: Whether or not the payee location has been deleted.  Deleted payee locations will only be included in delta requests.
          type: boolean
        id:
          format: uuid
          type: string
        latitude:
          type: string
        longitude:
          type: string
        payee_id:
          format: uuid
          type: string
      required:
        - id
        - payee_id
        - latitude
        - longitude
        - deleted
      type: object
    PayeeLocationResponse:
      properties:
        data:
          properties:
            payee_location:
              $ref: "#/components/schemas/PayeeLocation"
          required:
            - payee_location
          type: object
      required:
        - data
      type: object
    PayeeLocationsResponse:
      properties:
        data:
          properties:
            payee_locations:
              items:
                $ref: "#/components/schemas/PayeeLocation"
              type: array
          required:
            - payee_locations
          type: object
      required:
        - data
      type: object
    PayeeResponse:
      properties:
        data:
          properties:
            payee:
              $ref: "#/components/schemas/Payee"
          required:
            - payee
          type: object
      required:
        - data
      type: object
    PayeesResponse:
      properties:
        data:
          properties:
            payees:
              items:
                $ref: "#/components/schemas/Payee"
              type: array
            server_knowledge:
              description: The knowledge of the server
              format: int64
              type: integer
          required:
            - payees
            - server_knowledge
          type: object
      required:
        - data
      type: object
    PostAccountWrapper:
      properties:
        account:
          $ref: "#/components/schemas/SaveAccount"
      required:
        - account
      type: object
    PostTransactionsWrapper:
      properties:
        transaction:
          $ref: "#/components/schemas/SaveTransaction"
        transactions:
          items:
            $ref: "#/components/schemas/SaveTransaction"
          type: array
      type: object
    PutTransactionWrapper:
      properties:
        transaction:
          $ref: "#/components/schemas/SaveTransaction"
      required:
        - transaction
      type: object
    SaveAccount:
      properties:
        balance:
          description: The current balance of the account in milliunits format
          format: int64
          type: integer
        name:
          description: The name of the account
          type: string
        type:
          $ref: "#/components/schemas/AccountType"
      required:
        - name
        - type
        - balance
      type: object
    SaveCategoryResponse:
      properties:
        data:
          properties:
            category:
              $ref: "#/components/schemas/Category"
            server_knowledge:
              description: The knowledge of the server
              format: int64
              type: integer
          required:
            - category
            - server_knowledge
          type: object
      required:
        - data
      type: object
    SaveMonthCategory:
      properties:
        budgeted:
          description: Budgeted amount in milliunits format
          format: int64
          type: integer
      required:
        - budgeted
      type: object
    SaveSubTransaction:
      properties:
        amount:
          description: The subtransaction amount in milliunits format.
          format: int64
          type: integer
        category_id:
          description: The category for the subtransaction.  Credit Card Payment categories are not permitted and will be ignored if supplied.
          format: uuid
          type: string
        memo:
          maxLength: 200
          type: string
        payee_id:
          description: The payee for the subtransaction.
          format: uuid
          type: string
        payee_name:
          description: The payee name.  If a `payee_name` value is provided and `payee_id` has a null value, the `payee_name` value will be used to resolve the payee by either (1) a matching payee rename rule (only if import_id is also specified on parent transaction) or (2) a payee with the same name or (3) creation of a new payee.
          maxLength: 50
          type: string
      required:
        - amount
      type: object
    SaveTransaction:
      allOf:
        - required:
            - account_id
            - date
            - amount
        - $ref: "#/components/schemas/SaveTransactionWithOptionalFields"
    SaveTransactionWithId:
      allOf:
        - properties:
            id:
              type: string
          type: object
        - $ref: "#/components/schemas/SaveTransactionWithOptionalFields"
    SaveTransactionWithOptionalFields:
      properties:
        account_id:
          format: uuid
          type: string
        amount:
          description: The transaction amount in milliunits format.  Split transaction amounts cannot be changed and if a different amount is supplied it will be ignored.
          format: int64
          type: integer
        approved:
          description: Whether or not the transaction is approved.  If not supplied, transaction will be unapproved by default.
          type: boolean
        category_id:
          description: The category for the transaction.  To configure a split transaction, you can specify null for `category_id` and provide a `subtransactions` array as part of the transaction object.  If an existing transaction is a split, the `category_id` cannot be changed.  Credit Card Payment categories are not permitted and will be ignored if supplied.
          format: uuid
          type: string
        cleared:
          description: The cleared status of the transaction
          enum:
            - cleared
            - uncleared
            - reconciled
          type: string
        date:
          description: The transaction date in ISO format (e.g. 2016-12-01).  Future dates (scheduled transactions) are not permitted.  Split transaction dates cannot be changed and if a different date is supplied it will be ignored.
          format: date
          type: string
        flag_color:
          description: The transaction flag
          enum:
            - red
            - orange
            - yellow
            - green
            - blue
            - purple
            - null
          type: string
        import_id:
          description: "If specified, the new transaction will be assigned this `import_id` and considered \"imported\".  We will also attempt to match this imported transaction to an existing \"user-entered\" transation on the same account, with the same amount, and with a date +/-10 days from the imported transaction date.<br><br>Transactions imported through File Based Import or Direct Import (not through the API) are assigned an import_id in the format: 'YNAB:[milliunit_amount]:[iso_date]:[occurrence]'. For example, a transaction dated 2015-12-30 in the amount of -$294.23 USD would have an import_id of 'YNAB:-294230:2015-12-30:1'.  If a second transaction on the same account was imported and had the same date and same amount, its import_id would be 'YNAB:-294230:2015-12-30:2'.  Using a consistent format will prevent duplicates through Direct Import and File Based Import.<br><br>If import_id is omitted or specified as null, the transaction will be treated as a \"user-entered\" transaction. As such, it will be eligible to be matched against transactions later being imported (via DI, FBI, or API)."
          maxLength: 36
          type: string
        memo:
          maxLength: 200
          type: string
        payee_id:
          description: The payee for the transaction.  To create a transfer between two accounts, use the account transfer payee pointing to the target account.  Account transfer payees are specified as `tranfer_payee_id` on the account resource.
          format: uuid
          type: string
        payee_name:
          description: The payee name.  If a `payee_name` value is provided and `payee_id` has a null value, the `payee_name` value will be used to resolve the payee by either (1) a matching payee rename rule (only if `import_id` is also specified) or (2) a payee with the same name or (3) creation of a new payee.
          maxLength: 50
          type: string
        subtransactions:
          description: An array of subtransactions to configure a transaction as a split.  Updating `subtransactions` on an existing split transaction is not supported.
          items:
            $ref: "#/components/schemas/SaveSubTransaction"
          type: array
      type: object
    SaveTransactionsResponse:
      properties:
        data:
          properties:
            duplicate_import_ids:
              description: If multiple transactions were specified, a list of import_ids that were not created because of an existing `import_id` found on the same account
              items:
                type: string
              type: array
            server_knowledge:
              description: The knowledge of the server
              format: int64
              type: integer
            transaction:
              $ref: "#/components/schemas/TransactionDetail"
            transaction_ids:
              description: The transaction ids that were saved
              items:
                type: string
              type: array
            transactions:
              description: If multiple transactions were specified, the transactions that were saved
              items:
                $ref: "#/components/schemas/TransactionDetail"
              type: array
          required:
            - transaction_ids
            - server_knowledge
          type: object
      required:
        - data
      type: object
    ScheduledSubTransaction:
      properties:
        amount:
          description: The scheduled subtransaction amount in milliunits format
          format: int64
          type: integer
        category_id:
          format: uuid
          type: string
        deleted:
          description: Whether or not the scheduled subtransaction has been deleted.  Deleted scheduled subtransactions will only be included in delta requests.
          type: boolean
        id:
          format: uuid
          type: string
        memo:
          type: string
        payee_id:
          format: uuid
          type: string
        scheduled_transaction_id:
          format: uuid
          type: string
        transfer_account_id:
          description: If a transfer, the account_id which the scheduled subtransaction transfers to
          format: uuid
          type: string
      required:
        - id
        - scheduled_transaction_id
        - amount
        - deleted
      type: object
    ScheduledTransactionDetail:
      allOf:
        - $ref: "#/components/schemas/ScheduledTransactionSummary"
        - properties:
            account_name:
              type: string
            category_name:
              description: The name of the category.  If a split scheduled transaction, this will be 'Split'.
              type: string
            payee_name:
              type: string
            subtransactions:
              description: If a split scheduled transaction, the subtransactions.
              items:
                $ref: "#/components/schemas/ScheduledSubTransaction"
              type: array
          required:
            - account_name
            - subtransactions
          type: object
    ScheduledTransactionResponse:
      properties:
        data:
          properties:
            scheduled_transaction:
              $ref: "#/components/schemas/ScheduledTransactionDetail"
          required:
            - scheduled_transaction
          type: object
      required:
        - data
      type: object
    ScheduledTransactionSummary:
      properties:
        account_id:
          format: uuid
          type: string
        amount:
          description: The scheduled transaction amount in milliunits format
          format: int64
          type: integer
        category_id:
          format: uuid
          type: string
        date_first:
          description: The first date for which the Scheduled Transaction was scheduled.
          format: date
          type: string
        date_next:
          description: The next date for which the Scheduled Transaction is scheduled.
          format: date
          type: string
        deleted:
          description: Whether or not the scheduled transaction has been deleted.  Deleted scheduled transactions will only be included in delta requests.
          type: boolean
        flag_color:
          description: The scheduled transaction flag
          enum:
            - red
            - orange
            - yellow
            - green
            - blue
            - purple
            - null
          type: string
        frequency:
          enum:
            - never
            - daily
            - weekly
            - everyOtherWeek
            - twiceAMonth
            - every4Weeks
            - monthly
            - everyOtherMonth
            - every3Months
            - every4Months
            - twiceAYear
            - yearly
            - everyOtherYear
          type: string
        id:
          format: uuid
          type: string
        memo:
          type: string
        payee_id:
          format: uuid
          type: string
        transfer_account_id:
          description: If a transfer, the account_id which the scheduled transaction transfers to
          format: uuid
          type: string
      required:
        - id
        - date_first
        - date_next
        - frequency
        - amount
        - account_id
        - deleted
      type: object
    ScheduledTransactionsResponse:
      properties:
        data:
          properties:
            scheduled_transactions:
              items:
                $ref: "#/components/schemas/ScheduledTransactionDetail"
              type: array
            server_knowledge:
              description: The knowledge of the server
              format: int64
              type: integer
          required:
            - scheduled_transactions
            - server_knowledge
          type: object
      required:
        - data
      type: object
    SubTransaction:
      properties:
        amount:
          description: The subtransaction amount in milliunits format
          format: int64
          type: integer
        category_id:
          format: uuid
          type: string
        category_name:
          type: string
        deleted:
          description: Whether or not the subtransaction has been deleted.  Deleted subtransactions will only be included in delta requests.
          type: boolean
        id:
          type: string
        memo:
          type: string
        payee_id:
          format: uuid
          type: string
        payee_name:
          type: string
        transaction_id:
          type: string
        transfer_account_id:
          description: If a transfer, the account_id which the subtransaction transfers to
          format: uuid
          type: string
        transfer_transaction_id:
          description: If a transfer, the id of transaction on the other side of the transfer
          type: string
      required:
        - id
        - transaction_id
        - amount
        - deleted
      type: object
    TransactionDetail:
      allOf:
        - $ref: "#/components/schemas/TransactionSummary"
        - properties:
            account_name:
              type: string
            category_name:
              description: The name of the category.  If a split transaction, this will be 'Split'.
              type: string
            payee_name:
              type: string
            subtransactions:
              description: If a split transaction, the subtransactions.
              items:
                $ref: "#/components/schemas/SubTransaction"
              type: array
          required:
            - account_name
            - subtransactions
          type: object
    TransactionResponse:
      properties:
        data:
          properties:
            transaction:
              $ref: "#/components/schemas/TransactionDetail"
          required:
            - transaction
          type: object
      required:
        - data
      type: object
    TransactionSummary:
      properties:
        account_id:
          format: uuid
          type: string
        amount:
          description: The transaction amount in milliunits format
          format: int64
          type: integer
        approved:
          description: Whether or not the transaction is approved
          type: boolean
        category_id:
          format: uuid
          type: string
        cleared:
          description: The cleared status of the transaction
          enum:
            - cleared
            - uncleared
            - reconciled
          type: string
        date:
          description: The transaction date in ISO format (e.g. 2016-12-01)
          format: date
          type: string
        debt_transaction_type:
          description: If the transaction is a debt/loan account transaction, the type of transaction
          enum:
            - payment
            - refund
            - fee
            - interest
            - escrow
            - balancedAdjustment
            - credit
            - charge
            - null
          type: string
        deleted:
          description: Whether or not the transaction has been deleted.  Deleted transactions will only be included in delta requests.
          type: boolean
        flag_color:
          description: The transaction flag
          enum:
            - red
            - orange
            - yellow
            - green
            - blue
            - purple
            - null
          type: string
        id:
          type: string
        import_id:
          description: "If the transaction was imported, this field is a unique (by account) import identifier.  If this transaction was imported through File Based Import or Direct Import and not through the API, the import_id will have the format: 'YNAB:[milliunit_amount]:[iso_date]:[occurrence]'.  For example, a transaction dated 2015-12-30 in the amount of -$294.23 USD would have an import_id of 'YNAB:-294230:2015-12-30:1'.  If a second transaction on the same account was imported and had the same date and same amount, its import_id would be 'YNAB:-294230:2015-12-30:2'."
          type: string
        import_payee_name:
          description: If the transaction was imported, the payee name that was used when importing and before applying any payee rename rules
          type: string
        import_payee_name_original:
          description: If the transaction was imported, the original payee name as it appeared on the statement
          type: string
        matched_transaction_id:
          description: If transaction is matched, the id of the matched transaction
          type: string
        memo:
          type: string
        payee_id:
          format: uuid
          type: string
        transfer_account_id:
          description: If a transfer transaction, the account to which it transfers
          format: uuid
          type: string
        transfer_transaction_id:
          description: If a transfer transaction, the id of transaction on the other side of the transfer
          type: string
      required:
        - id
        - date
        - amount
        - cleared
        - approved
        - account_id
        - deleted
      type: object
    TransactionsImportResponse:
      properties:
        data:
          properties:
            transaction_ids:
              description: The list of transaction ids that were imported.
              items:
                type: string
              type: array
          required:
            - transaction_ids
          type: object
      required:
        - data
      type: object
    TransactionsResponse:
      properties:
        data:
          properties:
            server_knowledge:
              description: The knowledge of the server
              format: int64
              type: integer
            transactions:
              items:
                $ref: "#/components/schemas/TransactionDetail"
              type: array
          required:
            - transactions
            - server_knowledge
          type: object
      required:
        - data
      type: object
    User:
      properties:
        id:
          format: uuid
          type: string
      required:
        - id
      type: object
    UserResponse:
      properties:
        data:
          properties:
            user:
              $ref: "#/components/schemas/User"
          required:
            - user
          type: object
      required:
        - data
      type: object
  securitySchemes:
    bearer:
      in: header
      name: Authorization
      type: apiKey
