| swagger: "2.0" |
| info: |
| title: "XOS REST APIs" |
| description: "XOS - REST API Docs" |
| version: "1.0.0" |
| contact: |
| email: "cord-dev@opencord.org" |
| |
| {#tags:#} |
| {#{%- for object in proto.messages %}#} |
| {#- name: "{{ xproto_unquote(xproto_first_non_empty([object.options.app_label, object.options.name])) }}"#} |
| {# description: "{{ xproto_unquote(xproto_first_non_empty([object.options.app_label, object.options.name])) }} Models"#} |
| {# externalDocs:#} |
| {# description: "Find out more"#} |
| {# url: "https://guide.opencord.org/xos/core_models.html"#} |
| {#{% endfor %}#} |
| |
| paths: |
| {%- for object in proto.messages %} |
| /xosapi/v1/{{ xproto_unquote(xproto_first_non_empty([object.options.name, object.options.app_label, options.name, context.app_label])) }}/{{ xproto_pluralize(object) | lower }}/: |
| get: |
| tags: |
| - "{{ xproto_unquote(xproto_first_non_empty([object.options.app_label, object.options.name])) }}" |
| summary: "List {{xproto_pluralize(object)}}" |
| responses: |
| 200: |
| description: OK |
| 401: |
| description: "Unauthorized" |
| 403: |
| description: "Forbidden" |
| 500: |
| description: "Internal Server Error" |
| post: |
| tags: |
| - "{{ xproto_unquote(xproto_first_non_empty([object.options.app_label, object.options.name])) }}" |
| summary: "Create {{object.name}}" |
| parameters: |
| - in: "body" |
| name: "body" |
| description: "{{object.name}} model properties" |
| required: true |
| schema: |
| $ref: "#/definitions/{{object.name}}" |
| responses: |
| 200: |
| description: OK |
| 401: |
| description: "Unauthorized" |
| 403: |
| description: "Forbidden" |
| 500: |
| description: "Internal Server Error" |
| /xosapi/v1/{{ xproto_unquote(xproto_first_non_empty([object.options.name, object.options.app_label, options.name, context.app_label])) }}/{{ xproto_pluralize(object) | lower }}/{id}: |
| get: |
| tags: |
| - "{{ xproto_unquote(xproto_first_non_empty([object.options.app_label, object.options.name])) }}" |
| summary: "Get {{object.name}}" |
| parameters: |
| - in: "path" |
| name: "id" |
| description: "ID of {{ object.name }} to return" |
| required: true |
| type: "integer" |
| format: "int64" |
| responses: |
| 200: |
| description: OK |
| 401: |
| description: "Unauthorized" |
| 403: |
| description: "Forbidden" |
| 500: |
| description: "Internal Server Error" |
| put: |
| tags: |
| - "{{ xproto_unquote(xproto_first_non_empty([object.options.app_label, object.options.name])) }}" |
| summary: "Get {{object.name}}" |
| parameters: |
| - in: "path" |
| name: "id" |
| description: "ID of {{ object.name }} to return" |
| required: true |
| type: "integer" |
| format: "int64" |
| responses: |
| 200: |
| description: OK |
| 401: |
| description: "Unauthorized" |
| 403: |
| description: "Forbidden" |
| 500: |
| description: "Internal Server Error" |
| delete: |
| tags: |
| - "{{ xproto_unquote(xproto_first_non_empty([object.options.app_label, object.options.name])) }}" |
| summary: "Delete {{object.name}}" |
| parameters: |
| - in: "path" |
| name: "id" |
| description: "ID of {{ object.name }} to return" |
| required: true |
| type: "integer" |
| format: "int64" |
| responses: |
| 200: |
| description: OK |
| 401: |
| description: "Unauthorized" |
| 403: |
| description: "Forbidden" |
| 500: |
| description: "Internal Server Error" |
| {% endfor %} |
| |
| definitions: |
| {%- for object in proto.messages %} |
| {{ object.name }}: |
| type: "object" |
| properties: |
| {%- for f in object.fields %} |
| {{ f.name }}: |
| type: {{ xproto_type_to_swagger_type(f) }} |
| {%- if xproto_field_to_swagger_enum(f) %} |
| enum: |
| {%- for e in xproto_field_to_swagger_enum(f) %} |
| - {{ e }} |
| {%- endfor %} |
| {%- endif %} |
| {%- if f.options.help_text %} |
| description: "{{ xproto_unquote(f.options.help_text) }}" |
| {% endif %} |
| {%- endfor %} |
| {% endfor %} |