ajaishankar / openapi-typescript-fetch

A typed fetch client for openapi-typescript
MIT License
233 stars 54 forks source link

Array that contains another objects being serialized to [Object] #49

Open outerlook opened 2 years ago

outerlook commented 2 years ago

Hi! I don't know if this should be supported, I don't know openAPI well yet. But I'm getting an error when it tries to serialize an array of objects, like using this spec:

{

    "/transactions/{transaction_id}/capture": {
      "post": {
        "summary": "Capturando uma transação posteriormente",
        "description": "Essa rota é utilizada para capturar uma transação, após aprovada, utilizando o token ou o ID da transação.",
        "operationId": "capturando-uma-transacao-posteriormente",
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "description": "Id ou o token da transação a ser capturada",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "amount",
            "in": "query",
            "description": "Valor a ser capturado. Deve ser passado em centavos. Ex: R$ 10.00 = 1000.",
            "required": true,
            "schema": { "type": "integer", "format": "int32" }
          },
          {
            "name": "split_rules",
            "in": "query",
            "description": "Regras de divisão da transação",
            "schema": {
              "items": {
                "properties": {
                  "recipient_id": {
                    "type": "string",
                    "description": "Id do recebedor"
                  },
                  "liable": {
                    "type": "boolean",
                    "description": "Se o recebedor é responsável ou não pelo chargeback. Default `true` para todos os recebedores da transação."
                  },
                  "charge_processing_fee": {
                    "type": "boolean",
                    "description": "Se o recebedor será cobrado das taxas da criação da transação. Default `true` para todos os recebedores da transação."
                  },
                  "percentage": {
                    "type": "integer",
                    "description": "Qual a porcentagem que o recebedor receberá. Deve estar entre 0 e 100. Se amount já está preenchido, não é obrigatório",
                    "format": "int32"
                  },
                  "amount": {
                    "type": "integer",
                    "description": "Qual o valor da transação o recebedor receberá. Se percentage já está preenchido, não é obrigatório",
                    "format": "int32"
                  },
                  "charge_remainder": {
                    "type": "boolean",
                    "description": "Se o recebedor deverá pagar os eventuais restos das taxas, calculadas em porcentagem. Sendo que o default vai para o primeiro recebedor definido na regra."
                  }
                },
                "required": ["recipient_id"],
                "type": "object"
              },
              "type": "array"
            }
          },
          {
            "name": "metadata",
            "in": "query",
            "description": "Metadata de informações adicionais, caso queira incluir, i.e: Id do pedido, nome do produto, etc.",
            "schema": { "type": "string", "format": "json" }
          }
        ],
        "responses": {
          "200": {
            "description": "200",
          }
        },
        "deprecated": false
      }
    }
  }
}

the split_rules item get in query string as:

{
    "url": "/transactions/18929604/capture?amount=10695&split_rules=%5Bobject+Object%5D&split_rules=%5Bobject+Object%5D",
}

Is the schema wrong, misusage or a nasty bug?

outerlook commented 2 years ago

Just realized it would be closed by #44