]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - support/doc/api/openapi.yaml
Merge branch 'develop' into 'develop'
[github/Chocobozzz/PeerTube.git] / support / doc / api / openapi.yaml
index 89d44074824f3ebdcba978ab9acf9337fd5dbb27..032d798fc42cea6288147183b18adeac356e7368 100644 (file)
@@ -1,7 +1,7 @@
 openapi: 3.0.0
 info:
   title: PeerTube
-  version: 1.4.0-rc.1
+  version: 2.0.0
   contact:
     name: PeerTube Community
     url: 'https://joinpeertube.org'
@@ -49,10 +49,6 @@ tags:
     description: >
       Each server exposes public information regarding supported videos and
       options.
-  - name: Feeds
-    description: |
-      Feeds of videos and feeds of comments allow to see updates and get them in
-      an aggregator or script of your choice.
   - name: Job
     description: >
       Jobs are long-running tasks enqueued and processed by the instance
@@ -113,9 +109,6 @@ x-tagGroups:
     tags:
       - Config
       - Server Following
-  - name: Notifications
-    tags:
-      - Feeds
   - name: Jobs
     tags:
       - Job
@@ -130,9 +123,6 @@ paths:
       summary: Get the account by name
       parameters:
         - $ref: '#/components/parameters/name'
-        - $ref: '#/components/parameters/start'
-        - $ref: '#/components/parameters/count'
-        - $ref: '#/components/parameters/sort'
       responses:
         '200':
           description: successful operation
@@ -170,40 +160,34 @@ paths:
             http -b GET https://peertube2.cpy.re/api/v1/accounts/{name}/videos
         - lang: Ruby
           source: |
-            require 'uri'
             require 'net/http'
+            require 'json'
 
-            url = URI("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
+            uri = URI.parse("https://peertube2.cpy.re/api/v1/accounts/{name}/videos")
 
-            http = Net::HTTP.new(url.host, url.port)
+            http = Net::HTTP.new(uri.host, uri.port)
             http.use_ssl = true
-            http.verify_mode = OpenSSL::SSL::VERIFY_NONE
 
-            request = Net::HTTP::Post.new(url)
-            request["content-type"] = 'application/json'
-            response = http.request(request)
-            puts response.read_body
+            response = http.get(uri.request_uri)
+
+            puts JSON.parse(response.read_body)
         - lang: Python
           source: |
-            import http.client
-
-            conn = http.client.HTTPSConnection("https://peertube2.cpy.re/api/v1")
+            import requests
 
-            headers = {
-              'content-type': "application/json"
-            }
+            r = requests.get("https://peertube2.cpy.re/api/v1//accounts/{name}/videos")
+            json = r.json()
 
-            conn.request("POST", "/accounts/{name}/videos", None, headers)
-
-            res = conn.getresponse()
-            data = res.read()
-
-            print(data.decode("utf-8"))
+            print(json)
   /accounts:
     get:
       tags:
         - Accounts
       summary: Get all accounts
+      parameters:
+        - $ref: '#/components/parameters/start'
+        - $ref: '#/components/parameters/count'
+        - $ref: '#/components/parameters/sort'
       responses:
         '200':
           description: successful operation
@@ -233,6 +217,10 @@ paths:
       responses:
         '200':
           description: successful operation
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ServerConfigAbout'
   /config/custom:
     get:
       summary: Get the runtime configuration of the server
@@ -244,6 +232,10 @@ paths:
       responses:
         '200':
           description: successful operation
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ServerConfigCustom'
     put:
       summary: Set the runtime configuration of the server
       tags:
@@ -264,44 +256,6 @@ paths:
       responses:
         '200':
           description: successful operation
-  '/feeds/videos.{format}':
-    get:
-      summary: >-
-        Get the feed of videos for the server, with optional filter by account
-        name or id
-      tags:
-        - Feeds
-      parameters:
-        - name: format
-          in: path
-          required: true
-          description: >-
-            The format expected (xml defaults to RSS 2.0, atom to ATOM 1.0 and
-            json to JSON FEED 1.0
-          schema:
-            type: string
-            enum:
-              - xml
-              - atom
-              - json
-            default: xml
-        - name: accountId
-          in: query
-          required: false
-          description: >-
-            The id of the local account to filter to (beware, users IDs and not
-            actors IDs which will return empty feeds
-          schema:
-            type: number
-        - name: accountName
-          in: query
-          required: false
-          description: The name of the local account to filter to
-          schema:
-            type: string
-      responses:
-        '200':
-          description: successful operation
   /jobs/{state}:
     get:
       summary: Get list of jobs
@@ -2254,8 +2208,6 @@ components:
       properties:
         id:
           type: number
-        uuid:
-          type: string
         url:
           type: string
         name:
@@ -2276,8 +2228,12 @@ components:
       allOf:
         - $ref: '#/components/schemas/Actor'
         - properties:
+            userId:
+              type: string
             displayName:
               type: string
+            description:
+              type: string
     User:
       properties:
         id:
@@ -2321,18 +2277,102 @@ components:
           type: number
     ServerConfig:
       properties:
+        instance:
+          type: object
+          properties:
+            name:
+              type: string
+            shortDescription:
+              type: string
+            defaultClientRoute:
+              type: string
+            isNSFW:
+              type: boolean
+            defaultNSFWPolicy:
+              type: string
+            customizations:
+              type: object
+              properties:
+                javascript:
+                  type: string
+                css:
+                  type: string
+        plugin:
+          type: object
+          properties:
+            registered:
+              type: array
+              items:
+                type: string
+        theme:
+          type: object
+          properties:
+            registered:
+              type: array
+              items:
+                type: string
+        email:
+          type: object
+          properties:
+            enabled:
+              type: boolean
+        contactForm:
+          type: object
+          properties:
+            enabled:
+              type: boolean
+        serverVersion:
+          type: string
+        serverCommit:
+          type: string
         signup:
           type: object
           properties:
             allowed:
               type: boolean
+            allowedForCurrentIP:
+              type: boolean
+            requiresEmailVerification:
+              type: boolean
         transcoding:
           type: object
           properties:
+            hls:
+              type: object
+              properties:
+                enabled:
+                  type: boolean
             enabledResolutions:
               type: array
               items:
                 type: number
+        import:
+          type: object
+          properties:
+            videos:
+              type: object
+              properties:
+                http:
+                  type: object
+                  properties:
+                    enabled:
+                      type: boolean
+                torrent:
+                  type: object
+                  properties:
+                    enabled:
+                      type: boolean
+        autoBlacklist:
+          type: object
+          properties:
+            videos:
+              type: object
+              properties:
+                ofUsers:
+                  type: object
+                  properties:
+                    enabled:
+                      type: boolean
         avatar:
           type: object
           properties:
@@ -2351,6 +2391,18 @@ components:
         video:
           type: object
           properties:
+            image:
+              type: object
+              properties:
+                extensions:
+                  type: array
+                  items:
+                    type: string
+                size:
+                  type: object
+                  properties:
+                    max:
+                      type: number
             file:
               type: object
               properties:
@@ -2358,6 +2410,202 @@ components:
                   type: array
                   items:
                     type: string
+        videoCaption:
+          type: object
+          properties:
+            file:
+              type: object
+              properties:
+                size:
+                  type: object
+                  properties:
+                    max:
+                      type: number
+                extensions:
+                  type: array
+                  items:
+                    type: string
+        user:
+          type: object
+          properties:
+            videoQuota:
+              type: number
+            videoQuotaDaily:
+              type: number
+        trending:
+          type: object
+          properties:
+            videos:
+              type: object
+              properties:
+                intervalDays:
+                  type: number
+        tracker:
+          type: object
+          properties:
+            enabled:
+              type: boolean
+    ServerConfigAbout:
+      properties:
+        instance:
+          type: object
+          properties:
+            name:
+              type: string
+            shortDescription:
+              type: string
+            description:
+              type: string
+            terms:
+              type: string
+    ServerConfigCustom:
+      properties:
+        instance:
+          type: object
+          properties:
+            name:
+              type: string
+            shortDescription:
+              type: string
+            description:
+              type: string
+            terms:
+              type: string
+            defaultClientRoute:
+              type: string
+            isNSFW:
+              type: boolean
+            defaultNSFWPolicy:
+              type: string
+            customizations:
+              type: object
+              properties:
+                javascript:
+                  type: string
+                css:
+                  type: string
+        theme:
+          type: object
+          properties:
+            default:
+              type: string
+        services:
+          type: object
+          properties:
+            twitter:
+              type: object
+              properties:
+                username:
+                  type: string
+                whitelisted:
+                  type: boolean
+        cache:
+          type: object
+          properties:
+            previews:
+              type: object
+              properties:
+                size:
+                  type: number
+            captions:
+              type: object
+              properties:
+                size:
+                  type: number
+        signup:
+          type: object
+          properties:
+            enabled:
+              type: boolean
+            limit:
+              type: number
+            requiresEmailVerification:
+              type: boolean
+        admin:
+          type: object
+          properties:
+            email:
+              type: string
+        contactForm:
+          type: object
+          properties:
+            enabled:
+              type: boolean
+        user:
+          type: object
+          properties:
+            videoQuota:
+              type: number
+            videoQuotaDaily:
+              type: number
+        transcoding:
+          type: object
+          properties:
+            enabled:
+              type: boolean
+            allowAdditionalExtensions:
+              type: boolean
+            allowAudioFiles:
+              type: boolean
+            threads:
+              type: number
+            resolutions:
+              type: object
+              properties:
+                240p:
+                  type: boolean
+                360p:
+                  type: boolean
+                480p:
+                  type: boolean
+                720p:
+                  type: boolean
+                1080p:
+                  type: boolean
+                2160p:
+                  type: boolean
+            hls:
+              type: object
+              properties:
+                enabled:
+                  type: boolean
+        import:
+          type: object
+          properties:
+            videos:
+              type: object
+              properties:
+                http:
+                  type: object
+                  properties:
+                    enabled:
+                      type: boolean
+                torrent:
+                  type: object
+                  properties:
+                    enabled:
+                      type: boolean
+        autoBlacklist:
+          type: object
+          properties:
+            videos:
+              type: object
+              properties:
+                ofUsers:
+                  type: object
+                  properties:
+                    enabled:
+                      type: boolean
+        followers:
+          type: object
+          properties:
+            instance:
+              type: object
+              properties:
+                enabled:
+                  type: boolean
+                manualApproval:
+                  type: boolean
     Follow:
       properties:
         id: