swagger: '2.0' info: title: Snippets API description: "This is a demo project for the [drf-yasg](https://github.com/axnsan12/drf-yasg)\ \ Django Rest Framework library.\n\nThe `swagger-ui` view can be found [here](/cached/swagger).\ \ \nThe `ReDoc` view can be found [here](/cached/redoc). \nThe swagger YAML\ \ document can be found [here](/cached/swagger.yaml). \n\nYou can log in using\ \ the pre-existing `admin` user with password `passwordadmin`." termsOfService: https://www.google.com/policies/terms/ contact: email: contact@snippets.local license: name: BSD License version: v1 host: test.local:8002 schemes: - http basePath: / consumes: - application/json produces: - application/json securityDefinitions: Basic: type: basic Bearer: in: header name: Authorization type: apiKey Query: in: query name: auth type: apiKey security: - Basic: [] - Bearer: [] - Query: [] paths: /articles/: get: operationId: articles_list description: description from swagger_auto_schema via method_decorator parameters: - name: title in: query description: Filter the returned list by title required: false type: string - name: ordering in: query description: Which field to use when ordering the results. required: false type: string - name: limit in: query description: Number of results to return per page. required: false type: integer - name: offset in: query description: The initial index from which to return the results. required: false type: integer responses: '200': description: '' schema: required: - count - results type: object properties: count: type: integer next: type: string format: uri previous: type: string format: uri results: type: array items: $ref: '#/definitions/Article' tags: - articles post: operationId: articles_create description: ArticleViewSet class docstring parameters: - name: data in: body required: true schema: $ref: '#/definitions/Article' responses: '201': description: '' schema: $ref: '#/definitions/Article' tags: - articles parameters: [] /articles/today/: get: operationId: articles_today description: ArticleViewSet class docstring parameters: - name: title in: query description: Filter the returned list by title required: false type: string - name: ordering in: query description: Which field to use when ordering the results. required: false type: string responses: '200': description: '' schema: type: array items: $ref: '#/definitions/Article' tags: - articles parameters: [] /articles/{slug}/: get: operationId: articles_read description: retrieve class docstring parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Article' tags: - articles put: operationId: no_body_test description: update method docstring parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Article' tags: - articles patch: operationId: articles_partial_update summary: partial_update summary description: partial_update description override parameters: - name: data in: body required: true schema: $ref: '#/definitions/Article' responses: '200': description: '' schema: $ref: '#/definitions/Article' '404': description: slug not found tags: - articles deprecated: true delete: operationId: articles_delete description: destroy method docstring parameters: [] responses: '204': description: '' tags: - articles parameters: - name: slug in: path description: slug model help_text required: true type: string format: slug pattern: '[a-z0-9]+(?:-[a-z0-9]+)' /articles/{slug}/image/: get: operationId: articles_image_read description: image GET description override parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Article' consumes: - multipart/form-data tags: - articles post: operationId: articles_image_create description: image method docstring parameters: - name: what_am_i_doing in: formData description: test required: false type: string pattern: ^69$ default: '69' minLength: 1 x-nullable: true - name: image_styles in: formData description: Parameter with Items required: true type: array items: type: string enum: - wide - tall - thumb - social - name: upload in: formData description: image serializer help_text required: true type: file responses: '201': description: '' schema: $ref: '#/definitions/ImageUpload' consumes: - multipart/form-data tags: - articles parameters: - name: slug in: path description: slug model help_text required: true type: string format: slug pattern: '[a-z0-9]+(?:-[a-z0-9]+)' /people/: get: operationId: people_list description: '' parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/Person' tags: - people post: operationId: people_create description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/Person' responses: '201': description: '' schema: $ref: '#/definitions/Person' tags: - people parameters: [] /people/{id}: get: operationId: people_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Person' tags: - people patch: operationId: people_partial_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/Person' responses: '200': description: '' schema: $ref: '#/definitions/Person' tags: - people delete: operationId: people_delete description: '' parameters: [] responses: '204': description: '' tags: - people parameters: - name: id in: path description: A unique integer value identifying this person. required: true type: integer /people/{person}/identity: get: operationId: people_identity_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Identity' tags: - people patch: operationId: people_identity_partial_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/Identity' responses: '200': description: '' schema: $ref: '#/definitions/Identity' tags: - people parameters: - name: person in: path required: true type: string /plain/: get: operationId: plain_list description: '' parameters: [] responses: '200': description: '' tags: - plain parameters: [] /snippets/: get: operationId: snippetsList description: SnippetList classdoc parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/Snippet' tags: - snippets post: operationId: snippetsCreate description: post method docstring parameters: - name: data in: body required: true schema: $ref: '#/definitions/Snippet' responses: '201': description: '' schema: $ref: '#/definitions/Snippet' tags: - snippets delete: operationId: snippetsDeleteBulk summary: summary from docstring description: description body is here, summary is not included parameters: - name: data in: body required: true schema: type: object properties: body: description: this should not crash (request body on DELETE method) type: string responses: '204': description: '' tags: - snippets parameters: [] /snippets/{id}/: get: operationId: snippetsRead description: SnippetDetail classdoc parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Snippet' tags: - snippets put: operationId: snippetsUpdate description: put class docstring parameters: - name: data in: body required: true schema: $ref: '#/definitions/Snippet' responses: '200': description: '' schema: $ref: '#/definitions/Snippet' tags: - snippets patch: operationId: snippetsPartialUpdate description: patch method docstring parameters: - name: data in: body required: true schema: $ref: '#/definitions/Snippet' responses: '200': description: '' schema: $ref: '#/definitions/Snippet' tags: - snippets delete: operationId: snippetsDelete description: delete method docstring parameters: - name: id in: path description: path parameter override required: true type: integer responses: '204': description: this should not crash (response object with no schema) tags: - snippets parameters: - name: id in: path description: A unique integer value identifying this snippet. required: true type: integer /todo/: get: operationId: todo_list description: '' parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/Todo' tags: - todo parameters: [] /todo/another/: get: operationId: todo_another_list description: '' parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/TodoAnother' tags: - todo parameters: [] /todo/another/{id}/: get: operationId: todo_another_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/TodoAnother' tags: - todo parameters: - name: id in: path description: A unique integer value identifying this todo another. required: true type: integer /todo/recursive/: get: operationId: todo_recursive_list description: '' parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/TodoRecursive' tags: - todo post: operationId: todo_recursive_create description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/TodoRecursive' responses: '201': description: '' schema: $ref: '#/definitions/TodoRecursive' tags: - todo parameters: [] /todo/recursive/{id}/: get: operationId: todo_recursive_read description: '' parameters: [] responses: '302': description: Redirect somewhere tags: - todo put: operationId: todo_recursive_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/TodoRecursive' responses: '200': description: '' schema: $ref: '#/definitions/TodoRecursive' tags: - todo patch: operationId: todo_recursive_partial_update description: '' parameters: - name: data in: body required: true schema: $ref: '#/definitions/TodoRecursive' responses: '200': description: '' schema: $ref: '#/definitions/TodoRecursive' tags: - todo delete: operationId: todo_recursive_delete description: '' parameters: [] responses: '204': description: '' tags: - todo parameters: - name: id in: path description: A unique integer value identifying this todo tree. required: true type: integer /todo/tree/: get: operationId: todo_tree_list description: '' parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/TodoTree' tags: - todo parameters: [] /todo/tree/{id}/: get: operationId: todo_tree_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/TodoTree' tags: - todo parameters: - name: id in: path description: A unique integer value identifying this todo tree. required: true type: integer /todo/yetanother/: get: operationId: todo_yetanother_list description: '' parameters: [] responses: '200': description: '' schema: type: array items: $ref: '#/definitions/TodoYetAnother' tags: - todo parameters: [] /todo/yetanother/{id}/: get: operationId: todo_yetanother_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/TodoYetAnother' tags: - todo parameters: - name: id in: path description: A unique integer value identifying this todo yet another. required: true type: integer /todo/{id}/: get: operationId: todo_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/Todo' tags: - todo parameters: - name: id in: path description: A unique integer value identifying this todo. required: true type: integer /todo/{todo_id}/yetanothers/{yetanother_id}/: get: operationId: todo_yetanothers_read description: '' parameters: [] responses: '200': description: '' schema: $ref: '#/definitions/TodoYetAnother' tags: - todo parameters: - name: todo_id in: path required: true type: string - name: yetanother_id in: path required: true type: string /users/: get: operationId: users_list description: UserList cbv classdoc parameters: - name: username in: query description: this field is generated from a query_serializer required: false type: string minLength: 1 - name: is_staff in: query description: this one too! required: false type: boolean - name: styles in: query description: and this one is fancy! required: true type: array items: type: string enum: - a - b - c - d collectionFormat: multi responses: '200': description: '' schema: type: array items: $ref: '#/definitions/UserSerializerrr' tags: - Users post: operationId: users_create description: apiview post description override parameters: - name: data in: body required: true schema: required: - username type: object properties: username: type: string responses: '201': description: '' schema: required: - username type: object properties: username: type: string tags: - Users security: [] patch: operationId: users_dummy description: dummy operation parameters: [] responses: '200': description: '' tags: - Users parameters: [] /users/{id}/: get: operationId: users_read description: user_detail fbv docstring parameters: - name: test in: query description: test manual param type: boolean responses: '200': description: response description schema: $ref: '#/definitions/UserSerializerrr' tags: - Users put: operationId: users_update description: user_detail fbv docstring parameters: - name: data in: body required: true schema: $ref: '#/definitions/UserSerializerrr' responses: '200': description: '' schema: $ref: '#/definitions/UserSerializerrr' tags: - Users parameters: - name: id in: path required: true type: string definitions: Article: required: - title - body - group type: object properties: title: description: title model help_text type: string maxLength: 255 minLength: 1 author: description: The ID of the user that created this article; if none is provided, defaults to the currently logged in user. type: integer default: 1 body: description: body serializer help_text type: string maxLength: 5000 minLength: 1 slug: description: slug model help_text type: string format: slug pattern: ^[-a-zA-Z0-9_]+$ maxLength: 50 date_created: type: string format: date-time readOnly: true date_modified: type: string format: date-time readOnly: true references: description: this is a really bad example type: object additionalProperties: description: but i needed to test these 2 fields somehow type: string format: uri minLength: 1 readOnly: true uuid: description: should articles have UUIDs? type: string format: uuid readOnly: true cover: type: string readOnly: true format: uri cover_name: type: string readOnly: true article_type: description: IntegerField declared on model with choices=(...) and exposed via ModelSerializer type: integer enum: - 1 - 2 - 3 - 7 - 8 x-nullable: true group: type: string format: uuid original_group: type: string format: uuid readOnly: true ImageUpload: required: - image_styles type: object properties: image_id: type: string format: uuid readOnly: true what_am_i_doing: description: test type: string pattern: ^69$ default: '69' minLength: 1 x-nullable: true image_styles: description: Parameter with Items type: array items: type: string enum: - wide - tall - thumb - social upload: description: image serializer help_text type: string readOnly: true format: uri Identity: title: Identity type: object properties: id: title: ID type: integer readOnly: true first_name: title: First name type: string maxLength: 30 minLength: 1 x-nullable: true last_name: title: Last name description: Here's some HTML! type: string maxLength: 30 minLength: 1 x-nullable: true Person: required: - identity type: object properties: id: title: ID type: integer readOnly: true identity: $ref: '#/definitions/Identity' Project: required: - projectName - githubRepo type: object properties: projectName: title: Project name description: Name of the project type: string minLength: 1 githubRepo: title: Github repo description: Github repository of the project type: string minLength: 1 Snippet: required: - code - language type: object properties: id: title: Id description: id serializer help text type: integer readOnly: true created: title: Client date time suu type: string format: integer readOnly: true description: Date time in unix timestamp format owner: title: Owner description: The ID of the user that created this snippet; if none is provided, defaults to the currently logged in user. type: integer default: 1 ownerAsString: description: The ID of the user that created this snippet. type: string readOnly: true minLength: 1 title: Owner as string title: title: Title type: string maxLength: 100 code: title: Code type: string minLength: 1 linenos: title: Linenos type: boolean language: description: Sample help text for language type: object properties: name: title: Name description: The name of the programming language type: string enum: - abap - abnf - ada - adl - agda - aheui - ahk - alloy - ampl - antlr - antlr-as - antlr-cpp - antlr-csharp - antlr-java - antlr-objc - antlr-perl - antlr-python - antlr-ruby - apacheconf - apl - applescript - arduino - as - as3 - aspectj - aspx-cs - aspx-vb - asy - at - autoit - awk - basemake - bash - bat - bbcode - bc - befunge - bib - blitzbasic - blitzmax - bnf - boo - boogie - brainfuck - bro - bst - bugs - c - c-objdump - ca65 - cadl - camkes - capdl - capnp - cbmbas - ceylon - cfc - cfengine3 - cfm - cfs - chai - chapel - cheetah - cirru - clay - clean - clojure - clojurescript - cmake - cobol - cobolfree - coffee-script - common-lisp - componentpascal - console - control - coq - cpp - cpp-objdump - cpsa - cr - crmsh - croc - cryptol - csharp - csound - csound-document - csound-score - css - css+django - css+erb - css+genshitext - css+lasso - css+mako - css+mozpreproc - css+myghty - css+php - css+smarty - cucumber - cuda - cypher - cython - d - d-objdump - dart - delphi - dg - diff - django - docker - doscon - dpatch - dtd - duel - dylan - dylan-console - dylan-lid - earl-grey - easytrieve - ebnf - ec - ecl - eiffel - elixir - elm - emacs - erb - erl - erlang - evoque - extempore - ezhil - factor - fan - fancy - felix - fennel - fish - flatline - forth - fortran - fortranfixed - foxpro - fsharp - gap - gas - genshi - genshitext - glsl - gnuplot - go - golo - gooddata-cl - gosu - groff - groovy - gst - haml - handlebars - haskell - haxeml - hexdump - hlsl - hsail - html - html+cheetah - html+django - html+evoque - html+genshi - html+handlebars - html+lasso - html+mako - html+myghty - html+ng2 - html+php - html+smarty - html+twig - html+velocity - http - hx - hybris - hylang - i6t - idl - idris - iex - igor - inform6 - inform7 - ini - io - ioke - irc - isabelle - j - jags - jasmin - java - javascript+mozpreproc - jcl - jlcon - js - js+cheetah - js+django - js+erb - js+genshitext - js+lasso - js+mako - js+myghty - js+php - js+smarty - jsgf - json - json-object - jsonld - jsp - julia - juttle - kal - kconfig - koka - kotlin - lagda - lasso - lcry - lean - less - lhs - lidr - lighty - limbo - liquid - live-script - llvm - logos - logtalk - lsl - lua - make - mako - maql - mask - mason - mathematica - matlab - matlabsession - md - minid - modelica - modula2 - monkey - monte - moocode - moon - mozhashpreproc - mozpercentpreproc - mql - mscgen - mupad - mxml - myghty - mysql - nasm - ncl - nemerle - nesc - newlisp - newspeak - ng2 - nginx - nim - nit - nixos - nsis - numpy - nusmv - objdump - objdump-nasm - objective-c - objective-c++ - objective-j - ocaml - octave - odin - ooc - opa - openedge - pacmanconf - pan - parasail - pawn - perl - perl6 - php - pig - pike - pkgconfig - plpgsql - postgresql - postscript - pot - pov - powershell - praat - prolog - properties - protobuf - ps1con - psql - pug - puppet - py3tb - pycon - pypylog - pytb - python - python3 - qbasic - qml - qvto - racket - ragel - ragel-c - ragel-cpp - ragel-d - ragel-em - ragel-java - ragel-objc - ragel-ruby - raw - rb - rbcon - rconsole - rd - rebol - red - redcode - registry - resource - rexx - rhtml - rnc - roboconf-graph - roboconf-instances - robotframework - rql - rsl - rst - rts - rust - sas - sass - sc - scala - scaml - scheme - scilab - scss - shen - silver - slim - smali - smalltalk - smarty - sml - snobol - snowball - sourceslist - sp - sparql - spec - splus - sql - sqlite3 - squidconf - ssp - stan - stata - swift - swig - systemverilog - tads3 - tap - tasm - tcl - tcsh - tcshcon - tea - termcap - terminfo - terraform - tex - text - thrift - todotxt - trac-wiki - treetop - ts - tsql - turtle - twig - typoscript - typoscriptcssdata - typoscripthtmldata - urbiscript - vala - vb.net - vcl - vclsnippets - vctreestatus - velocity - verilog - vgl - vhdl - vim - wdiff - whiley - x10 - xml - xml+cheetah - xml+django - xml+erb - xml+evoque - xml+lasso - xml+mako - xml+myghty - xml+php - xml+smarty - xml+velocity - xorg.conf - xquery - xslt - xtend - xul+mozpreproc - yaml - yaml+jinja - zephir default: python styles: type: array items: type: string enum: - abap - algol - algol_nu - arduino - autumn - borland - bw - colorful - default - emacs - friendly - fruity - igor - lovelace - manni - monokai - murphy - native - paraiso-dark - paraiso-light - pastie - perldoc - rainbow_dash - rrt - tango - trac - vim - vs - xcode default: - friendly lines: type: array items: type: integer x-nullable: true exampleProjects: type: array items: $ref: '#/definitions/Project' readOnly: true difficultyFactor: title: Difficulty factor description: this is here just to test FloatField type: number readOnly: true default: 6.9 rateAsString: title: Rate as string type: string format: decimal default: '0.000' rate: title: Rate type: number format: decimal default: 0.0 minimum: 0.0 Todo: required: - title type: object properties: title: title: Title type: string maxLength: 50 minLength: 1 TodoAnother: required: - title - todo type: object properties: title: title: Title type: string maxLength: 50 minLength: 1 todo: $ref: '#/definitions/Todo' TodoRecursive: required: - title type: object properties: id: title: ID type: integer readOnly: true title: title: Title type: string maxLength: 50 minLength: 1 parent: $ref: '#/definitions/TodoRecursive' parent_id: type: integer title: Parent id x-nullable: true TodoTree: required: - title - children type: object properties: id: title: ID type: integer readOnly: true title: title: Title type: string maxLength: 50 minLength: 1 children: type: array items: $ref: '#/definitions/TodoTree' TodoYetAnother: required: - title type: object properties: title: title: Title type: string maxLength: 50 minLength: 1 todo: required: - title type: object properties: id: title: ID type: integer readOnly: true title: title: Title type: string maxLength: 50 minLength: 1 todo: required: - title type: object properties: id: title: ID type: integer readOnly: true title: title: Title type: string maxLength: 50 minLength: 1 readOnly: true readOnly: true example: title: parent todo: title: child todo: null OtherStuff: title: Other stuff description: the decorator should determine the serializer class for this required: - foo type: object properties: foo: title: Foo type: string minLength: 1 MethodFieldExample: title: Hint example type: object properties: hinted_bool: title: Hinted bool description: the type hint on the method should determine this to be a bool type: boolean readOnly: true hinted_int: title: Hinted int description: the type hint on the method should determine this to be an integer type: integer readOnly: true hinted_float: title: Hinted float description: the type hint on the method should determine this to be a number type: number readOnly: true hinted_decimal: title: Hinted decimal description: the type hint on the method should determine this to be a decimal type: string format: decimal readOnly: true hinted_datetime: title: Hinted datetime description: the type hint on the method should determine this to be a datetime type: string format: date-time readOnly: true hinted_date: title: Hinted date description: the type hint on the method should determine this to be a date type: string format: date readOnly: true hinted_uuid: title: Hinted uuid description: the type hint on the method should determine this to be a uuid type: string format: uuid readOnly: true hinted_unknown: title: Hinted unknown description: type hint is unknown, so is expected to fallback to string type: string readOnly: true non_hinted_number: title: Non hinted number description: No hint on the method, so this is expected to fallback to string type: string readOnly: true UserSerializerrr: required: - username - articles - snippets - hint_example type: object properties: id: title: ID type: integer readOnly: true username: title: Username description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. type: string pattern: ^[\w.@+-]+$ maxLength: 150 minLength: 1 email: title: Email address type: string format: email maxLength: 254 articles: type: array items: type: integer uniqueItems: true snippets: type: array items: type: integer uniqueItems: true last_connected_ip: title: Last connected ip description: i'm out of ideas type: string format: ipv4 readOnly: true minLength: 1 last_connected_at: title: Last connected at description: really? type: string format: date readOnly: true article_slugs: type: array items: type: string format: slug pattern: ^[-a-zA-Z0-9_]+$ readOnly: true uniqueItems: true other_stuff: $ref: '#/definitions/OtherStuff' hint_example: $ref: '#/definitions/MethodFieldExample' help_text_example_1: title: Help text example 1 description: help text on field is set, so this should appear in swagger type: integer readOnly: true help_text_example_2: title: Help text example 2 description: instance help_text is set, so should appear in swagger type: integer readOnly: true help_text_example_3: title: Help text example 3 description: "\n docstring is set so should appear in swagger as fallback\n\ \ :return:\n " type: integer readOnly: true