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

# Cadastrar recurso

> Armazena um arquivo permanente na organização autenticada, sem ZIP obrigatório. Envie os bytes diretamente no corpo e seu tipo MIME em Content-Type. Limite de 10 MiB. Use o id retornado em resource_ids.



## OpenAPI

````yaml /api-reference/openapi.json post /v3/resources
openapi: 3.1.2
info:
  title: API Base39
  version: 3.0.0
  description: >-
    Contratos canônicos Base39 compartilhados entre API e MCP. Campos de negócio
    em snake_case. Valores financeiros em centavos de BRL; montantes de dados
    consultados são textos decimais que preservam a precisão informada. Datas
    cadastrais usam YYYY-MM-DD. As consultas podem debitar o saldo; a repetição
    equivalente na organização é gratuita até meia-noite de São Paulo. O extrato
    informa o consumo. Campos ausentes não significam zero nem aprovação de
    crédito.
servers:
  - url: https://mcp.base39.com.br
    description: API pública Base39, independente do caminho do protocolo MCP.
security:
  - bearer_auth: []
tags:
  - name: Consultas
    description: Consultas canônicas de dados.
  - name: Modelos de relatórios
    description: Modelos de relatório e seus recursos na organização autenticada.
  - name: Saldo e pagamentos
    description: Saldo e extrato da organização autenticada.
paths:
  /v3/resources:
    post:
      tags:
        - Modelos de relatórios
      summary: Cadastrar recurso
      description: >-
        Armazena um arquivo permanente na organização autenticada, sem ZIP
        obrigatório. Envie os bytes diretamente no corpo e seu tipo MIME em
        Content-Type. Limite de 10 MiB. Use o id retornado em resource_ids.
      operationId: create_resource
      parameters:
        - name: name
          in: query
          required: true
          schema:
            $schema: https://json-schema.org/draft/2020-12/schema
            type: string
            minLength: 1
            maxLength: 256
            description: Nome do arquivo, incluindo sua extensão.
          example: exemplo.md
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
            examples:
              requisicao:
                value: Exemplo
      responses:
        '201':
          description: Arquivo cadastrado e disponível para associação aos relatórios.
          headers:
            Request-Id:
              description: Identificador da requisição para suporte e rastreamento.
              schema:
                type: string
              example: req_example
            Cache-Control:
              description: >-
                As respostas autenticadas não devem ser armazenadas por serviços
                HTTP compartilhados.
              schema:
                type: string
                const: no-store
              example: no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/resource'
              examples:
                resposta:
                  summary: Exemplo de resposta Base39.
                  value:
                    object: resource
                    id: res_00000000000000000000000000000001
                    name: exemplo.md
                    mime_type: text/markdown
                    size: 7
        '400':
          $ref: '#/components/responses/error_400'
        '401':
          $ref: '#/components/responses/error_401'
        '403':
          $ref: '#/components/responses/error_403'
        '404':
          $ref: '#/components/responses/error_404'
        '405':
          $ref: '#/components/responses/error_405'
        '413':
          $ref: '#/components/responses/error_413'
        '415':
          $ref: '#/components/responses/error_415'
        '503':
          $ref: '#/components/responses/error_503'
components:
  schemas:
    resource:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        object:
          type: string
          const: resource
          description: Identifica um recurso de relatório.
        id:
          type: string
          pattern: ^[A-Za-z0-9_-]{1,128}$
          description: Identificador de um recurso permanente da organização autenticada.
        name:
          type: string
          minLength: 1
          maxLength: 256
          description: Nome do arquivo, incluindo sua extensão.
        mime_type:
          type: string
          description: Tipo MIME do arquivo.
        size:
          type: integer
          minimum: 0
          maximum: 9007199254740991
          description: Tamanho do arquivo em bytes.
      required:
        - object
        - id
        - name
        - mime_type
        - size
      additionalProperties: false
    error:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - invalid_request_error
                - authentication_error
                - permission_error
                - balance_error
                - api_error
              description: Categoria estável da falha.
            code:
              type: string
              pattern: ^[a-z][a-z0-9_]*$
              description: Código estável da falha para tratamento pela aplicação.
            message:
              type: string
              description: Descrição da falha em português brasileiro.
            param:
              description: Parâmetro relacionado à falha, quando aplicável.
              type: string
          required:
            - type
            - code
            - message
          additionalProperties: false
          description: Falha que impediu a operação.
      required:
        - error
      additionalProperties: false
  responses:
    error_400:
      description: Parâmetros inválidos.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Parâmetros inválidos.
              value:
                error:
                  type: invalid_request_error
                  code: invalid_request
                  message: Revise os parâmetros da requisição.
    error_401:
      description: Autenticação ausente ou inválida.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Autenticação ausente ou inválida.
              value:
                error:
                  type: authentication_error
                  code: unauthorized
                  message: Autenticação necessária.
    error_403:
      description: Acesso não permitido.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Acesso não permitido.
              value:
                error:
                  type: permission_error
                  code: forbidden
                  message: Acesso não permitido.
    error_404:
      description: Operação ou resultado não encontrado.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Operação ou resultado não encontrado.
              value:
                error:
                  type: invalid_request_error
                  code: resource_not_found
                  message: Nenhum registro encontrado.
    error_405:
      description: Método HTTP não permitido.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Método HTTP não permitido.
              value:
                error:
                  type: invalid_request_error
                  code: method_not_allowed
                  message: Método HTTP não permitido para esta operação.
    error_413:
      description: Corpo da requisição acima do limite permitido para a operação.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Corpo da requisição acima do limite permitido para a operação.
              value:
                error:
                  type: invalid_request_error
                  code: request_too_large
                  message: A requisição excedeu o limite permitido.
    error_415:
      description: O corpo deve usar application/json.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: O corpo deve usar application/json.
              value:
                error:
                  type: invalid_request_error
                  code: unsupported_media_type
                  message: Envie o corpo como application/json.
    error_503:
      description: Serviço temporariamente indisponível.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
        Retry-After:
          description: Tempo em segundos antes de uma nova tentativa.
          schema:
            type: integer
            minimum: 1
          example: 2
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Serviço temporariamente indisponível.
              value:
                error:
                  type: api_error
                  code: query_unavailable
                  message: Não foi possível concluir a consulta.
  securitySchemes:
    bearer_auth:
      type: http
      scheme: bearer
      description: >-
        Credencial OAuth da Base39 com os escopos profile e user:org:read, ou
        chave de API pertencente à organização. A organização e o autor são
        obtidos da autenticação.

````

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