#%RAML 0.8
title: Baeldung Foo REST Services API
version: v1
protocols: [ HTTPS ]
baseUri: http://rest-api.baeldung.com/api/{version}
mediaType: application/json
securitySchemes:
  - basicAuth:
      description: Each request must contain the headers necessary for
                   basic authentication
      type: Basic Authentication
      describedBy:
        headers:
          Authorization:
            description: Used to send the Base64 encoded "username:password"
                         credentials
            type: string
        responses:
          401:
            description: |
              Unauthorized. Either the provided username and password
              combination is invalid, or the user is not allowed to access
              the content provided by the requested URL.

schemas:
  - foo: !include foo.json
  - foos: !include foos.json
  - error: !include error.json

/foos:
  get:
    description: List all Foos matching query criteria, if provided;
                 otherwise list all Foos
    queryParameters:
      name:
        type: string
        required: false
      ownerName:
        type: string
        required: false
    responses:
      200:
        body:
          application/json:
            schema: foos
            example: !include foos-example.json
  post:
    description: Create a new Foo
    body:
      application/json:
        schema: foo
        example: foo-example.json
    responses:
      201:
        body:
          application/json:
            schema: foo
            example: foo-example.json
  /{id}:
    get:
      description: Get a Foo by id
      responses:
        200:
          body:
            application/json:
              schema: foo
        404:
          body:
            application/json:
              schema: error
    put:
      description: Update a Foo by id
      body:
        application/json:
          schema: foo
          example: foo-example.json
      responses:
        200:
          body:
            application/json:
              schema: foo
        404:
          body:
            application/json:
              schema: error
    delete:
      description: Delete a Foo by id
      responses:
        204:
        404:
          body:
            application/json:
              schema: error
  /name/{name}:
    get:
      description: List all Foos with a certain name
      responses:
        200:
          body:
            application/json:
              schema: foos
              example: !include foos-example.json