Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is the way to exclude property from body type (RAML)?

Tags:

api

raml

Is there a way to exclude one or more properties from a request body when you use a type and writing your API using RAML 1.0

I'll explain. I have a type: 'Order' with a set of properties. I have a resource /orders and a method post which allows users to create a new order. The request body is an order struct json and a response is an order struct as well.

But I don't want users to specify order id while they are submitting their request. But that id (and a couple more 'response only' fields) will be returned at the response. I don't want to create an extra type, like OrderRequest and then inherit it with an Order type, maybe there is a more elegant solution?

So I want to have a way to exclude some properties from a request body and keep others in order to use their description and examples.

Thanks and sorry for my English :)

like image 639
Anton Ivanov Avatar asked Jan 07 '23 06:01

Anton Ivanov


1 Answers

Use two types. The second will be child of the first. Example:

#%RAML 1.0
title: GitHub API
version: v3
baseUri: https://api.github.com
mediaType:  application/json
types:
  OrderCreating:
    type: object
    properties:
      products:
        description: List of product ids with amount.
        required: true
        type: object
        properties:
          []:
            type: number
      coupon?: string
  Order:
    type: OrderCreating
    properties:
      id: integer
      price: number
...
/orders:
  post:
    body:
      application/json:
        type: OrderCreating
  /{orderId}:
    get:
      responses:
        200:
          body:
            application/json:
              type: Order

Also you can include Library with declaration of your types.

like image 99
galkin Avatar answered Feb 20 '23 00:02

galkin