> ## 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.

# Listează categoriile

> Întoarce arborele de categorii aplatizat, în ordinea în care îl afișează ThinkOut: încasările mai întâi, apoi plățile, iar în fiecare direcție fiecare categorie de nivel superior urmată imediat de copiii ei. Categoriile de pe același nivel urmează `position`. Citită de sus în jos, pagina redă așadar ecranul de categorii al produsului. `direction` restrânge la unul dintre cele două panouri.

Reconstruiește ierarhia cu `parent_id` și resortează după `position` în cadrul fiecărui `parent_id` dacă ai nevoie din nou de ordine după ce ai stocat rândurile.

Arborele are exact două niveluri. O categorie cu `parent_id` nu are niciodată copii proprii, iar ambele niveluri pot apărea pe o tranzacție. `direction` și `activity` ale unui copil coincid întotdeauna cu ale rădăcinii lui.



## OpenAPI

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


    În versiunea 1 fiecare endpoint este un `GET`. Listele folosesc același
    înveliș de răspuns și se paginează cu un cursor oriunde lista poate crește.


    Versiunea 1 se schimbă doar prin adăugare. Pot apărea oricând endpointuri
    noi, parametri opționali noi, câmpuri noi în răspuns și valori noi de
    enumerare, așa că tolerați câmpurile necunoscute și nu tratați niciodată o
    enumerare ca pe o mulțime î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 și previziuni, plus
      rapoartele de cash flow salvate în spațiul de lucru.
paths:
  /categories:
    get:
      tags:
        - Categorii
      summary: Listează categoriile
      description: >-
        Întoarce arborele de categorii aplatizat, în ordinea în care îl afișează
        ThinkOut: încasările mai întâi, apoi plățile, iar în fiecare direcție
        fiecare categorie de nivel superior urmată imediat de copiii ei.
        Categoriile de pe același nivel urmează `position`. Citită de sus în
        jos, pagina redă așadar ecranul de categorii al produsului. `direction`
        restrânge la unul dintre cele două panouri.


        Reconstruiește ierarhia cu `parent_id` și resortează după `position` în
        cadrul fiecărui `parent_id` dacă ai nevoie din nou de ordine după ce ai
        stocat rândurile.


        Arborele are exact două niveluri. O categorie cu `parent_id` nu are
        niciodată copii proprii, iar ambele niveluri pot apărea pe o tranzacție.
        `direction` și `activity` ale unui copil coincid întotdeauna cu ale
        rădăcinii lui.
      operationId: listCategories
      parameters:
        - $ref: '#/components/parameters/direction'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/cursor'
      responses:
        '200':
          description: O pagină de categorii.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/List'
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/Category'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    direction:
      name: direction
      in: query
      schema:
        $ref: '#/components/schemas/Direction'
    limit:
      name: limit
      in: query
      description: Dimensiunea paginii.
      schema:
        type: integer
        minimum: 1
        maximum: 500
        default: 100
    cursor:
      name: cursor
      in: query
      description: Token opac din `next_cursor` al paginii anterioare.
      schema:
        type: string
  schemas:
    List:
      type: object
      required:
        - object
        - data
        - has_more
        - next_cursor
      properties:
        object:
          type: string
          const: list
        data:
          type: array
          items: {}
        has_more:
          type: boolean
          description: Dacă mai există o pagină.
        next_cursor:
          type:
            - string
            - 'null'
          description: >-
            Trimite-l ca `cursor` pentru pagina următoare. `null` pe ultima
            pagină.
    Category:
      type: object
      required:
        - object
        - id
        - name
        - code
        - direction
        - activity
        - parent_id
        - position
        - color
        - created_at
        - updated_at
      properties:
        object:
          type: string
          const: category
        id:
          type: string
          format: uuid
        name:
          type: string
          example: Telecom
        code:
          type:
            - string
            - 'null'
          description: >-
            Identificatorul categoriei în șablonul din care a fost creat acest
            spațiu de lucru. `null` pentru o categorie creată de cineva.


            Doar `uncategorized_inflows` și `uncategorized_outflows` merită
            tratate special. Ele marchează cele două categorii în care stau
            banii neclasificați, există în fiecare spațiu de lucru, iar ThinkOut
            refuză să le șteargă. Orice alt cod depinde de șablonul folosit.
          example: uncategorized_outflows
        direction:
          $ref: '#/components/schemas/Direction'
        activity:
          $ref: '#/components/schemas/Activity'
        parent_id:
          type:
            - string
            - 'null'
          format: uuid
          description: '`null` pentru categoriile de nivel superior.'
        position:
          type: integer
          description: Ordinea între categoriile de pe același nivel, ca în ThinkOut.
        color:
          type:
            - string
            - 'null'
          description: Culoare hex cu litere mici, ca în ThinkOut.
          pattern: ^#[0-9a-f]{6}$
          example: '#1b7fe4'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      example:
        object: category
        id: 3b4c5d6e-7f80-4a1b-9c2d-3e4f5a6b7c8d
        name: Telecom
        code: null
        direction: outflow
        activity: operating
        parent_id: 6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d
        position: 2
        color: '#1b7fe4'
        created_at: '2024-01-01T10:00:00Z'
        updated_at: '2024-01-01T10:00:00Z'
    Direction:
      type: string
      description: >-
        Dacă banii intră sau ies. Pe o tranzacție sau pe o previziune urmează
        semnul lui `amount` și nu îl poate contrazice niciodată. Există ca
        răspunsurile să poată fi grupate și citite fără să inspectezi semnele.
      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
    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`. Codurile specifice rapoartelor sunt
                `too_many_groups`, `period_too_long`, `as_of_in_future` și
                `invalid_expand`.
            message:
              type: string
              description: >-
                Explicație pentru oameni, în engleză. Formularea se poate
                schimba.
            param:
              type:
                - string
                - 'null'
              description: Parametrul de query sau de cale vinovat, când există unul.
            request_id:
              type: string
              description: Menționează-l când contactezi suportul.
  responses:
    BadRequest:
      description: Un parametru este invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request
              code: invalid_parameter
              message: Parameter 'from' must be a date in YYYY-MM-DD format.
              param: from
              request_id: req_01J8ZT4Q7Y6M3K
    Unauthorized:
      description: Cheia API lipsește, este necunoscută sau revocată.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: authentication
              code: unauthorized
              message: Invalid API key.
              param: null
              request_id: req_01J8ZT4Q7Y6M3K
    RateLimited:
      description: Prea multe cereri. Așteaptă numărul de secunde din `Retry-After`.
      headers:
        Retry-After:
          schema:
            type: integer
          description: Secunde de așteptat înainte de a reîncerca.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: rate_limit
              code: rate_limited
              message: Rate limit exceeded. Retry after 12 seconds.
              param: null
              request_id: req_01J8ZT4Q7Y6M3K
  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.

````