> ## Documentation Index
> Fetch the complete documentation index at: https://developers.thinkout.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Sintetizează previziunile

> Totaluri peste previziunile cu dată, pe interval de timp și cel mult încă o dimensiune. Trimite `period`, sau atât `from`, cât și `to`.

`amount` însumează ce a fost planificat, iar `remaining_amount` partea neacoperită încă de tranzacții. Se numără orice stare dacă `status` nu restrânge, așa că o previziune realizată se adaugă la `amount` și nu adaugă nimic la `remaining_amount`. Sumele se convertesc în `currency` la cursul din data fiecărei previziuni. Intervalele sunt aliniate la calendar și tăiate la fereastra cerută. `totals` acoperă întreaga fereastră.

Rândurile grupate sunt ordonate după `amount` în valoare absolută, cel mai mare primul. Un interval păstrează cel mult 50 de grupuri; restul se strâng într-un singur rând etichetat `other`. Previziunile fără partener sau fără etichetă ajung într-un rând `none`, iar o previziune cu mai multe etichete se numără o dată pentru fiecare etichetă. Aici `category_id` acoperă și subcategoriile.



## OpenAPI

````yaml /openapi/v1.ro.yaml get /forecasts/summary
openapi: 3.1.0
info:
  title: ThinkOut API
  version: '1.0'
  description: >-
    Acces de citire la datele unui spațiu de lucru ThinkOut.


    În versiunea 1 fiecare endpoint este un `GET`. Listele folosesc același
    înveliș și se paginează cu un cursor oriunde pot crește. Fiecare răspuns
    poartă `X-RateLimit-Limit`, `X-RateLimit-Remaining` și `X-RateLimit-Reset`.


    Versiunea 1 se schimbă doar prin adăugare: pot apărea oricând endpointuri
    noi, parametri opționali, câmpuri de răspuns și valori de enumerare.
    Tolerează câmpurile necunoscute și nu trata niciodată o enumerare ca
    închisă.
  contact:
    name: Suport ThinkOut
    url: https://developers.thinkout.io/guides/support
servers:
  - url: https://api.thinkout.io/v1
security:
  - apiKey: []
tags:
  - name: Bănci
    description: Conexiunile bancare ale spațiului de lucru și starea fiecăreia.
  - name: Conturi
    description: Conturi manuale, sincronizate cu banca și delegate, cu solduri calculate.
  - name: Tranzacții
    description: Mișcări înregistrate și în așteptare pe conturile spațiului de lucru.
  - name: Categorii
    description: Arborele de categorii al spațiului de lucru, pe direcție și activitate.
  - name: Parteneri
    description: >-
      Clienții și furnizorii cărora le sunt atribuite tranzacțiile și
      previziunile.
  - name: Etichete
    description: Etichete libere, grupate pe tipuri.
  - name: Previziuni
    description: Încasări și plăți planificate și tranzacțiile care le-au realizat.
  - name: Rapoarte
    description: >-
      Totaluri, nu rânduri. Sinteze peste tranzacții, previziuni și cash flow,
      plus soldurile pe conturi.
paths:
  /forecasts/summary:
    get:
      tags:
        - Rapoarte
      summary: Sintetizează previziunile
      description: >-
        Totaluri peste previziunile cu dată, pe interval de timp și cel mult
        încă o dimensiune. Trimite `period`, sau atât `from`, cât și `to`.


        `amount` însumează ce a fost planificat, iar `remaining_amount` partea
        neacoperită încă de tranzacții. Se numără orice stare dacă `status` nu
        restrânge, așa că o previziune realizată se adaugă la `amount` și nu
        adaugă nimic la `remaining_amount`. Sumele se convertesc în `currency`
        la cursul din data fiecărei previziuni. Intervalele sunt aliniate la
        calendar și tăiate la fereastra cerută. `totals` acoperă întreaga
        fereastră.


        Rândurile grupate sunt ordonate după `amount` în valoare absolută, cel
        mai mare primul. Un interval păstrează cel mult 50 de grupuri; restul se
        strâng într-un singur rând etichetat `other`. Previziunile fără partener
        sau fără etichetă ajung într-un rând `none`, iar o previziune cu mai
        multe etichete se numără o dată pentru fiecare etichetă. Aici
        `category_id` acoperă și subcategoriile.
      operationId: summariseForecasts
      parameters:
        - $ref: '#/components/parameters/period'
        - name: from
          in: query
          description: >-
            Prima zi a ferestrei, inclusiv. Obligatoriu împreună cu `to`, dacă
            nu este trimis `period`.
          schema:
            type: string
            format: date
        - name: to
          in: query
          description: >-
            Ultima zi a ferestrei, inclusiv. Obligatoriu împreună cu `from`,
            dacă nu este trimis `period`.
          schema:
            type: string
            format: date
        - $ref: '#/components/parameters/interval'
        - name: group_by
          in: query
          description: >-
            O a doua dimensiune de grupare, pe lângă intervalul de timp. Omite-o
            pentru un singur rând per interval.
          schema:
            $ref: '#/components/schemas/ForecastGroupDimension'
        - $ref: '#/components/parameters/currency'
        - $ref: '#/components/parameters/category_id'
        - $ref: '#/components/parameters/label_id'
        - $ref: '#/components/parameters/counterparty_id'
        - $ref: '#/components/parameters/direction'
        - $ref: '#/components/parameters/activity'
        - name: status
          in: query
          schema:
            $ref: '#/components/schemas/ForecastStatus'
      responses:
        '200':
          description: Sinteza.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForecastSummary'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/RequestTooLarge'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    period:
      name: period
      in: query
      description: >-
        O fereastră cu nume, rezolvată față de ziua locală a spațiului de lucru
        și întoarsă în răspuns. Are prioritate față de `from` și `to`.
      schema:
        $ref: '#/components/schemas/PeriodMacro'
    interval:
      name: interval
      in: query
      description: Intervalul de timp în care sunt grupate rândurile.
      schema:
        $ref: '#/components/schemas/Interval'
    currency:
      name: currency
      in: query
      description: >-
        Moneda în care se raportează. Implicit moneda spațiului de lucru. Un cod
        necunoscut este respins.
      schema:
        $ref: '#/components/schemas/Currency'
    category_id:
      name: category_id
      in: query
      description: >-
        Doar rândurile din aceste categorii. Separate prin virgulă pentru mai
        multe. Pe `/transactions` se potrivește și cu o tranzacție împărțită ale
        cărei bucăți sunt în una dintre ele. Subcategoriile sunt incluse doar pe
        sinteze.
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
          format: uuid
    label_id:
      name: label_id
      in: query
      description: >-
        Doar rândurile care poartă cel puțin una dintre aceste etichete.
        Separate prin virgulă pentru mai multe.
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
          format: uuid
    counterparty_id:
      name: counterparty_id
      in: query
      description: >-
        Doar rândurile atribuite acestor parteneri. Separate prin virgulă pentru
        mai multe.
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
          format: uuid
    direction:
      name: direction
      in: query
      schema:
        $ref: '#/components/schemas/Direction'
    activity:
      name: activity
      in: query
      description: >-
        Doar rândurile a căror categorie se află în aceste secțiuni ale
        situației fluxurilor de numerar. Separate prin virgulă pentru mai multe.
      style: form
      explode: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/Activity'
  schemas:
    ForecastGroupDimension:
      type: string
      description: >-
        La fel ca `GroupDimension`, plus statusul previziunii. Previziunile nu
        au cont.
      enum:
        - category
        - counterparty
        - label
        - activity
        - direction
        - status
    ForecastStatus:
      type: string
      description: >-
        `realised` este completă. `partial` are tranzacții asociate. `overdue`
        are data înainte de azi și niciuna. `planned` are data azi sau mai
        târziu și niciuna.
      enum:
        - planned
        - overdue
        - partial
        - realised
    ForecastSummary:
      type: object
      required:
        - object
        - period
        - conversion
        - group_by
        - has_data
        - totals
        - data
      properties:
        object:
          type: string
          const: forecast_summary
        period:
          $ref: '#/components/schemas/ResolvedPeriod'
        conversion:
          $ref: '#/components/schemas/Conversion'
        group_by:
          oneOf:
            - $ref: '#/components/schemas/ForecastGroupDimension'
            - type: 'null'
        has_data:
          type: boolean
          description: '`false` când nicio previziune nu s-a potrivit.'
        totals:
          $ref: '#/components/schemas/ForecastSummaryTotals'
        data:
          type: array
          items:
            $ref: '#/components/schemas/ForecastSummaryRow'
    PeriodMacro:
      type: string
      description: >-
        O fereastră cu nume, rezolvată pe server. `last_30_days` și
        `last_90_days` se termină azi și includ ziua de azi; `last_12_months`
        începe în ziua de după azi minus douăsprezece luni. `next_month`,
        `next_quarter` și `next_year` acoperă întreaga lună, întregul trimestru
        sau întregul an calendaristic următor.
      enum:
        - this_month
        - last_month
        - this_quarter
        - last_quarter
        - this_year
        - last_year
        - month_to_date
        - quarter_to_date
        - year_to_date
        - last_30_days
        - last_90_days
        - last_12_months
        - next_month
        - next_quarter
        - next_year
    Interval:
      type: string
      description: Intervalul de timp pentru rândurile unui raport.
      enum:
        - day
        - week
        - month
      default: month
    Currency:
      type: string
      description: Cod de monedă alfabetic ISO 4217.
      pattern: ^[A-Z]{3}$
      example: RON
    Direction:
      type: string
      description: >-
        Dacă banii intră sau ies. Pe o tranzacție sau o previziune urmează
        semnul lui `amount`.
      enum:
        - inflow
        - outflow
    Activity:
      type: string
      description: >-
        Secțiunea din situația fluxurilor de numerar căreia îi aparține
        categoria.
      enum:
        - operating
        - investing
        - financing
    ResolvedPeriod:
      type: object
      description: Fereastra efectiv calculată.
      required:
        - from
        - to
        - macro
        - interval
      properties:
        from:
          type: string
          format: date
        to:
          type: string
          format: date
        macro:
          oneOf:
            - $ref: '#/components/schemas/PeriodMacro'
            - type: 'null'
          description: >-
            Macrocomanda care a produs aceste date, sau `null` când au fost
            trimise direct.
        interval:
          $ref: '#/components/schemas/Interval'
    Conversion:
      type: object
      description: Ce s-a făcut pentru ca sumele să fie comparabile.
      required:
        - applied
        - currency
        - basis
      properties:
        applied:
          type: boolean
          description: '`false` când toate sumele erau deja în `currency`.'
        currency:
          $ref: '#/components/schemas/Currency'
        basis:
          type: string
          description: >-
            `transaction_date` convertește fiecare mișcare la cursul din data
            ei. `balance_date` convertește un sold întreg la un singur curs.
            `none` când nu s-a convertit nimic.
          enum:
            - transaction_date
            - balance_date
            - none
    ForecastSummaryTotals:
      type: object
      description: Întreaga fereastră însumată, peste aceleași previziuni ca rândurile.
      required:
        - currency
        - amount
        - remaining_amount
        - count
      properties:
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          $ref: '#/components/schemas/Money'
          description: Total planificat.
        remaining_amount:
          $ref: '#/components/schemas/Money'
          description: Total neacoperit încă de tranzacții.
        count:
          type: integer
    ForecastSummaryRow:
      type: object
      required:
        - period_start
        - period_end
        - group
        - currency
        - amount
        - remaining_amount
        - count
      properties:
        period_start:
          type: string
          format: date
        period_end:
          type: string
          format: date
        group:
          oneOf:
            - $ref: '#/components/schemas/ReportGroup'
            - type: 'null'
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          $ref: '#/components/schemas/Money'
          description: Total planificat.
        remaining_amount:
          $ref: '#/components/schemas/Money'
          description: Total neacoperit încă de tranzacții.
        count:
          type: integer
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - code
            - message
            - param
            - request_id
          properties:
            type:
              type: string
              enum:
                - invalid_request
                - authentication
                - not_found
                - rate_limit
                - server
            code:
              type: string
              description: >-
                Motiv stabil, citibil de o mașină. Ramifică pe acesta, nu pe
                `message`. Unul dintre `invalid_parameter`, `invalid_cursor`,
                `limit_out_of_range`, `invalid_expand`, `as_of_in_future`,
                `unauthorized`, `forbidden`, `resource_not_found`,
                `too_many_groups`, `period_too_long`, `rate_limited`,
                `internal_error`.
            message:
              type: string
              description: >-
                Explicație pentru oameni, în engleză. Formularea se poate
                schimba.
            param:
              type:
                - string
                - 'null'
              description: Parametrul de query vinovat, când există unul.
            request_id:
              type: string
              description: Menționează-l când contactezi suportul.
    Money:
      type: string
      description: >-
        Sumă zecimală ca șir de caractere, cu două decimale. Negativ înseamnă
        ieșire la tranzacții, previziuni și cifre din rapoarte.
      pattern: ^-?[0-9]+\.[0-9]{2}$
      example: '-1250.00'
    ReportGroup:
      type: object
      description: >-
        După ce este grupat un rând de raport. `null` la rândurile grupate doar
        pe interval.
      required:
        - dimension
        - id
        - label
      properties:
        dimension:
          type: string
          example: category
        id:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            Identificatorul obiectului grupat, al activității pentru `activity`.
            `null` pentru `direction` și `status`, și pentru rândurile `none` și
            `other`.
        label:
          type: string
          description: >-
            Numele grupului. Grupurile care nu sunt obiecte sunt coduri cu
            litere mici pe fiecare sinteză: `inflow` sau `outflow`, un cod de
            activitate precum `operating`, o stare de previziune precum
            `planned`, și `none` sau `other`.
          example: Telecom
  responses:
    BadRequest:
      description: Un parametru este invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request
              code: invalid_parameter
              message: direction must be 'inflow' or 'outflow'
              param: direction
              request_id: 0HNF8K3QJL2VM:00000001
    Unauthorized:
      description: Cheia API lipsește, este malformată, necunoscută sau revocată.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: authentication
              code: unauthorized
              message: Missing, malformed, unknown or revoked API key
              param: null
              request_id: 0HNF8K3QJL2VM:00000001
    Forbidden:
      description: Cheia este validă, dar planul ThinkOut al companiei nu include API-ul.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: authentication
              code: forbidden
              message: >-
                The API is not included in this company's ThinkOut plan. Contact
                support@thinkout.io to enable it.
              param: null
              request_id: 0HNF8K3QJL2VM:00000001
    RequestTooLarge:
      description: >-
        Raportul ar depăși 1000 de rânduri. `period_too_long` apare doar din
        fereastră și interval, `too_many_groups` după grupare. Restrânge
        fereastra, folosește un interval mai mare sau adaugă filtre.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request
              code: too_many_groups
              message: >-
                Grouping by counterparty over this period produces 1240 groups.
                The maximum is 1000. Narrow the period or the filters.
              param: group_by
              request_id: 0HNF8K3QJL2VM:00000001
    RateLimited:
      description: >-
        Peste 120 de cereri în minutul curent pentru această cheie. Așteaptă
        secundele din `Retry-After`.
      headers:
        Retry-After:
          schema:
            type: integer
          description: Secunde până se resetează fereastra de un minut.
        X-RateLimit-Limit:
          schema:
            type: integer
          description: Cereri permise pe minut.
        X-RateLimit-Remaining:
          schema:
            type: integer
          description: Cereri rămase în minutul curent.
        X-RateLimit-Reset:
          schema:
            type: integer
          description: Secunde până se resetează fereastra de un minut.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: rate_limit
              code: rate_limited
              message: Too many requests
              param: null
              request_id: 0HNF8K3QJL2VM:00000001
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        O cheie API creată în setările ThinkOut. O cheie citește un singur
        spațiu de lucru.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.