changeset 4889:52522c71ad1a

mod_rest: Add XEP-0363 HTTP Upload to schemas
author Kim Alvefur <zash@zash.se>
date Wed, 09 Feb 2022 00:34:36 +0100
parents dc7c9ae15f43
children 347894e08b4f
files mod_rest/res/openapi.yaml mod_rest/res/schema-xmpp.json
diffstat 2 files changed, 166 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mod_rest/res/openapi.yaml	Tue Feb 08 13:51:41 2022 +0100
+++ b/mod_rest/res/openapi.yaml	Wed Feb 09 00:34:36 2022 +0100
@@ -338,6 +338,10 @@
           $ref: '#/components/schemas/register'
         extdisco:
           $ref: '#/components/schemas/extdisco'
+        upload_request:
+          $ref: '#/components/schemas/upload_request'
+        upload_slot:
+          $ref: '#/components/schemas/upload_slot'
 
         error:
           $ref: '#/components/schemas/error'
@@ -1081,6 +1085,72 @@
       - username
       - password
 
+    upload_slot:
+      type: object
+      xml:
+        name: slot
+        namespace: urn:xmpp:http:upload:0
+      properties:
+        put:
+          type: object
+          properties:
+            url:
+              type: string
+              format: uri
+              xml:
+                attribute: true
+            headers:
+              type: array
+              items:
+                type: object
+                required:
+                - name
+                - value
+                xml:
+                  name: header
+                properties:
+                  name:
+                    type: string
+                    enum:
+                    - Authorization
+                    - Cookie
+                    - Expires
+                    xml:
+                      attribute: true
+                  value:
+                    type: string
+                    xml:
+                      text: true
+        get:
+          type: object
+          properties:
+            url:
+              type: string
+              format: uri
+              xml:
+                attribute: true
+    upload_request:
+      type: object
+      required:
+      - filename
+      - size
+      xml:
+        name: request
+        namespace: urn:xmpp:http:upload:0
+      properties:
+        filename:
+          type: string
+          xml:
+            attribute: true
+        content-type:
+          xml:
+            attribute: true
+            name: content-type
+        size:
+          type: integer
+          xml:
+            attribute: true
+
     error:
       description: Description of something gone wrong. See the Stanza Errors section in RFC 6120.
       type: object
--- a/mod_rest/res/schema-xmpp.json	Tue Feb 08 13:51:41 2022 +0100
+++ b/mod_rest/res/schema-xmpp.json	Wed Feb 09 00:34:36 2022 +0100
@@ -535,6 +535,102 @@
             "type" : {
                "$ref" : "#/_common/type"
             },
+            "upload_request" : {
+               "properties" : {
+                  "content-type" : {
+                     "xml" : {
+                        "attribute" : true,
+                        "name" : "content-type"
+                     }
+                  },
+                  "filename" : {
+                     "type" : "string",
+                     "xml" : {
+                        "attribute" : true
+                     }
+                  },
+                  "size" : {
+                     "type" : "integer",
+                     "xml" : {
+                        "attribute" : true
+                     }
+                  }
+               },
+               "required" : [
+                  "filename",
+                  "size"
+               ],
+               "type" : "object",
+               "xml" : {
+                  "name" : "request",
+                  "namespace" : "urn:xmpp:http:upload:0"
+               }
+            },
+            "upload_slot" : {
+               "properties" : {
+                  "get" : {
+                     "properties" : {
+                        "url" : {
+                           "format" : "uri",
+                           "type" : "string",
+                           "xml" : {
+                              "attribute" : true
+                           }
+                        }
+                     },
+                     "type" : "object"
+                  },
+                  "put" : {
+                     "properties" : {
+                        "headers" : {
+                           "items" : {
+                              "properties" : {
+                                 "name" : {
+                                    "enum" : [
+                                       "Authorization",
+                                       "Cookie",
+                                       "Expires"
+                                    ],
+                                    "type" : "string",
+                                    "xml" : {
+                                       "attribute" : true
+                                    }
+                                 },
+                                 "value" : {
+                                    "type" : "string",
+                                    "xml" : {
+                                       "text" : true
+                                    }
+                                 }
+                              },
+                              "required" : [
+                                 "name",
+                                 "value"
+                              ],
+                              "type" : "object",
+                              "xml" : {
+                                 "name" : "header"
+                              }
+                           },
+                           "type" : "array"
+                        },
+                        "url" : {
+                           "format" : "uri",
+                           "type" : "string",
+                           "xml" : {
+                              "attribute" : true
+                           }
+                        }
+                     },
+                     "type" : "object"
+                  }
+               },
+               "type" : "object",
+               "xml" : {
+                  "name" : "slot",
+                  "namespace" : "urn:xmpp:http:upload:0"
+               }
+            },
             "version" : {
                "description" : "Ask about software version information",
                "properties" : {