Исключите метод из генерации в автотесте Azure

#azure #openapi #autorest

Вопрос:

При попытке создать код C# с помощью автоматического тестирования Azure для этой спецификации:

https://github.com/blend/blend-api-specs/blob/master/version_4/v4.2.0_stable.openapi_spec.yaml

Я получаю следующую ошибку:

 warning | Interpretations | Generating 'operationId' to 'Home Lending - Applications' for 'get' operation on path '/home-lending/applications/{id}/assignees' 
warning | Interpretations | Generating 'operationId' to 'Home Lending - Applications' for 'patch' operation on path '/home-lending/applications/{id}/assignees' 
warning | Interpretations | Generating 'operationId' to 'Home Lending - Applications' for 'put' operation on path '/home-lending/applications/{id}/assignees' 
warning | Modeler/MissingType | The schema 'paths·bz6x3r·home_lending-applications-id·patch·requestbody·content·application-json·schema·properties·loanamount·allof·1' has no type or format information whatsoever. Location:
   file:///home/XX/code/XX-platform/poc/integrations/providers/Blend.autorest/spec/v4.2.0stable.openapi_spec.yaml#/components/schemas/paths·bz6x3r·homelending-applications-id·patch·requestbody·content·application-json·schema·properties·loanamount·allof·1
error   | DuplicateOperation | Duplicate Operation '' > 'HomeLendingApplications' detected(This is most likely due to 2 operation using the same 'operationId' or 'tags'). Duplicates have those paths:
  - /home-lending/applications/{id}/assignees
  - /home-lending/applications/{id}/assignees
  - /home-lending/applications/{id}/assignees
fatal   | Error: 1 errors occured -- cannot continue.
fatal   | Process() cancelled due to failure 
  Error: Plugin checker reported failure.
 

Поскольку я не могу изменить файл YAML (это общедоступный API), есть ли способ избежать создания или игнорирования оскорбительного раздела? Возможно, с помощью директив?

Ответ №1:

После запроса на доске вопросов Autorest github мне посоветовали использовать директивы, которые позволяют предварительно обрабатывать спецификацию на лету.

 directive:
  - from: openapi-document
    where: '$.paths["/home-lending/applications/{id}/assignees"].get'
    debug: true
    transform: |
      $["operationId"] = "lending-assignees-get";
  - from: openapi-document
    where: '$.paths["/home-lending/applications/{id}/assignees"].put'
    debug: true
    transform: |
      $["operationId"] = "lending-assignees-put";
 

Эта конкретная спецификация все еще содержит другие проблемы, из-за которых генератор c# с автотестированием выходит из строя, но эти директивы устраняют исходную проблему.