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

# Propose institutions from Midaz

> Proposes one institution per live Midaz organization that no institution of the tenant covers yet: none holds its CNPJ, and none names its id in the scope of the data source holding Midaz's organization table. The name is the legal name and the CNPJ the legal document, which Midaz does not check, so cnpjValid says whether its check digits hold. The scope covers the organization table by id and every table of the named data sources with an organization_id column by it; a table with neither is left out. Nothing is written: confirming a proposal is an ordinary create.



## OpenAPI

````yaml /pt/openapi/v3-current/reporter.yaml get /v1/institutions/proposals
openapi: 3.1.0
info:
  contact:
    name: Discord community
    url: https://discord.gg/DnhqKwkGv3
  description: >-
    This is OpenAPI documentation for Reporter. The unified reporter binary
    serves the REST API (RUN_MODE=api) and/or the RabbitMQ report-generation
    worker (RUN_MODE=worker); RUN_MODE=all runs both in one process for local
    development. All REST endpoints documented here serve only when RUN_MODE=api
    or all (port :4005); the worker (port :4006) exposes health/readyz/version
    only.
  license:
    name: Lerian Studio General License
  title: Midaz Reporter API
  version: 4.0.0
servers:
  - url: http://localhost:4005
  - url: https://localhost:4005
security:
  - BearerAuth: []
tags:
  - description: Generated report instances and their lifecycle.
    name: Reports
  - description: Reusable report definitions.
    name: Templates
  - description: Interactive construction of report templates.
    name: Template Builder
  - description: Scheduled report due-date tracking.
    name: Deadlines
  - description: Configured inputs that feed report data.
    name: Data Sources
  - description: Aggregated reporting metrics.
    name: Metrics
  - description: Published business event catalog and delivery policies.
    name: Streaming
paths:
  /v1/institutions/proposals:
    get:
      tags:
        - Institutions
      summary: Propose institutions from Midaz
      description: >-
        Proposes one institution per live Midaz organization that no institution
        of the tenant covers yet: none holds its CNPJ, and none names its id in
        the scope of the data source holding Midaz's organization table. The
        name is the legal name and the CNPJ the legal document, which Midaz does
        not check, so cnpjValid says whether its check digits hold. The scope
        covers the organization table by id and every table of the named data
        sources with an organization_id column by it; a table with neither is
        left out. Nothing is written: confirming a proposal is an ordinary
        create.
      operationId: proposeInstitutions
      parameters:
        - description: >-
            Required. Comma-separated names of the registered data sources the
            proposed scope covers; one of them holds Midaz's organization table.
          example: midaz_onboarding,midaz_transaction
          explode: false
          in: query
          name: dataSources
          schema:
            description: >-
              Required. Comma-separated names of the registered data sources the
              proposed scope covers; one of them holds Midaz's organization
              table.
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstitutionProposalsHumaBody'
          description: OK
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Bad Request
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unauthorized
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Forbidden
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Internal Server Error
components:
  schemas:
    InstitutionProposalsHumaBody:
      additionalProperties: false
      properties:
        items:
          description: One proposal per live Midaz organization no institution covers yet.
          items:
            $ref: '#/components/schemas/InstitutionProposal'
          type:
            - array
            - 'null'
      required:
        - items
      type: object
    Detail:
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          examples:
            - - location: body.templateId
                message: expected string to match 'uuid' format
                value: not-a-uuid
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upstream:
          $ref: '#/components/schemas/Upstream'
          description: >-
            RFC 9457 extension member: the error a proxied third-party provider
            reported. Absent unless the emitting service explicitly surfaced
            one.
      type: object
    InstitutionProposal:
      additionalProperties: false
      properties:
        cnpj:
          description: >-
            The organization's legal document, uppercase and without
            punctuation.
          examples:
            - 12ABC34501DE35
          type: string
        cnpjValid:
          description: >-
            Whether the CNPJ's check digits hold. Midaz does not check them, so
            a false one must be corrected before the proposal is confirmed.
          examples:
            - true
          type: boolean
        name:
          description: The organization's legal name.
          examples:
            - Banco Exemplo S.A.
          type: string
        organizationId:
          description: Midaz organization the proposal is read from.
          examples:
            - 00000000-0000-0000-0000-000000000000
          type: string
        scope:
          additionalProperties:
            $ref: '#/components/schemas/DataSourceScope'
          description: >-
            The organization's rows in each named data source: organization by
            id, every table with an organization_id column by it.
          type: object
      required:
        - organizationId
        - name
        - cnpj
        - cnpjValid
        - scope
      type: object
    ErrorDetail:
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          examples:
            - body.templateId
          type: string
        message:
          description: Error message text
          examples:
            - expected string to match 'uuid' format
          type: string
        value:
          description: The value at the given location
          examples:
            - not-a-uuid
      type: object
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
    DataSourceScope:
      additionalProperties: false
      properties:
        tables:
          additionalProperties:
            $ref: '#/components/schemas/TableScope'
          description: >-
            The tables of the data source the institution reads, keyed by table
            name; empty when it owns the whole data source.
          type: object
        whole:
          description: The institution owns every table of the data source.
          examples:
            - false
          type: boolean
      required:
        - whole
        - tables
      type: object
    TableScope:
      additionalProperties: false
      properties:
        conditions:
          additionalProperties:
            $ref: '#/components/schemas/FilterCondition'
          description: >-
            Conditions a row must meet to belong to the institution, keyed by
            field, in the report filter vocabulary; at least one is eq or in,
            and the others may narrow with any operator. Empty on a shared
            table.
          examples:
            - organization_id:
                eq:
                  - 00000000-0000-0000-0000-000000000000
          type: object
        shared:
          description: The table is reference data every institution reads whole.
          examples:
            - false
          type: boolean
      required:
        - shared
        - conditions
      type: object
    FilterCondition:
      properties:
        between:
          description: Inclusive lower and upper bounds for a range match.
          examples:
            - - 100
              - 1000
          items: {}
          type:
            - array
            - 'null'
        eq:
          description: Values matched for equality; multiple values are combined with OR.
          examples:
            - - active
              - pending
          items: {}
          type:
            - array
            - 'null'
        gt:
          description: Single lower-bound value that the field must exceed.
          examples:
            - - 100
          items: {}
          type:
            - array
            - 'null'
        gte:
          description: Single inclusive lower-bound value for the field.
          examples:
            - - '2025-06-01'
          items: {}
          type:
            - array
            - 'null'
        in:
          description: Values for which the field may match any member of the list.
          examples:
            - - active
              - pending
              - suspended
          items: {}
          type:
            - array
            - 'null'
        lt:
          description: Single upper-bound value that the field must remain below.
          examples:
            - - 1000
          items: {}
          type:
            - array
            - 'null'
        lte:
          description: Single inclusive upper-bound value for the field.
          examples:
            - - '2025-06-30'
          items: {}
          type:
            - array
            - 'null'
        nin:
          description: Values excluded from matching records.
          examples:
            - - deleted
              - archived
          items: {}
          type:
            - array
            - 'null'
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````