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

# Export products

> Exports the organization's products as a CSV or XLSX file.

Any member of the organization can export. Choose the file format with the required `type` query parameter: `?type=csv` answers a UTF-8 CSV file, `?type=xlsx` an Excel workbook returned base64-encoded. The file lists every product of the organization, with no filters, and has one row per product with its name, description, value, SKU code, type, status and creation and last update dates. The headers and the type and status values are in Portuguese (`Produto` or `Serviço`, `Ativo` or `Desativado`). The `Valor` column is the price in reais, not in centavos like the `value` of the API, written the Brazilian way as text: a product whose `value` is `2500` shows `25,00` and one whose `value` is `150000` shows `1.500,00`. The dates are `DD/MM/YYYY HH:mm` in Brasília time. An organization with no products gets a file with the header row and one blank row, whose `Valor` reads `0,00`.

The file is sent as an attachment named `products-report-<timestamp>.csv` or `.xlsx`. A file of more than 50,000 rows or 4 MiB is refused.


## OpenAPI

````yaml /api-reference/registry.openapi.json get /realms/{realmId}/organizations/{organizationId}/products/report
openapi: 3.0.3
info:
  title: Registry
  version: 1.0.0
  description: >-
    Portão 3 registry API. Every endpoint requires a bearer token in the
    Authorization header (Authorization: Bearer <token>) unless its page states
    otherwise; see the Authentication guide. That requirement is not repeated
    per endpoint. Generated by tools/openapi from code (routes + security) and
    the hand-written spec (request/response bodies). Confidence tiers:
    generated:typed=37 copied:manual=0 unknown=0.
servers:
  - url: https://api.registry.v2.portao3.com.br/
    description: production
  - url: https://api.registry.dev.3pers.com.br/
    description: development
security: []
tags:
  - name: Customers
  - name: Companies
  - name: People
  - name: Products
  - name: Suppliers
paths:
  /realms/{realmId}/organizations/{organizationId}/products/report:
    get:
      tags:
        - Products
      summary: Export products
      description: Exports the organization's products as a CSV or XLSX file.
      operationId: getRealmsByRealmIdOrganizationsByOrganizationIdProductsReport
      parameters:
        - name: realmId
          in: path
          required: true
          description: |-
            ID of your realm.

            Format: `UUID`
          schema:
            type: string
            format: uuid
          example: f495ff0c-ab54-4f99-8e92-ca8682e4de9b
        - name: organizationId
          in: path
          required: true
          description: |-
            ID of the organization whose products you want to export.

            Format: `UUID`
          schema:
            type: string
            format: uuid
          example: c4bd3f21-dfbd-44e8-8055-68ba15bed410
        - name: type
          in: query
          required: true
          description: >-
            The file format: `csv` for a UTF-8 CSV file, `xlsx` for an Excel
            workbook returned base64-encoded.
          schema:
            type: string
            enum:
              - csv
              - xlsx
          example: csv
      responses:
        '200':
          description: >-
            `application/csv` — The products as a UTF-8 CSV file, when
            `?type=csv`.


            `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`
            — The Excel workbook, base64-encoded, when `?type=xlsx`. It is
            always base64: this export has no switch for raw bytes.
          content:
            application/csv:
              schema:
                type: string
                description: The products as a UTF-8 CSV file, when `?type=csv`.
            application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
              schema:
                type: string
                format: byte
                description: >-
                  The Excel workbook, base64-encoded, when `?type=xlsx`. It is
                  always base64: this export has no switch for raw bytes.
        '400':
          description: >-
            `INVALID_TYPE` — The `type` query parameter is missing or is neither
            `csv` nor `xlsx`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - INVALID_TYPE
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - REGISTRY
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: INVALID_TYPE
                origin: REGISTRY
                message: Invalid type
        '422':
          description: >-
            `BAD_REQUEST` — A path parameter is invalid; `fields` lists each
            one.


            `EXPORT_TOO_LARGE` — The catalog is too big for one file: more than
            50,000 products, or a file over 4 MiB. The export has no filters to
            narrow.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - BAD_REQUEST
                      - EXPORT_TOO_LARGE
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - REGISTRY
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                  fields:
                    type: array
                    description: >-
                      One entry per invalid request field (validation errors
                      only).
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                          description: >-
                            Path of the invalid field, e.g. `label` or
                            `values[0].value`.
                          example: label
                        message:
                          type: string
                          description: Why the field was rejected.
                          example: label is required
                        code:
                          type: string
                          description: >-
                            `<FIELD>_<REASON>` — e.g. `LABEL_REQUIRED`,
                            `TYPE_ONE_OF`, `VALUES_VALUE_TYPE_ERROR`.
                          example: LABEL_REQUIRED
                        values:
                          type: array
                          items:
                            type: string
                          description: >-
                            The accepted values, when the field is an
                            enumeration.
                      required:
                        - field
                        - message
                        - code
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: BAD_REQUEST
                origin: REGISTRY
                message: >-
                  Bad Request: Your request is invalid or incomplete. Please
                  make sure you are requesting with the right fields.
                fields:
                  - field: type
                    message: 'Invalid option: expected one of "csv"|"xlsx"'
                    code: TYPE_ONE_OF
                    values:
                      - csv
                      - xlsx

````

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