1
votes

I am having a hard time identifying why the following raml does not load when I attempt to create a new project:

#%RAML 0.8
title: MyMuleAPI API
version: v1
baseUri: https://localhost/api/v1
securitySchemes:
    - oauth_2_0:
        description: |
            MyCompany supports OAuth 2.0 for authenticating all API requests.
        type: OAuth 2.0
        describedBy:
            headers:
                Authorization:
                    description: |
                       Used to send a valid OAuth 2 access token. Do not use 
                       with the "access_token" query string parameter.
                    type: string
            queryParameters:
                access_token:
                    description: |
                       Used to send a valid OAuth 2 access token. Do not use together with 
                       the "Authorization" header
                    type: string
            responses:
                401:
                    description: |
                        Bad or expired token. This can happen if the user or Dropbox
                        revoked or expired an access token. To fix, you should re-
                        authenticate the user.
                403:
                    description: |
                        Bad OAuth request (wrong consumer key, bad nonce, expired
                        timestamp...). Unfortunately, re-authenticating the user won't help here.
        settings:
          authorizationUri: https://login-dev.mycompany.com/connect/authorize
          accessTokenUri: https://login-dev.mycompany.com//connect/token
          authorizationGrants: [ token ]

schemas:
- Address: |
    {
      "id": "Address",
      "title": "Address",
      "Description": "the object for passing around addrss information",
      "properties": {
        "street": {
          "description": "street including street number and appartment unit#",
          "type": "string"
        },
        "street2": {
          "description": "second line of the address.",
          "type": "string"
        },
        "city": {
          "description": "city name",
          "type": "string"
        },
        "state": {
          "description": "a valid 2-letter US state abbreviation",
          "type": "string"
        },
        "zip": {
          "description": "a 5-digit zip code",
          "type": "string"
        }      
      }
    }
- LoanApplication: |
    {
      "id": "LoanApplicationData",
      "title": "LoanApplicationData",
      "description": "loan application.",
      "type": "object",
      "properties": {
        "loan_id": {
          "description": "the Loans identifier for the loan request",
          "type": "string"
        },
        "FirstName": {
          "description": "Applicant's first name.",
          "type": "string"
        },
        "LastName": {
          "description": "Applicant's last name.",
          "type": "string"
        },
        "Address": {
          "description": "applicat's address",
          "type": "object"
        },
        "Email": {
          "description": "Applicant's email.",
          "type": "string"
        },
        "Phone": {
          "description": "Applicant's phone, optional.",
          "type": "string"
        },
        "SSN": {
          "description": "Applicant's SSN.",
          "type": "string"
        },
        "DateOfBirth": {
          "description": "Applicant's date of birth.",
          "type": "string"
        },
        "YearlyIncome": {
          "description": "Applicant's income.",
          "type": "number"
        }
      }
    }
- LoanResponse: |
    {
      "id": "LoanResponse",
      "title": "LoanResponse",
      "Description": "the basic response telling you the current status of the loan",
      "properties":{
        "loan_id": {
          "description": "the Loan id to track this loans progress",
          "type": "string"
        },
        "status": {
          "description": "a string describing the curernt state the loan is currently in",
          "type": "string"
        },
        "status_id": {
          "description": "a numberic version of the status text",
          "type": "integer"
        }
      }
    }
/application:
  securedBy: [oauth_2_0]
  /{loan_id}:
    securedBy: [oauth_2_0]
    uriParameters:
      loan_id:
        description: loan applicationData ID.
        type: string
        required: true
        displayName: loan_id
    put:
      body:
        application/json:
          schema: LoanApplication
      displayName: Application_Put
      description: "Updates loan applicationData.
            
            TODO: what do we allow to update."
      responses:
        200:
          description: OK
          body:
            application/json:
              schema: LoanApplication
    get:
      displayName: Application_Get
      description: "retrieves application details"
      responses:
        200:
          description: successful request
          body:
            application/json:
              schema: LoanApplication
      
  post:
    body:
      application/json:
        schema: LoanApplication
    displayName: Application_Post
    description: Creates loan applicationData.
    responses:
      200:
        description: OK
        body:
          application/json:
            schema: LoanApplication

error I get when attempting to create the project

when I attempt to start a project with this raml to sub out the api, i get the following: but when I load the raml in either the api designer, or kick off anypoint's validation, it says there are no problems

What am I missing something?

1

1 Answers

1
votes

If I open the above RAML in the API Workbench, I get the following warning:

enter image description here

If I rewrite the description like this:

put:
  body:
    application/json:
      schema: LoanApplication
  displayName: Application_Put
  description: |
    Updates loan applicationData.

    TODO: what do we allow to update.
  responses:

then the warning goes away. Maybe this will solve your issue?