RAML 1.0 не подчиняется! Включать в примеры в response.body

Я использую дизайнерский инструмент Mulesoft API для документирования своего API.

Я прочитал спецификацию RAML 1.0, и, насколько я понимаю, обе следующие конструкции должны быть законными, единственная разница заключается в способе доступа к json, который появляется в разделе 401 примеров.

/password:
  post:
    description: Verifies the supplied user name and password, returning the associated Customer Id
    body:
      type: tokens.password-verification-request
      example: !include examples/password-verification-request.json
    responses:
      200:
        body:
          application/json:
            type: tokens.password-verification-response-success
            example: !include examples/password-verification-response-200.json
      401:
        body:
          application/json:
            type: tokens.error-response
            examples:
              invalidcredentials:
                value: |
                  {
                    "failure" : {
                      "errors" : [ {
                        "code" : "ID10050",
                        "desc" : "Invalid User Credentials supplied"
                      } ],
                      "trackingId" : "e6d370da-3978-4dde-9e50-d485023cd47a"
                    }
                  }
              accountlocked:
.......

а также

/password:
  post:
    description: Verifies the supplied user name and password, returning the associated Customer Id
    body:
      type: tokens.password-verification-request
      example: !include examples/password-verification-request.json
    responses:
      200:
        body:
          application/json:
            type: tokens.password-verification-response-success
            example: !include examples/password-verification-response-200.json
      401:
        body:
          application/json:
            type: tokens.error-response
            examples:
              invalidcredentials:
                value: !include examples/error.json
              accountlocked:
.......

Второй из этих двух примеров отмечен дизайнером как ошибка, говоря, что он не может найти «сбой». Я предполагаю, что он делает это, пытаясь проанализировать содержимое файла error.json.

Я уверен, что файл error.json существует и находится в нужном месте. Я также рад, что он содержит правильный json (я скопировал json из этого файла в свойство examples в примере 1 выше).

Я что-то не так делаю в !include? Я неправильно понял спецификацию, и спецификация не допускает этого? Не путается ли инструмент конструктора API?


person DaveH    schedule 12.07.2017    source источник


Ответы (2)


Пример! Include не может быть внутренним примером JSON, который вы должны указать, как в примере 200 с полным примером:

401:
    body:
      application/json:
        type: tokens.error-response
      examples: 
         - !include examples/error_01.json
         - !include examples/error_02.json
person Rafael Manzoni    schedule 12.07.2017
comment
Но как мне привести более одного примера для ответа 401? - person DaveH; 13.07.2017
comment
Я отредактировал ответ, чтобы показать, как использовать несколько примеров! - person Rafael Manzoni; 13.07.2017
comment
Если я попробую этот синтаксис, он скажет, что примерами должны быть карты. - person DaveH; 13.07.2017

Фактический синтаксис оказался следующим:

  401:
    body:
      application/json:
        type: t.error-response
        examples:
          invalidcredentials: !include examples/errors/error-response-1.json
          accountlocked: !include examples/errors/error-response-2.json
          accountinactive: !include examples/errors/error-response-3.json
person DaveH    schedule 24.07.2017