Skip to content

onchain.signingAlgo missing when metadata.deprecated=true – violates schema contract #186

@olegssedacs

Description

@olegssedacs

In the OpenAPI spec, the field onchain.signingAlgo is marked as required and non-nullable:

    BlockchainOnchain:
      type: object
      properties:
        protocol:
          type: string
          description: The protocol of the blockchain
          example: EVM
        chainId:
          type: string
          description: Network/chain ID
          example: 1
        test:
          type: boolean
          description: Is test blockchain
          example: false
        signingAlgo:
          enum:
          - ECDSA_SECP256K1
          - EDDSA_ED25519
          type: string
          description: Signing alghorithm
          example: ECDSA_SECP256K1
      required:
      - protocol
      - test
      - signingAlgo

However, in responses where metadata.deprecated=true, the onchain.signingAlgo field is absent.

This violates the defined contract and causes client code generated from the spec to fail deserialization with an exception.

Example problematic response:

{
  "data": [
    {
      "id": "a8debd1c-745b-4cd0-9097-bf24aed7fb5c",
      "legacyId": "DIEM_XUS_TEST",
      "displayName": "Diem XUS Test",
      "nativeAssetId": "c9eadb85-aebb-49a7-856f-1517c0e16964",
      "onchain": {
        "protocol": null,
        "test": true
      },
      "metadata": {
        "scope": "GLOBAL",
        "deprecated": true
      }
    }
  ]
}

Expected behavior:

If onchain.signingAlgo is not present when deprecated=true, it should either:

  • Be marked as optional in the OpenAPI schema, or
  • Always included in the response (even for deprecated records), possibly as null or with a placeholder value.

Impact:
Code generation tools (e.g., OpenAPI codegen) produce clients that expect signingAlgo to be present. This discrepancy breaks deserialization and disrupts client-side processing.
Please clarify if this is an intentional behavior and if the schema should be updated to reflect this exception.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions