json 这是CKAN API的OpenAPI规范定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json 这是CKAN API的OpenAPI规范定义相关的知识,希望对你有一定的参考价值。

{
  "swagger": "2.0",
  "host": "example.com",
  "basePath": "/api/3/",
  "schemes": [
    "https"
  ],
  "info": {
    "description": "This is a CKAN OpenAPI Spec.",
    "version": "3"
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/activity": {
      "get": {
        "operationId": "activity",
        "parameters": [
          {
            "description": "Filter activities for that particular organization",
            "in": "query",
            "name": "organization",
            "type": "string"
          },
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "description": "Filter activities for that particular user",
            "in": "query",
            "name": "user",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/ActivityPage"
              },
              "type": "array"
            }
          }
        },
        "summary": "Fetch site activity, optionally filterd by user of org",
        "tags": [
          "site"
        ]
      }
    },
    "/datasets/": {
      "get": {
        "operationId": "list_datasets",
        "parameters": [
          {
            "description": "The field (and direction) on which sorting apply",
            "enum": [
              "views",
              "created",
              "last_modified",
              "followers",
              "reuses",
              "title",
              "-views",
              "-created",
              "-last_modified",
              "-followers",
              "-reuses",
              "-title"
            ],
            "in": "query",
            "name": "sort",
            "type": "string"
          },
          {
            "in": "query",
            "name": "geozone",
            "type": "string"
          },
          {
            "in": "query",
            "name": "license",
            "type": "string"
          },
          {
            "in": "query",
            "name": "extra",
            "type": "string"
          },
          {
            "description": "Selected facets to fetch",
            "enum": [
              "all",
              "geozone",
              "format",
              "featured",
              "tag",
              "granularity",
              "owner",
              "license",
              "extra",
              "temporal_coverage",
              "reuses",
              "organization",
              "badge"
            ],
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "facets",
            "type": "array"
          },
          {
            "in": "query",
            "name": "format",
            "type": "string"
          },
          {
            "default": 20,
            "description": "The page size",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "description": "The search query",
            "in": "query",
            "name": "q",
            "type": "string"
          },
          {
            "in": "query",
            "name": "featured",
            "type": "string"
          },
          {
            "in": "query",
            "name": "tag",
            "type": "string"
          },
          {
            "in": "query",
            "name": "temporal_coverage",
            "type": "string"
          },
          {
            "in": "query",
            "name": "granularity",
            "type": "string"
          },
          {
            "in": "query",
            "name": "owner",
            "type": "string"
          },
          {
            "in": "query",
            "name": "organization",
            "type": "string"
          },
          {
            "in": "query",
            "name": "badge",
            "type": "string"
          },
          {
            "description": "The page to display",
            "in": "query",
            "name": "page",
            "type": "integer"
          },
          {
            "in": "query",
            "name": "reuses",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/DatasetPage"
            }
          }
        },
        "summary": "List or search all datasets",
        "tags": [
          "datasets"
        ]
      },
      "post": {
        "operationId": "create_dataset",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Dataset"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Dataset"
            }
          },
          "400": {
            "description": "Validation error"
          }
        },
        "summary": "Create a new dataset",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/badges/": {
      "get": {
        "operationId": "available_dataset_badges",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "List all available dataset badges and their labels",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/checkurl/": {
      "get": {
        "operationId": "checkurl",
        "parameters": [
          {
            "description": "The URL to check",
            "in": "query",
            "name": "url",
            "required": true,
            "type": "string"
          },
          {
            "description": "The dataset related to the URL",
            "in": "query",
            "name": "group",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Checks that a URL exists and returns metadata",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/community_resources/": {
      "get": {
        "operationId": "list_community_resources",
        "parameters": [
          {
            "default": "-created",
            "description": "The sorting attribute",
            "in": "query",
            "name": "sort",
            "type": "string"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "description": "Filter activities for that particular dataset",
            "in": "query",
            "name": "dataset",
            "type": "string"
          },
          {
            "description": "Filter activities for that particular user",
            "in": "query",
            "name": "owner",
            "type": "string"
          },
          {
            "description": "Filter activities for that particular organization",
            "in": "query",
            "name": "organization",
            "type": "string"
          },
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/CommunityResourcePage"
            }
          }
        },
        "summary": "List all community resources",
        "tags": [
          "datasets"
        ]
      },
      "post": {
        "operationId": "create_community_resource",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CommunityResource"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/CommunityResource"
            }
          }
        },
        "summary": "Create a new community resource",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/community_resources/{community}/": {
      "delete": {
        "operationId": "delete_community_resource",
        "parameters": [
          {
            "description": "The community resource unique identifier",
            "in": "path",
            "name": "community",
            "required": true,
            "type": "string"
          },
          {
            "description": "The dataset ID or slug",
            "in": "query",
            "name": "dataset",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/CommunityResource"
            }
          }
        },
        "summary": "Delete a given community resource",
        "tags": [
          "datasets"
        ]
      },
      "get": {
        "operationId": "retrieve_community_resource",
        "parameters": [
          {
            "description": "The community resource unique identifier",
            "in": "path",
            "name": "community",
            "required": true,
            "type": "string"
          },
          {
            "description": "The dataset ID or slug",
            "in": "query",
            "name": "dataset",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/CommunityResource"
            }
          }
        },
        "summary": "Retrieve a community resource given its identifier",
        "tags": [
          "datasets"
        ]
      },
      "put": {
        "operationId": "update_community_resource",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CommunityResource"
            }
          },
          {
            "description": "The community resource unique identifier",
            "in": "path",
            "name": "community",
            "required": true,
            "type": "string"
          },
          {
            "description": "The dataset ID or slug",
            "in": "query",
            "name": "dataset",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/CommunityResource"
            }
          }
        },
        "summary": "Update a given community resource",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/community_resources/{community}/upload/": {
      "post": {
        "operationId": "upload_community_resource",
        "parameters": [
          {
            "description": "The community resource unique identifier",
            "in": "path",
            "name": "community",
            "required": true,
            "type": "string"
          },
          {
            "description": "The dataset ID or slug",
            "in": "query",
            "name": "dataset",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UploadedResource"
            }
          }
        },
        "summary": "Update the file related to a given community resource",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/frequencies/": {
      "get": {
        "operationId": "list_frequencies",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Frequency"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all available frequencies",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/full/": {
      "get": {
        "operationId": "list_datasets_full",
        "parameters": [
          {
            "description": "The field (and direction) on which sorting apply",
            "enum": [
              "views",
              "created",
              "last_modified",
              "followers",
              "reuses",
              "title",
              "-views",
              "-created",
              "-last_modified",
              "-followers",
              "-reuses",
              "-title"
            ],
            "in": "query",
            "name": "sort",
            "type": "string"
          },
          {
            "in": "query",
            "name": "geozone",
            "type": "string"
          },
          {
            "in": "query",
            "name": "license",
            "type": "string"
          },
          {
            "in": "query",
            "name": "extra",
            "type": "string"
          },
          {
            "description": "Selected facets to fetch",
            "enum": [
              "all",
              "geozone",
              "format",
              "featured",
              "tag",
              "granularity",
              "owner",
              "license",
              "extra",
              "temporal_coverage",
              "reuses",
              "organization",
              "badge"
            ],
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "facets",
            "type": "array"
          },
          {
            "in": "query",
            "name": "format",
            "type": "string"
          },
          {
            "default": 20,
            "description": "The page size",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "description": "The search query",
            "in": "query",
            "name": "q",
            "type": "string"
          },
          {
            "in": "query",
            "name": "featured",
            "type": "string"
          },
          {
            "in": "query",
            "name": "tag",
            "type": "string"
          },
          {
            "in": "query",
            "name": "temporal_coverage",
            "type": "string"
          },
          {
            "in": "query",
            "name": "granularity",
            "type": "string"
          },
          {
            "in": "query",
            "name": "owner",
            "type": "string"
          },
          {
            "in": "query",
            "name": "organization",
            "type": "string"
          },
          {
            "in": "query",
            "name": "badge",
            "type": "string"
          },
          {
            "description": "The page to display",
            "in": "query",
            "name": "page",
            "type": "integer"
          },
          {
            "in": "query",
            "name": "reuses",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/DatasetFullPage"
            }
          }
        },
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/licenses/": {
      "get": {
        "operationId": "list_licenses",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/License"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all available licenses",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/suggest/": {
      "get": {
        "operationId": "suggest_datasets",
        "parameters": [
          {
            "description": "The string to autocomplete/suggest",
            "in": "query",
            "name": "q",
            "required": true,
            "type": "string"
          },
          {
            "default": 10,
            "description": "The amount of suggestion to fetch",
            "in": "query",
            "name": "size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/DatasetSuggestion"
              },
              "type": "array"
            }
          }
        },
        "summary": "Suggest datasets",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/suggest/formats/": {
      "get": {
        "operationId": "suggest_formats",
        "parameters": [
          {
            "description": "The string to autocomplete/suggest",
            "in": "query",
            "name": "q",
            "required": true,
            "type": "string"
          },
          {
            "default": 10,
            "description": "The amount of suggestion to fetch",
            "in": "query",
            "name": "size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Suggest file formats",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset}/": {
      "delete": {
        "operationId": "delete_dataset",
        "parameters": [
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Dataset deleted"
          },
          "404": {
            "description": "Dataset not found"
          },
          "410": {
            "description": "Dataset has been deleted"
          }
        },
        "summary": "Delete a dataset given its identifier",
        "tags": [
          "datasets"
        ]
      },
      "get": {
        "operationId": "get_dataset",
        "parameters": [
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Dataset"
            }
          },
          "404": {
            "description": "Dataset not found"
          },
          "410": {
            "description": "Dataset has been deleted"
          }
        },
        "summary": "Get a dataset given its identifier",
        "tags": [
          "datasets"
        ]
      },
      "put": {
        "operationId": "update_dataset",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Dataset"
            }
          },
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Dataset"
            }
          },
          "400": {
            "description": "Validation error: your data cannot be updated for now, we have been notified of the error and we will fix it as soon as possible."
          },
          "404": {
            "description": "Dataset not found"
          },
          "410": {
            "description": "Dataset has been deleted"
          }
        },
        "summary": "Update a dataset given its identifier",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset}/badges/": {
      "post": {
        "operationId": "add_dataset_badge",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Badge"
            }
          },
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Badge"
            }
          }
        },
        "summary": "Create a new badge for a given dataset",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset}/badges/{badge_kind}/": {
      "delete": {
        "operationId": "delete_dataset_badge",
        "parameters": [
          {
            "in": "path",
            "name": "badge_kind",
            "required": true,
            "type": "string"
          },
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Delete a badge for a given dataset",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset}/featured/": {
      "delete": {
        "operationId": "unfeature_reuse",
        "parameters": [
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Dataset"
            }
          }
        },
        "summary": "Unmark the dataset as featured",
        "tags": [
          "datasets"
        ]
      },
      "post": {
        "operationId": "feature_dataset",
        "parameters": [
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Dataset"
            }
          }
        },
        "summary": "Mark the dataset as featured",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset}/full/": {
      "get": {
        "operationId": "get_dataset_full",
        "parameters": [
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/DatasetFull"
            }
          },
          "404": {
            "description": "Dataset not found"
          },
          "410": {
            "description": "Dataset has been deleted"
          }
        },
        "summary": "Get a dataset given its identifier",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset}/resources/": {
      "post": {
        "operationId": "create_resource",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Resource"
            }
          },
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Resource"
            }
          }
        },
        "summary": "Create a new resource for a given dataset",
        "tags": [
          "datasets"
        ]
      },
      "put": {
        "operationId": "update_resources",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "items": {
                "$ref": "#/definitions/Resource"
              },
              "type": "array"
            }
          },
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Resource"
            }
          }
        },
        "summary": "Reorder resources",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset}/resources/{rid}/": {
      "delete": {
        "operationId": "delete_resource",
        "parameters": [
          {
            "description": "The resource unique identifier",
            "in": "path",
            "name": "rid",
            "required": true,
            "type": "string"
          },
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Delete a given resource on a given dataset",
        "tags": [
          "datasets"
        ]
      },
      "put": {
        "operationId": "update_resource",
        "parameters": [
          {
            "description": "The resource unique identifier",
            "in": "path",
            "name": "rid",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Resource"
            }
          },
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Resource"
            }
          }
        },
        "summary": "Update a given resource on a given dataset",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset}/resources/{rid}/upload/": {
      "post": {
        "operationId": "upload_dataset_resource",
        "parameters": [
          {
            "description": "The resource unique identifier",
            "in": "path",
            "name": "rid",
            "required": true,
            "type": "string"
          },
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UploadedResource"
            }
          }
        },
        "summary": "Upload a file related to a given resource on a given dataset",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset}/upload/": {
      "post": {
        "consumes": [
          "multipart/form-data"
        ],
        "operationId": "upload_dataset_resources",
        "parameters": [
          {
            "in": "formData",
            "name": "file",
            "required": true,
            "type": "file"
          },
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UploadedResource"
            }
          }
        },
        "summary": "Upload a new dataset resource",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{dataset}/upload/community/": {
      "post": {
        "consumes": [
          "multipart/form-data"
        ],
        "operationId": "upload_community_resources",
        "parameters": [
          {
            "in": "formData",
            "name": "file",
            "required": true,
            "type": "file"
          },
          {
            "description": "The dataset ID or slug",
            "in": "path",
            "name": "dataset",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UploadedResource"
            }
          }
        },
        "summary": "Upload a new community resource",
        "tags": [
          "datasets"
        ]
      }
    },
    "/datasets/{id}/followers/": {
      "delete": {
        "description": "Returns the number of followers left after the operation",
        "operationId": "unfollow",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Unfollow an object given its ID",
        "tags": [
          "datasets"
        ]
      },
      "get": {
        "operationId": "list_followers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/FollowPage"
            }
          }
        },
        "summary": "List all followers for a given object",
        "tags": [
          "datasets"
        ]
      },
      "post": {
        "description": "Returns the number of followers left after the operation",
        "operationId": "follow",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Follow an object given its ID",
        "tags": [
          "datasets"
        ]
      }
    },
    "/discussions/": {
      "get": {
        "operationId": "list_discussions",
        "parameters": [
          {
            "default": "-created",
            "description": "The sorting attribute",
            "in": "query",
            "name": "sort",
            "type": "string"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          },
          {
            "description": "Filter discussions for a given subject",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "for",
            "type": "array"
          },
          {
            "description": "Filters discussions on their closed status if specified",
            "in": "query",
            "name": "closed",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/DiscussionPage"
            }
          }
        },
        "summary": "List all Discussions",
        "tags": [
          "discussions"
        ]
      },
      "post": {
        "operationId": "create_discussion",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Discussion"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Discussion"
            }
          }
        },
        "summary": "Create a new Discussion",
        "tags": [
          "discussions"
        ]
      }
    },
    "/discussions/{id}/": {
      "delete": {
        "operationId": "delete_discussion",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Discussion"
            }
          },
          "403": {
            "description": "Not allowed to delete this discussion"
          }
        },
        "summary": "Delete a discussion given its ID",
        "tags": [
          "discussions"
        ]
      },
      "get": {
        "operationId": "get_discussion",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Discussion"
            }
          }
        },
        "summary": "Get a discussion given its ID",
        "tags": [
          "discussions"
        ]
      },
      "post": {
        "operationId": "comment_discussion",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DiscussionResponse"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Discussion"
            }
          },
          "403": {
            "description": "Not allowed to close this discussion"
          }
        },
        "summary": "Add comment and optionnaly close a discussion given its ID",
        "tags": [
          "discussions"
        ]
      }
    },
    "/harvest/backends": {
      "get": {
        "operationId": "harvest_backends",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/HarvestBackend"
            }
          }
        },
        "summary": "List all available harvest backends",
        "tags": [
          "harvest"
        ]
      }
    },
    "/harvest/job/{ident}/": {
      "get": {
        "operationId": "get_harvest_job",
        "parameters": [
          {
            "in": "path",
            "name": "ident",
            "required": true,
            "type": "string"
          },
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/HarvestJob"
            }
          }
        },
        "summary": "List all jobs for a given source",
        "tags": [
          "harvest"
        ]
      }
    },
    "/harvest/job_status": {
      "get": {
        "operationId": "get_list_harvester_api",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all available harvesters",
        "tags": [
          "harvest"
        ]
      }
    },
    "/harvest/source/{ident}": {
      "delete": {
        "operationId": "delete_harvest_source",
        "parameters": [
          {
            "description": "A source ID or slug",
            "in": "path",
            "name": "ident",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/HarvestSource"
            }
          }
        },
        "tags": [
          "harvest"
        ]
      },
      "get": {
        "operationId": "get_harvest_source",
        "parameters": [
          {
            "description": "A source ID or slug",
            "in": "path",
            "name": "ident",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/HarvestSource"
            }
          }
        },
        "summary": "Get a single source given an ID or a slug",
        "tags": [
          "harvest"
        ]
      }
    },
    "/harvest/source/{ident}/jobs/": {
      "get": {
        "operationId": "list_harvest_jobs",
        "parameters": [
          {
            "in": "path",
            "name": "ident",
            "required": true,
            "type": "string"
          },
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/HarvestJobPage"
            }
          }
        },
        "summary": "List all jobs for a given source",
        "tags": [
          "harvest"
        ]
      }
    },
    "/harvest/source/{ident}/preview": {
      "get": {
        "operationId": "preview_harvest_source",
        "parameters": [
          {
            "description": "A source ID or slug",
            "in": "path",
            "name": "ident",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/HarvestJobPreview"
            }
          }
        },
        "summary": "Preview a single harvest source given an ID or a slug",
        "tags": [
          "harvest"
        ]
      }
    },
    "/harvest/source/{ident}/validate": {
      "post": {
        "operationId": "validate_harvest_source",
        "parameters": [
          {
            "description": "A source ID or slug",
            "in": "path",
            "name": "ident",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/HarvestSourceValidation"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/HarvestSource"
            }
          }
        },
        "summary": "Validate or reject an harvest source",
        "tags": [
          "harvest"
        ]
      }
    },
    "/harvest/sources/": {
      "get": {
        "operationId": "list_harvest_sources",
        "parameters": [
          {
            "description": "The organization or user ID to filter on",
            "in": "query",
            "name": "owner",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/HarvestSource"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all harvest sources",
        "tags": [
          "harvest"
        ]
      },
      "post": {
        "operationId": "create_harvest_source",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/HarvestSource"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/HarvestSource"
            }
          }
        },
        "summary": "Create a new harvests source",
        "tags": [
          "harvest"
        ]
      }
    },
    "/issues/": {
      "get": {
        "operationId": "list_issues",
        "parameters": [
          {
            "default": "-created",
            "description": "The sorting attribute",
            "in": "query",
            "name": "sort",
            "type": "string"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          },
          {
            "description": "Filter issues for a given subject",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "for",
            "type": "array"
          },
          {
            "description": "Filter closed issues. Filters issues on their closed status if specified",
            "in": "query",
            "name": "closed",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/IssuePage"
            }
          }
        },
        "summary": "List all Issues",
        "tags": [
          "issues"
        ]
      },
      "post": {
        "operationId": "create_issue",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Issue"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Issue"
            }
          }
        },
        "summary": "Create a new Issue",
        "tags": [
          "issues"
        ]
      }
    },
    "/issues/{id}/": {
      "get": {
        "operationId": "get_issue",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Issue"
            }
          }
        },
        "summary": "Get an issue given its ID",
        "tags": [
          "issues"
        ]
      },
      "post": {
        "operationId": "comment_issue",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IssueResponse"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Issue"
            }
          },
          "403": {
            "description": "Not allowed to close this issue"
          }
        },
        "summary": "Add comment and optionnaly close an issue given its ID",
        "tags": [
          "issues"
        ]
      }
    },
    "/me/": {
      "get": {
        "operationId": "get_me",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Me"
            }
          }
        },
        "summary": "Fetch the current user (me) identity",
        "tags": [
          "me"
        ]
      },
      "put": {
        "operationId": "update_me",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Me"
            }
          },
          "400": {
            "description": "Validation error"
          }
        },
        "summary": "Update my profile",
        "tags": [
          "me"
        ]
      }
    },
    "/me/apikey": {
      "delete": {
        "operationId": "clear_apikey",
        "responses": {
          "204": {
            "description": "API Key deleted/cleared"
          }
        },
        "summary": "Clear/destroy an apikey",
        "tags": [
          "me"
        ]
      },
      "post": {
        "operationId": "generate_apikey",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/ApiKey"
            }
          },
          "201": {
            "description": "API Key generated"
          }
        },
        "summary": "(Re)Generate my API Key",
        "tags": [
          "me"
        ]
      }
    },
    "/me/avatar": {
      "post": {
        "consumes": [
          "multipart/form-data"
        ],
        "operationId": "my_avatar",
        "parameters": [
          {
            "in": "formData",
            "name": "bbox",
            "type": "string"
          },
          {
            "in": "formData",
            "name": "file",
            "type": "file"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UploadedImage"
            }
          }
        },
        "summary": "Upload a new avatar",
        "tags": [
          "me"
        ]
      }
    },
    "/me/datasets/": {
      "get": {
        "operationId": "my_datasets",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/DatasetFull"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all my datasets (including private ones)",
        "tags": [
          "me"
        ]
      }
    },
    "/me/metrics/": {
      "get": {
        "operationId": "my_metrics",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/MyMetrics"
              },
              "type": "array"
            }
          }
        },
        "summary": "Fetch the current user (me) metrics",
        "tags": [
          "me"
        ]
      }
    },
    "/me/org_community_resources/": {
      "get": {
        "operationId": "my_org_community_resources",
        "parameters": [
          {
            "description": "The string to filter items",
            "in": "query",
            "name": "q",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/CommunityResource"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all community resources related to me and my organizations",
        "tags": [
          "me"
        ]
      }
    },
    "/me/org_datasets/": {
      "get": {
        "operationId": "my_org_datasets",
        "parameters": [
          {
            "description": "The string to filter items",
            "in": "query",
            "name": "q",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/DatasetFull"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all datasets related to me and my organizations",
        "tags": [
          "me"
        ]
      }
    },
    "/me/org_discussions/": {
      "get": {
        "operationId": "my_org_discussions",
        "parameters": [
          {
            "description": "The string to filter items",
            "in": "query",
            "name": "q",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Discussion"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all discussions related to my organizations",
        "tags": [
          "me"
        ]
      }
    },
    "/me/org_issues/": {
      "get": {
        "operationId": "my_org_issues",
        "parameters": [
          {
            "description": "The string to filter items",
            "in": "query",
            "name": "q",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Issue"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all issues related to my organizations",
        "tags": [
          "me"
        ]
      }
    },
    "/me/org_reuses/": {
      "get": {
        "operationId": "my_org_reuses",
        "parameters": [
          {
            "description": "The string to filter items",
            "in": "query",
            "name": "q",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Reuse"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all reuses related to me and my organizations",
        "tags": [
          "me"
        ]
      }
    },
    "/me/reuses/": {
      "get": {
        "operationId": "my_reuses",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Reuse"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all my reuses (including private ones)",
        "tags": [
          "me"
        ]
      }
    },
    "/metrics/{id}": {
      "get": {
        "description": "If day is set, start and end will be ignored",
        "operationId": "metrics_for",
        "parameters": [
          {
            "description": "Start of the period to fetch",
            "in": "query",
            "name": "start",
            "type": "string"
          },
          {
            "default": true,
            "description": "Either cumulative metrics or not",
            "in": "query",
            "name": "cumulative",
            "type": "string"
          },
          {
            "description": "End of the period to fetch",
            "in": "query",
            "name": "end",
            "type": "string"
          },
          {
            "description": "The object ID to fetch metric for",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Specific day date to fetch",
            "in": "query",
            "name": "day",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Metric"
              },
              "type": "array"
            }
          }
        },
        "summary": "Fetch metrics for an object given its ID",
        "tags": [
          "site"
        ]
      }
    },
    "/notifications/": {
      "get": {
        "operationId": "get_notifications",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Notification"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all current user pending notifications",
        "tags": [
          "notifications"
        ]
      }
    },
    "/oembeds/": {
      "get": {
        "description": "See: http://oembed.com/\n\n        The `references` are composed by a keyword (`kind`) followed by\n        the `id` each of those separated by commas.\n        E.g: dataset-5369992aa3a729239d205183,territory-fr-town-75056-comptes\n\n        Only datasets and territories are supported for now.",
        "operationId": "oembeds",
        "parameters": [
          {
            "description": "References of the resources to embed.",
            "in": "query",
            "name": "references",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "The returned payload is a list of OEmbed formatted responses",
        "tags": [
          "site"
        ]
      }
    },
    "/organizations/": {
      "get": {
        "operationId": "list_organizations",
        "parameters": [
          {
            "description": "The field (and direction) on which sorting apply",
            "enum": [
              "datasets",
              "name",
              "created",
              "views",
              "followers",
              "reuses",
              "-datasets",
              "-name",
              "-created",
              "-views",
              "-followers",
              "-reuses"
            ],
            "in": "query",
            "name": "sort",
            "type": "string"
          },
          {
            "in": "query",
            "name": "datasets",
            "type": "string"
          },
          {
            "description": "Selected facets to fetch",
            "enum": [
              "all",
              "permitted_reuses",
              "followers",
              "datasets",
              "badge",
              "reuses"
            ],
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "facets",
            "type": "array"
          },
          {
            "default": 20,
            "description": "The page size",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "description": "The search query",
            "in": "query",
            "name": "q",
            "type": "string"
          },
          {
            "in": "query",
            "name": "followers",
            "type": "string"
          },
          {
            "in": "query",
            "name": "reuses",
            "type": "string"
          },
          {
            "in": "query",
            "name": "permitted_reuses",
            "type": "string"
          },
          {
            "in": "query",
            "name": "badge",
            "type": "string"
          },
          {
            "description": "The page to display",
            "in": "query",
            "name": "page",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/OrganizationPage"
            }
          }
        },
        "summary": "List or search all organizations",
        "tags": [
          "organizations"
        ]
      },
      "post": {
        "operationId": "create_organization",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          },
          "400": {
            "description": "Validation error"
          }
        },
        "summary": "Create a new organization",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/badges/": {
      "get": {
        "operationId": "available_organization_badges",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "List all available organization badges and their labels",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/suggest/": {
      "get": {
        "operationId": "suggest_organizations",
        "parameters": [
          {
            "description": "The string to autocomplete/suggest",
            "in": "query",
            "name": "q",
            "required": true,
            "type": "string"
          },
          {
            "default": 10,
            "description": "The amount of suggestion to fetch",
            "in": "query",
            "name": "size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/OrganizationSuggestion"
              },
              "type": "array"
            }
          }
        },
        "summary": "Suggest organizations",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{id}/followers/": {
      "delete": {
        "description": "Returns the number of followers left after the operation",
        "operationId": "unfollow",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Unfollow an object given its ID",
        "tags": [
          "organizations"
        ]
      },
      "get": {
        "operationId": "list_followers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/FollowPage"
            }
          }
        },
        "summary": "List all followers for a given object",
        "tags": [
          "organizations"
        ]
      },
      "post": {
        "description": "Returns the number of followers left after the operation",
        "operationId": "follow",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Follow an object given its ID",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/": {
      "delete": {
        "operationId": "delete_organization",
        "parameters": [
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Organization deleted"
          },
          "404": {
            "description": "Organization not found"
          },
          "410": {
            "description": "Organization has been deleted"
          }
        },
        "summary": "Delete a organization given its identifier",
        "tags": [
          "organizations"
        ]
      },
      "get": {
        "operationId": "get_organization",
        "parameters": [
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          },
          "404": {
            "description": "Organization not found"
          },
          "410": {
            "description": "Organization has been deleted"
          }
        },
        "summary": "Get a organization given its identifier",
        "tags": [
          "organizations"
        ]
      },
      "put": {
        "operationId": "update_organization",
        "parameters": [
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          },
          "400": {
            "description": "Validation error: your data cannot be updated for now, we have been notified of the error and we will fix it as soon as possible."
          },
          "404": {
            "description": "Organization not found"
          },
          "410": {
            "description": "Organization has been deleted"
          }
        },
        "summary": "Update a organization given its identifier",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/badges/": {
      "post": {
        "operationId": "add_organization_badge",
        "parameters": [
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Badge"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Badge"
            }
          }
        },
        "summary": "Create a new badge for a given organization",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/badges/{badge_kind}/": {
      "delete": {
        "operationId": "delete_organization_badge",
        "parameters": [
          {
            "in": "path",
            "name": "badge_kind",
            "required": true,
            "type": "string"
          },
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Delete a badge for a given organization",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/datasets/": {
      "get": {
        "operationId": "list_organization_datasets",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/DatasetFull"
              },
              "type": "array"
            }
          }
        },
        "summary": "List organization datasets (including private ones when member)",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/discussions/": {
      "get": {
        "operationId": "list_organization_discussions",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Discussion"
              },
              "type": "array"
            }
          }
        },
        "summary": "List organization discussions",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/issues/": {
      "get": {
        "operationId": "list_organization_issues",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Issue"
              },
              "type": "array"
            }
          }
        },
        "summary": "List organization issues",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/logo": {
      "post": {
        "consumes": [
          "multipart/form-data"
        ],
        "operationId": "organization_logo",
        "parameters": [
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          },
          {
            "in": "formData",
            "name": "bbox",
            "type": "string"
          },
          {
            "in": "formData",
            "name": "file",
            "type": "file"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UploadedImage"
            }
          }
        },
        "summary": "Upload a new logo",
        "tags": [
          "organizations"
        ]
      },
      "put": {
        "consumes": [
          "multipart/form-data"
        ],
        "operationId": "resize_organization_logo",
        "parameters": [
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          },
          {
            "in": "formData",
            "name": "bbox",
            "type": "string"
          },
          {
            "in": "formData",
            "name": "file",
            "type": "file"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UploadedImage"
            }
          }
        },
        "summary": "Set the logo BBox",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/member/{user}": {
      "delete": {
        "operationId": "delete_organization_member",
        "parameters": [
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "user",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "403": {
            "description": "Not Authorized"
          }
        },
        "summary": "Delete member from an organization",
        "tags": [
          "organizations"
        ]
      },
      "post": {
        "operationId": "create_organization_member",
        "parameters": [
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "user",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Member"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Member"
            }
          },
          "403": {
            "description": "Not Authorized"
          },
          "409": {
            "description": "User is already member",
            "schema": {
              "$ref": "#/definitions/Member"
            }
          }
        },
        "summary": "Add a member into a given organization",
        "tags": [
          "organizations"
        ]
      },
      "put": {
        "operationId": "update_organization_member",
        "parameters": [
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "user",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Member"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Member"
            }
          },
          "403": {
            "description": "Not Authorized"
          }
        },
        "summary": "Update member status into a given organization",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/membership/": {
      "get": {
        "operationId": "list_membership_requests",
        "parameters": [
          {
            "description": "If provided, only return requests ith a given status",
            "in": "query",
            "name": "status",
            "type": "string"
          },
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/MembershipRequest"
              },
              "type": "array"
            }
          },
          "403": {
            "description": "Not Authorized"
          }
        },
        "summary": "List membership requests for a given organization",
        "tags": [
          "organizations"
        ]
      },
      "post": {
        "operationId": "post_membership_request_api",
        "parameters": [
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/MembershipRequest"
            }
          }
        },
        "summary": "Apply for membership to a given organization",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/membership/{id}/accept/": {
      "post": {
        "operationId": "accept_membership",
        "parameters": [
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Member"
            }
          }
        },
        "summary": "Accept user membership to a given organization",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/membership/{id}/refuse/": {
      "post": {
        "operationId": "refuse_membership",
        "parameters": [
          {
            "description": "The refusal reason",
            "in": "body",
            "name": "comment",
            "type": "string"
          },
          {
            "description": "The organization ID or slug",
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          },
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RefuseMembership"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Refuse user membership to a given organization",
        "tags": [
          "organizations"
        ]
      }
    },
    "/organizations/{org}/reuses/": {
      "get": {
        "operationId": "list_organization_reuses",
        "parameters": [
          {
            "in": "path",
            "name": "org",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Reuse"
              },
              "type": "array"
            }
          }
        },
        "summary": "List organization reuses (including private ones when member)",
        "tags": [
          "organizations"
        ]
      }
    },
    "/posts/": {
      "get": {
        "operationId": "list_posts",
        "parameters": [
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/PostPage"
            }
          }
        },
        "summary": "List all posts",
        "tags": [
          "posts"
        ]
      },
      "post": {
        "operationId": "create_post",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Post"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Post"
            }
          },
          "400": {
            "description": "Validation error"
          }
        },
        "summary": "Create a post",
        "tags": [
          "posts"
        ]
      }
    },
    "/posts/{post}/": {
      "delete": {
        "operationId": "delete_post",
        "parameters": [
          {
            "description": "The post ID or slug",
            "in": "path",
            "name": "post",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "type": "void"
            }
          },
          "204": {
            "description": "Object deleted"
          },
          "404": {
            "description": "Object not found"
          }
        },
        "summary": "Delete a given post",
        "tags": [
          "posts"
        ]
      },
      "get": {
        "operationId": "get_post",
        "parameters": [
          {
            "description": "The post ID or slug",
            "in": "path",
            "name": "post",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Post"
            }
          },
          "404": {
            "description": "Object not found"
          }
        },
        "summary": "Get a given post",
        "tags": [
          "posts"
        ]
      },
      "put": {
        "operationId": "update_post",
        "parameters": [
          {
            "description": "The post ID or slug",
            "in": "path",
            "name": "post",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Post"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Post"
            }
          },
          "400": {
            "description": "Validation error"
          },
          "404": {
            "description": "Object not found"
          }
        },
        "summary": "Update a given post",
        "tags": [
          "posts"
        ]
      }
    },
    "/posts/{post}/image": {
      "post": {
        "consumes": [
          "multipart/form-data"
        ],
        "operationId": "post_image",
        "parameters": [
          {
            "in": "path",
            "name": "post",
            "required": true,
            "type": "string"
          },
          {
            "in": "formData",
            "name": "bbox",
            "type": "string"
          },
          {
            "in": "formData",
            "name": "file",
            "type": "file"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UploadedImage"
            }
          }
        },
        "summary": "Upload a new image",
        "tags": [
          "posts"
        ]
      },
      "put": {
        "consumes": [
          "multipart/form-data"
        ],
        "operationId": "resize_post_image",
        "parameters": [
          {
            "in": "path",
            "name": "post",
            "required": true,
            "type": "string"
          },
          {
            "in": "formData",
            "name": "bbox",
            "type": "string"
          },
          {
            "in": "formData",
            "name": "file",
            "type": "file"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UploadedImage"
            }
          }
        },
        "summary": "Set the image BBox",
        "tags": [
          "posts"
        ]
      }
    },
    "/reuses/": {
      "get": {
        "operationId": "list_reuses",
        "parameters": [
          {
            "description": "The field (and direction) on which sorting apply",
            "enum": [
              "datasets",
              "views",
              "created",
              "last_modified",
              "followers",
              "title",
              "-datasets",
              "-views",
              "-created",
              "-last_modified",
              "-followers",
              "-title"
            ],
            "in": "query",
            "name": "sort",
            "type": "string"
          },
          {
            "in": "query",
            "name": "datasets",
            "type": "string"
          },
          {
            "in": "query",
            "name": "extra",
            "type": "string"
          },
          {
            "in": "query",
            "name": "type",
            "type": "string"
          },
          {
            "description": "Selected facets to fetch",
            "enum": [
              "all",
              "featured",
              "tag",
              "followers",
              "badge",
              "extra",
              "owner",
              "organization",
              "datasets",
              "type",
              "dataset"
            ],
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "facets",
            "type": "array"
          },
          {
            "default": 20,
            "description": "The page size",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "in": "query",
            "name": "dataset",
            "type": "string"
          },
          {
            "description": "The search query",
            "in": "query",
            "name": "q",
            "type": "string"
          },
          {
            "in": "query",
            "name": "featured",
            "type": "string"
          },
          {
            "in": "query",
            "name": "tag",
            "type": "string"
          },
          {
            "in": "query",
            "name": "followers",
            "type": "string"
          },
          {
            "in": "query",
            "name": "owner",
            "type": "string"
          },
          {
            "in": "query",
            "name": "organization",
            "type": "string"
          },
          {
            "in": "query",
            "name": "badge",
            "type": "string"
          },
          {
            "description": "The page to display",
            "in": "query",
            "name": "page",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/ReusePage"
            }
          }
        },
        "tags": [
          "reuses"
        ]
      },
      "post": {
        "operationId": "create_reuse",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Reuse"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Reuse"
            }
          },
          "400": {
            "description": "Validation error"
          }
        },
        "summary": "Create a new object",
        "tags": [
          "reuses"
        ]
      }
    },
    "/reuses/badges/": {
      "get": {
        "operationId": "available_reuse_badges",
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "List all available reuse badges and their labels",
        "tags": [
          "reuses"
        ]
      }
    },
    "/reuses/suggest/": {
      "get": {
        "operationId": "suggest_reuses",
        "parameters": [
          {
            "description": "The string to autocomplete/suggest",
            "in": "query",
            "name": "q",
            "required": true,
            "type": "string"
          },
          {
            "default": 10,
            "description": "The amount of suggestion to fetch",
            "in": "query",
            "name": "size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/ReuseSuggestion"
              },
              "type": "array"
            }
          }
        },
        "summary": "Suggest reuses",
        "tags": [
          "reuses"
        ]
      }
    },
    "/reuses/types/": {
      "get": {
        "operationId": "reuse_types",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/ReuseType"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all reuse types",
        "tags": [
          "reuses"
        ]
      }
    },
    "/reuses/{id}/followers/": {
      "delete": {
        "description": "Returns the number of followers left after the operation",
        "operationId": "unfollow",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Unfollow an object given its ID",
        "tags": [
          "reuses"
        ]
      },
      "get": {
        "operationId": "list_followers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/FollowPage"
            }
          }
        },
        "summary": "List all followers for a given object",
        "tags": [
          "reuses"
        ]
      },
      "post": {
        "description": "Returns the number of followers left after the operation",
        "operationId": "follow",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Follow an object given its ID",
        "tags": [
          "reuses"
        ]
      }
    },
    "/reuses/{reuse}/": {
      "delete": {
        "operationId": "delete_reuse",
        "parameters": [
          {
            "description": "The reuse ID or slug",
            "in": "path",
            "name": "reuse",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Reuse deleted"
          },
          "404": {
            "description": "Reuse not found"
          },
          "410": {
            "description": "Reuse has been deleted"
          }
        },
        "summary": "Delete a given reuse",
        "tags": [
          "reuses"
        ]
      },
      "get": {
        "operationId": "get_reuse",
        "parameters": [
          {
            "description": "The reuse ID or slug",
            "in": "path",
            "name": "reuse",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Reuse"
            }
          },
          "404": {
            "description": "Reuse not found"
          },
          "410": {
            "description": "Reuse has been deleted"
          }
        },
        "summary": "Fetch a given reuse",
        "tags": [
          "reuses"
        ]
      },
      "put": {
        "operationId": "update_reuse",
        "parameters": [
          {
            "description": "The reuse ID or slug",
            "in": "path",
            "name": "reuse",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Reuse"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Reuse"
            }
          },
          "400": {
            "description": "Validation error: your data cannot be updated for now, we have been notified of the error and we will fix it as soon as possible."
          },
          "404": {
            "description": "Reuse not found"
          },
          "410": {
            "description": "Reuse has been deleted"
          }
        },
        "summary": "Update a given reuse",
        "tags": [
          "reuses"
        ]
      }
    },
    "/reuses/{reuse}/badges/": {
      "post": {
        "operationId": "add_reuse_badge",
        "parameters": [
          {
            "description": "The reuse ID or slug",
            "in": "path",
            "name": "reuse",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Badge"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Badge"
            }
          }
        },
        "summary": "Create a new badge for a given reuse",
        "tags": [
          "reuses"
        ]
      }
    },
    "/reuses/{reuse}/badges/{badge_kind}/": {
      "delete": {
        "operationId": "delete_reuse_badge",
        "parameters": [
          {
            "in": "path",
            "name": "badge_kind",
            "required": true,
            "type": "string"
          },
          {
            "description": "The reuse ID or slug",
            "in": "path",
            "name": "reuse",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Delete a badge for a given reuse",
        "tags": [
          "reuses"
        ]
      }
    },
    "/reuses/{reuse}/datasets/": {
      "post": {
        "operationId": "reuse_add_dataset",
        "parameters": [
          {
            "description": "The reuse ID or slug",
            "in": "path",
            "name": "reuse",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DatasetReference"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The dataset is already present",
            "schema": {
              "$ref": "#/definitions/Reuse"
            }
          },
          "201": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Reuse"
            }
          }
        },
        "summary": "Add a dataset to a given reuse",
        "tags": [
          "reuses"
        ]
      }
    },
    "/reuses/{reuse}/featured/": {
      "delete": {
        "operationId": "unfeature_reuse",
        "parameters": [
          {
            "description": "The reuse ID or slug",
            "in": "path",
            "name": "reuse",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Reuse"
            }
          }
        },
        "summary": "Unmark a reuse as featured",
        "tags": [
          "reuses"
        ]
      },
      "post": {
        "operationId": "feature_reuse",
        "parameters": [
          {
            "description": "The reuse ID or slug",
            "in": "path",
            "name": "reuse",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Reuse"
            }
          }
        },
        "summary": "Mark a reuse as featured",
        "tags": [
          "reuses"
        ]
      }
    },
    "/reuses/{reuse}/image": {
      "post": {
        "consumes": [
          "multipart/form-data"
        ],
        "operationId": "reuse_image",
        "parameters": [
          {
            "description": "The reuse ID or slug",
            "in": "path",
            "name": "reuse",
            "required": true,
            "type": "string"
          },
          {
            "in": "formData",
            "name": "file",
            "type": "file"
          },
          {
            "in": "formData",
            "name": "bbox",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UploadedImage"
            }
          }
        },
        "summary": "Upload a new reuse image",
        "tags": [
          "reuses"
        ]
      }
    },
    "/site/": {
      "get": {
        "operationId": "get_site",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Site"
            }
          }
        },
        "summary": "Site-wide variables",
        "tags": [
          "site"
        ]
      }
    },
    "/site/home/datasets/": {
      "get": {
        "operationId": "get_home_datasets",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/DatasetReference"
              },
              "type": "array"
            }
          }
        },
        "summary": "List homepage datasets",
        "tags": [
          "site"
        ]
      },
      "put": {
        "operationId": "set_home_datasets",
        "parameters": [
          {
            "description": "Dataset IDs to put in homepage",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/DatasetReference"
              },
              "type": "array"
            }
          }
        },
        "summary": "Set the homepage datasets editorial selection",
        "tags": [
          "site"
        ]
      }
    },
    "/site/home/reuses/": {
      "get": {
        "operationId": "get_home_reuses",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/ReuseReference"
              },
              "type": "array"
            }
          }
        },
        "summary": "List homepage featured reuses",
        "tags": [
          "site"
        ]
      },
      "put": {
        "operationId": "set_home_reuses",
        "parameters": [
          {
            "description": "Reuse IDs to put in homepage",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/ReuseReference"
              },
              "type": "array"
            }
          }
        },
        "summary": "Set the homepage reuses editorial selection",
        "tags": [
          "site"
        ]
      }
    },
    "/spatial/coverage/{level}": {
      "get": {
        "operationId": "spatial_coverage",
        "parameters": [
          {
            "in": "path",
            "name": "level",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/GeoJSONFeatureCollection"
              },
              "type": "array"
            }
          }
        },
        "summary": "List each zone for a given level with their datasets count",
        "tags": [
          "spatial"
        ]
      }
    },
    "/spatial/granularities": {
      "get": {
        "operationId": "spatial_granularities",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/GeoGranularity"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all known spatial granularities",
        "tags": [
          "spatial"
        ]
      }
    },
    "/spatial/levels": {
      "get": {
        "operationId": "spatial_levels",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/GeoLevel"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all known levels",
        "tags": [
          "spatial"
        ]
      }
    },
    "/spatial/zone/{id}": {
      "get": {
        "operationId": "spatial_zone",
        "parameters": [
          {
            "description": "A zone identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/TerritorySuggestion"
            }
          }
        },
        "summary": "Fetch a zone",
        "tags": [
          "spatial"
        ]
      }
    },
    "/spatial/zones/suggest": {
      "get": {
        "operationId": "suggest_zones",
        "parameters": [
          {
            "description": "The string to autocomplete/suggest",
            "in": "query",
            "name": "q",
            "required": true,
            "type": "string"
          },
          {
            "default": 10,
            "description": "The amount of suggestion to fetch",
            "in": "query",
            "name": "size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/TerritorySuggestion"
              },
              "type": "array"
            }
          }
        },
        "summary": "Suggest geospatial zones",
        "tags": [
          "spatial"
        ]
      }
    },
    "/spatial/zones/{ids}": {
      "get": {
        "operationId": "spatial_zones",
        "parameters": [
          {
            "description": "A zone identifiers list (comma separated)",
            "in": "path",
            "name": "ids",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/GeoJSONFeatureCollection"
            }
          }
        },
        "summary": "Fetch a zone list as GeoJSON",
        "tags": [
          "spatial"
        ]
      }
    },
    "/tags/suggest/": {
      "get": {
        "operationId": "suggest_tags",
        "parameters": [
          {
            "description": "The string to autocomplete/suggest",
            "in": "query",
            "name": "q",
            "required": true,
            "type": "string"
          },
          {
            "default": 8,
            "description": "The amount of suggestion to fetch",
            "in": "query",
            "name": "size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Suggest tags",
        "tags": [
          "tags"
        ]
      }
    },
    "/territory/suggest/": {
      "get": {
        "operationId": "suggest_territory",
        "parameters": [
          {
            "description": "The string to autocomplete/suggest",
            "in": "query",
            "name": "q",
            "required": true,
            "type": "string"
          },
          {
            "description": "The maximum result size",
            "in": "query",
            "name": "size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "tags": [
          "site"
        ]
      }
    },
    "/topics/": {
      "get": {
        "operationId": "list_topics",
        "parameters": [
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/TopicPage"
            }
          }
        },
        "summary": "List all topics",
        "tags": [
          "topics"
        ]
      },
      "post": {
        "operationId": "create_topic",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Topic"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Topic"
            }
          },
          "400": {
            "description": "Validation error"
          }
        },
        "summary": "Create a topic",
        "tags": [
          "topics"
        ]
      }
    },
    "/topics/{topic}/": {
      "delete": {
        "operationId": "delete_topic",
        "parameters": [
          {
            "description": "The topic ID or slug",
            "in": "path",
            "name": "topic",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "type": "void"
            }
          },
          "204": {
            "description": "Object deleted"
          },
          "404": {
            "description": "Object not found"
          }
        },
        "summary": "Delete a given topic",
        "tags": [
          "topics"
        ]
      },
      "get": {
        "operationId": "get_topic",
        "parameters": [
          {
            "description": "The topic ID or slug",
            "in": "path",
            "name": "topic",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Topic"
            }
          },
          "404": {
            "description": "Object not found"
          }
        },
        "summary": "Get a given topic",
        "tags": [
          "topics"
        ]
      },
      "put": {
        "operationId": "update_topic",
        "parameters": [
          {
            "description": "The topic ID or slug",
            "in": "path",
            "name": "topic",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Topic"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Topic"
            }
          },
          "400": {
            "description": "Validation error"
          },
          "404": {
            "description": "Object not found"
          }
        },
        "summary": "Update a given topic",
        "tags": [
          "topics"
        ]
      }
    },
    "/transfer/": {
      "get": {
        "operationId": "list_transfers",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Transfer"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all transfer requests",
        "tags": [
          "transfer"
        ]
      },
      "post": {
        "operationId": "request_transfer",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransferRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Transfer"
            }
          }
        },
        "summary": "Initiate transfer request",
        "tags": [
          "transfer"
        ]
      }
    },
    "/transfer/{id}/": {
      "get": {
        "operationId": "get_transfer",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Transfer"
            }
          }
        },
        "summary": "Fetch a transfer request given its identifier",
        "tags": [
          "transfer"
        ]
      },
      "post": {
        "operationId": "respond_to_transfer",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransferResponse"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Transfer"
            }
          }
        },
        "summary": "Respond to a transfer request",
        "tags": [
          "transfer"
        ]
      }
    },
    "/users/": {
      "get": {
        "operationId": "list_users",
        "parameters": [
          {
            "description": "The field (and direction) on which sorting apply",
            "enum": [
              "first_name",
              "last_name",
              "views",
              "created",
              "datasets",
              "followers",
              "reuses",
              "-first_name",
              "-last_name",
              "-views",
              "-created",
              "-datasets",
              "-followers",
              "-reuses"
            ],
            "in": "query",
            "name": "sort",
            "type": "string"
          },
          {
            "in": "query",
            "name": "datasets",
            "type": "string"
          },
          {
            "description": "Selected facets to fetch",
            "enum": [
              "all",
              "organization",
              "datasets",
              "reuses"
            ],
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "facets",
            "type": "array"
          },
          {
            "default": 20,
            "description": "The page size",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "description": "The search query",
            "in": "query",
            "name": "q",
            "type": "string"
          },
          {
            "in": "query",
            "name": "reuses",
            "type": "string"
          },
          {
            "in": "query",
            "name": "organization",
            "type": "string"
          },
          {
            "description": "The page to display",
            "in": "query",
            "name": "page",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/UserPage"
            }
          }
        },
        "summary": "List all objects",
        "tags": [
          "users"
        ]
      },
      "post": {
        "operationId": "create_user",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "400": {
            "description": "Validation error"
          }
        },
        "summary": "Create a new object",
        "tags": [
          "users"
        ]
      }
    },
    "/users/suggest/": {
      "get": {
        "operationId": "suggest_users",
        "parameters": [
          {
            "description": "The string to autocomplete/suggest",
            "in": "query",
            "name": "q",
            "required": true,
            "type": "string"
          },
          {
            "default": 10,
            "description": "The amount of suggestion to fetch",
            "in": "query",
            "name": "size",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/UserSuggestion"
              },
              "type": "array"
            }
          }
        },
        "summary": "Suggest users",
        "tags": [
          "users"
        ]
      }
    },
    "/users/{id}/followers/": {
      "delete": {
        "description": "Returns the number of followers left after the operation",
        "operationId": "unfollow",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Unfollow an object given its ID",
        "tags": [
          "users"
        ]
      },
      "get": {
        "operationId": "list_followers",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "default": 20,
            "description": "The page size to fetch",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "default": 1,
            "description": "The page to fetch",
            "in": "query",
            "name": "page",
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/FollowPage"
            }
          }
        },
        "summary": "List all followers for a given object",
        "tags": [
          "users"
        ]
      },
      "post": {
        "operationId": "post_follow_user_api",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "summary": "Follow an user given its ID",
        "tags": [
          "users"
        ]
      }
    },
    "/users/{user}/": {
      "delete": {
        "operationId": "delete_user_api",
        "parameters": [
          {
            "in": "path",
            "name": "user",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "type": "void"
            }
          },
          "204": {
            "description": "Object deleted"
          },
          "404": {
            "description": "Object not found"
          }
        },
        "summary": "Delete a given object",
        "tags": [
          "users"
        ]
      },
      "get": {
        "operationId": "get_user",
        "parameters": [
          {
            "in": "path",
            "name": "user",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "404": {
            "description": "Object not found"
          }
        },
        "summary": "Get a given object",
        "tags": [
          "users"
        ]
      },
      "put": {
        "operationId": "update_user",
        "parameters": [
          {
            "in": "path",
            "name": "user",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/User"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "400": {
            "description": "Validation error"
          },
          "404": {
            "description": "Object not found"
          }
        },
        "summary": "Update a given object",
        "tags": [
          "users"
        ]
      }
    },
    "/workers/jobs/": {
      "get": {
        "operationId": "list_jobs",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "$ref": "#/definitions/Job"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all scheduled jobs",
        "tags": [
          "workers"
        ]
      },
      "post": {
        "operationId": "post_jobs_api",
        "parameters": [
          {
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Job"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Job"
            }
          }
        },
        "summary": "Create a new scheduled job",
        "tags": [
          "workers"
        ]
      }
    },
    "/workers/jobs/schedulables": {
      "get": {
        "operationId": "get_jobs_reference_api",
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          }
        },
        "summary": "List all schedulable jobs",
        "tags": [
          "workers"
        ]
      }
    },
    "/workers/jobs/{id}": {
      "delete": {
        "operationId": "delete_job_api",
        "parameters": [
          {
            "description": "A job ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfuly deleted"
          }
        },
        "summary": "Delete a single scheduled job",
        "tags": [
          "workers"
        ]
      },
      "get": {
        "operationId": "get_job_api",
        "parameters": [
          {
            "description": "A job ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Job"
            }
          }
        },
        "summary": "Fetch a single scheduled job",
        "tags": [
          "workers"
        ]
      },
      "put": {
        "operationId": "put_job_api",
        "parameters": [
          {
            "description": "A job ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Job"
            }
          }
        },
        "summary": "Update a single scheduled job",
        "tags": [
          "workers"
        ]
      }
    },
    "/workers/tasks/{id}": {
      "get": {
        "operationId": "get_task_api",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/Task"
            }
          }
        },
        "summary": "Get a tasks status given its ID",
        "tags": [
          "workers"
        ]
      }
    }
  },
  "definitions": {
    "Activity": {
      "properties": {
        "actor": {
          "$ref": "#/definitions/UserReference",
          "description": "The user who performed the action",
          "readOnly": true
        },
        "created_at": {
          "description": "When the action has been performed",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "icon": {
          "description": "The icon of the activity",
          "type": "string"
        },
        "key": {
          "description": "The key of the activity",
          "type": "string"
        },
        "kwargs": {
          "description": "Some action specific context",
          "type": "object"
        },
        "label": {
          "description": "The label of the activity",
          "type": "string"
        },
        "organization": {
          "$ref": "#/definitions/OrganizationReference",
          "description": "The organization who performed the action",
          "readOnly": true
        },
        "related_to": {
          "description": "The activity target name",
          "type": "string"
        },
        "related_to_id": {
          "description": "The activity target object identifier",
          "type": "string"
        },
        "related_to_kind": {
          "description": "The activity target object class name",
          "type": "string"
        },
        "related_to_url": {
          "description": "The activity target model",
          "type": "string"
        }
      },
      "required": [
        "icon",
        "key",
        "label",
        "related_to",
        "related_to_id",
        "related_to_kind",
        "related_to_url"
      ]
    },
    "ActivityPage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/Activity"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "ApiKey": {
      "properties": {
        "apikey": {
          "description": "The user API Key",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "Badge": {
      "properties": {
        "kind": {
          "description": "Kind of badge (certified, etc), specific to each model",
          "type": "string"
        }
      },
      "required": [
        "kind"
      ]
    },
    "BaseReference": {
      "discriminator": "class",
      "properties": {
        "class": {
          "description": "The object class",
          "type": "string"
        },
        "id": {
          "description": "The object unique identifier",
          "type": "string"
        }
      },
      "required": [
        "class",
        "id"
      ]
    },
    "Checksum": {
      "properties": {
        "type": {
          "default": "sha1",
          "description": "The hashing algorithm used to compute the checksum",
          "enum": [
            "sha1",
            "sha2",
            "sha256",
            "md5",
            "crc"
          ],
          "type": "string"
        },
        "value": {
          "description": "The resulting checksum/hash",
          "type": "string"
        }
      },
      "required": [
        "value"
      ]
    },
    "CommunityResource": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        },
        {
          "properties": {
            "dataset": {
              "$ref": "#/definitions/DatasetReference",
              "description": "Reference to the associated dataset"
            },
            "organization": {
              "$ref": "#/definitions/OrganizationReference",
              "description": "The producer organization"
            },
            "owner": {
              "$ref": "#/definitions/UserReference",
              "description": "The user information"
            }
          }
        }
      ]
    },
    "CommunityResourcePage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/CommunityResource"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "Crontab": {
      "properties": {
        "day_of_month": {
          "default": "*",
          "description": "Cron expression for day of month",
          "type": "string"
        },
        "day_of_week": {
          "default": "*",
          "description": "Cron expression for day of week",
          "type": "string"
        },
        "hour": {
          "default": "*",
          "description": "Cron expression for hour",
          "type": "string"
        },
        "minute": {
          "default": "*",
          "description": "Cron expression for minute",
          "type": "string"
        },
        "month_of_year": {
          "default": "*",
          "description": "Cron expression for month of year",
          "type": "string"
        }
      },
      "required": [
        "day_of_month",
        "day_of_week",
        "hour",
        "minute",
        "month_of_year"
      ]
    },
    "Dataset": {
      "properties": {
        "badges": {
          "description": "The dataset badges",
          "items": {
            "$ref": "#/definitions/Badge"
          },
          "readOnly": true,
          "type": "array"
        },
        "community_resources": {
          "items": {
            "$ref": "#/definitions/CommunityResource",
            "description": "The dataset community submitted resources"
          },
          "type": "array"
        },
        "created_at": {
          "description": "The dataset creation date",
          "format": "date-time",
          "type": "string"
        },
        "deleted": {
          "description": "The deletion date if deleted",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "The dataset description in markdown",
          "format": "markdown",
          "type": "string"
        },
        "extras": {
          "description": "Extras attributes as key-value pairs",
          "type": "object"
        },
        "featured": {
          "description": "Is the dataset featured",
          "type": "boolean"
        },
        "frequency": {
          "default": "unknown",
          "description": "The update frequency",
          "enum": [
            "bimonthly",
            "punctual",
            "quinquennial",
            "biannual",
            "weekly",
            "fortnighly",
            "realtime",
            "monthly",
            "unknown",
            "annual",
            "daily",
            "biennial",
            "quarterly",
            "triennial"
          ],
          "type": "string"
        },
        "frequency_date": {
          "description": "Next expected update date, you will be notified once that date is reached.",
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "description": "The dataset identifier",
          "readOnly": true,
          "type": "string"
        },
        "last_modified": {
          "description": "The dataset last modification date",
          "format": "date-time",
          "type": "string"
        },
        "license": {
          "default": "notspecified",
          "description": "The dataset license",
          "type": "string"
        },
        "metrics": {
          "description": "The dataset metrics",
          "type": "object"
        },
        "organization": {
          "$ref": "#/definitions/OrganizationReference",
          "description": "The producer organization"
        },
        "owner": {
          "$ref": "#/definitions/UserReference",
          "description": "The user information"
        },
        "page": {
          "description": "The dataset page URL",
          "type": "string"
        },
        "private": {
          "description": "Is the dataset private to the owner or the organization",
          "type": "boolean"
        },
        "resources": {
          "items": {
            "$ref": "#/definitions/Resource",
            "description": "The dataset resources"
          },
          "type": "array"
        },
        "slug": {
          "description": "The dataset permalink string",
          "type": "string"
        },
        "spatial": {
          "$ref": "#/definitions/SpatialCoverage",
          "description": "The spatial coverage"
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "temporal_coverage": {
          "$ref": "#/definitions/TemporalCoverage",
          "description": "The temporal coverage"
        },
        "title": {
          "description": "The dataset title",
          "type": "string"
        },
        "uri": {
          "description": "The dataset API URI",
          "type": "string"
        }
      },
      "required": [
        "created_at",
        "description",
        "frequency",
        "last_modified",
        "page",
        "slug",
        "title",
        "uri"
      ]
    },
    "DatasetFull": {
      "allOf": [
        {
          "$ref": "#/definitions/Dataset"
        },
        {
          "properties": {
            "last_update": {
              "description": "The resources last modification date",
              "format": "date-time",
              "type": "string"
            },
            "quality": {
              "description": "The dataset quality",
              "readOnly": true,
              "type": "object"
            }
          },
          "required": [
            "last_update"
          ]
        }
      ]
    },
    "DatasetFullPage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/DatasetFull"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "DatasetPage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/Dataset"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "DatasetPreview": {
      "properties": {
        "badges": {
          "description": "The dataset badges",
          "items": {
            "$ref": "#/definitions/Badge"
          },
          "readOnly": true,
          "type": "array"
        },
        "community_resources": {
          "items": {
            "$ref": "#/definitions/CommunityResource",
            "description": "The dataset community submitted resources"
          },
          "type": "array"
        },
        "created_at": {
          "description": "The dataset creation date",
          "format": "date-time",
          "type": "string"
        },
        "deleted": {
          "description": "The deletion date if deleted",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "The dataset description in markdown",
          "format": "markdown",
          "type": "string"
        },
        "extras": {
          "description": "Extras attributes as key-value pairs",
          "type": "object"
        },
        "featured": {
          "description": "Is the dataset featured",
          "type": "boolean"
        },
        "frequency": {
          "default": "unknown",
          "description": "The update frequency",
          "enum": [
            "bimonthly",
            "punctual",
            "quinquennial",
            "biannual",
            "weekly",
            "fortnighly",
            "realtime",
            "monthly",
            "unknown",
            "annual",
            "daily",
            "biennial",
            "quarterly",
            "triennial"
          ],
          "type": "string"
        },
        "frequency_date": {
          "description": "Next expected update date, you will be notified once that date is reached.",
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "description": "The dataset identifier",
          "readOnly": true,
          "type": "string"
        },
        "last_modified": {
          "description": "The dataset last modification date",
          "format": "date-time",
          "type": "string"
        },
        "license": {
          "default": "notspecified",
          "description": "The dataset license",
          "type": "string"
        },
        "metrics": {
          "description": "The dataset metrics",
          "type": "object"
        },
        "organization": {
          "$ref": "#/definitions/OrganizationReference",
          "description": "The producer organization"
        },
        "owner": {
          "$ref": "#/definitions/UserReference",
          "description": "The user information"
        },
        "page": {
          "description": "The dataset page URL (fake)",
          "type": "string"
        },
        "private": {
          "description": "Is the dataset private to the owner or the organization",
          "type": "boolean"
        },
        "resources": {
          "items": {
            "$ref": "#/definitions/Resource",
            "description": "The dataset resources"
          },
          "type": "array"
        },
        "slug": {
          "description": "The dataset permalink string",
          "type": "string"
        },
        "spatial": {
          "$ref": "#/definitions/SpatialCoverage",
          "description": "The spatial coverage"
        },
        "tags": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "temporal_coverage": {
          "$ref": "#/definitions/TemporalCoverage",
          "description": "The temporal coverage"
        },
        "title": {
          "description": "The dataset title",
          "type": "string"
        },
        "uri": {
          "description": "The dataset API URI (fake)",
          "type": "string"
        }
      },
      "required": [
        "created_at",
        "description",
        "frequency",
        "last_modified",
        "slug",
        "title"
      ]
    },
    "DatasetReference": {
      "allOf": [
        {
          "$ref": "#/definitions/BaseReference"
        },
        {
          "properties": {
            "page": {
              "description": "The web page URL for this dataset",
              "readOnly": true,
              "type": "string"
            },
            "title": {
              "description": "The dataset title",
              "readOnly": true,
              "type": "string"
            },
            "uri": {
              "description": "The API URI for this dataset",
              "readOnly": true,
              "type": "string"
            }
          }
        }
      ]
    },
    "DatasetSuggestion": {
      "properties": {
        "id": {
          "description": "The dataset identifier",
          "type": "string"
        },
        "image_url": {
          "description": "The dataset (organization) logo URL",
          "type": "string"
        },
        "page": {
          "description": "The web page URL for this dataset",
          "readOnly": true,
          "type": "string"
        },
        "score": {
          "description": "The internal match score",
          "type": "number"
        },
        "slug": {
          "description": "The dataset permalink string",
          "type": "string"
        },
        "title": {
          "description": "The dataset title",
          "type": "string"
        }
      },
      "required": [
        "id",
        "score",
        "slug",
        "title"
      ]
    },
    "Discussion": {
      "discriminator": "class",
      "properties": {
        "class": {
          "description": "The object class",
          "type": "string"
        },
        "closed": {
          "description": "The discussion closing date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "closed_by": {
          "description": "The user who closed the discussion",
          "readOnly": true,
          "type": "string"
        },
        "created": {
          "description": "The discussion creation date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "discussion": {
          "$ref": "#/definitions/DiscussionMessage"
        },
        "id": {
          "description": "The discussion identifier",
          "readOnly": true,
          "type": "string"
        },
        "subject": {
          "description": "The discussion target object identifier",
          "type": "string"
        },
        "title": {
          "description": "The discussion title",
          "type": "string"
        },
        "url": {
          "description": "The discussion API URI",
          "readOnly": true,
          "type": "string"
        },
        "user": {
          "$ref": "#/definitions/UserReference",
          "description": "The discussion author"
        }
      },
      "required": [
        "class",
        "subject",
        "title",
        "user"
      ]
    },
    "DiscussionMessage": {
      "properties": {
        "content": {
          "description": "The message body",
          "type": "string"
        },
        "posted_by": {
          "$ref": "#/definitions/UserReference",
          "description": "The message author"
        },
        "posted_on": {
          "description": "The message posting date",
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "content",
        "posted_by",
        "posted_on"
      ]
    },
    "DiscussionPage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/Discussion"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "DiscussionResponse": {
      "properties": {
        "close": {
          "description": "Is this a closing response. Only subject owner can close",
          "type": "boolean"
        },
        "comment": {
          "description": "The comment to submit",
          "type": "string"
        }
      },
      "required": [
        "comment"
      ]
    },
    "Follow": {
      "properties": {
        "follower": {
          "$ref": "#/definitions/UserReference",
          "description": "The follower",
          "readOnly": true
        },
        "id": {
          "description": "The follow object technical ID",
          "readOnly": true,
          "type": "string"
        },
        "since": {
          "description": "The date from which the user started following",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "FollowPage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/Follow"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "Frequency": {
      "properties": {
        "id": {
          "description": "The frequency identifier",
          "type": "string"
        },
        "label": {
          "description": "The frequency display name",
          "type": "string"
        }
      }
    },
    "GeoGranularity": {
      "properties": {
        "id": {
          "description": "The granularity identifier",
          "type": "string"
        },
        "name": {
          "description": "The granularity name",
          "type": "string"
        }
      },
      "required": [
        "id",
        "name"
      ]
    },
    "GeoJSON": {
      "properties": {
        "coordinates": {
          "description": "The geometry as coordinates lists",
          "items": {
            "type": "object"
          },
          "type": "array"
        },
        "type": {
          "description": "The GeoJSON Type",
          "enum": [
            "Point",
            "LineString",
            "Polygon",
            "MultiPoint",
            "MultiLineString",
            "MultiPolygon"
          ],
          "type": "string"
        }
      },
      "required": [
        "coordinates",
        "type"
      ]
    },
    "GeoJSONFeature": {
      "properties": {
        "geometry": {
          "$ref": "#/definitions/GeoJSON"
        },
        "id": {
          "type": "string"
        },
        "properties": {
          "type": "object"
        },
        "type": {
          "enum": [
            "Feature"
          ],
          "type": "string"
        }
      },
      "required": [
        "geometry",
        "type"
      ]
    },
    "GeoJSONFeatureCollection": {
      "properties": {
        "features": {
          "items": {
            "$ref": "#/definitions/GeoJSONFeature"
          },
          "type": "array"
        },
        "type": {
          "enum": [
            "FeatureCollection"
          ],
          "type": "string"
        }
      },
      "required": [
        "features",
        "type"
      ]
    },
    "GeoLevel": {
      "properties": {
        "id": {
          "description": "The level identifier",
          "type": "string"
        },
        "name": {
          "description": "The level name",
          "type": "string"
        },
        "parents": {
          "description": "The parent levels",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "id",
        "name"
      ]
    },
    "HarvestBackend": {
      "properties": {
        "id": {
          "description": "The backend identifier",
          "type": "string"
        },
        "label": {
          "description": "The backend display name",
          "type": "string"
        }
      }
    },
    "HarvestError": {
      "properties": {
        "created_at": {
          "description": "The error creation date",
          "format": "date-time",
          "type": "string"
        },
        "details": {
          "description": "Optionnal details (ie. stacktrace)",
          "type": "string"
        },
        "message": {
          "description": "The error short message",
          "type": "string"
        }
      },
      "required": [
        "created_at",
        "message"
      ]
    },
    "HarvestItem": {
      "properties": {
        "args": {
          "default": [],
          "description": "The item positional arguments",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "created": {
          "description": "The item creation date",
          "format": "date-time",
          "type": "string"
        },
        "dataset": {
          "$ref": "#/definitions/DatasetReference",
          "description": "The processed dataset"
        },
        "ended": {
          "description": "The item end date",
          "format": "date-time",
          "type": "string"
        },
        "errors": {
          "description": "The item errors",
          "items": {
            "$ref": "#/definitions/HarvestError"
          },
          "type": "array"
        },
        "kwargs": {
          "default": {},
          "description": "The item keyword arguments",
          "type": "object"
        },
        "remote_id": {
          "description": "The item remote ID to process",
          "type": "string"
        },
        "started": {
          "description": "The item start date",
          "format": "date-time",
          "type": "string"
        },
        "status": {
          "description": "The item status",
          "enum": [
            "pending",
            "started",
            "done",
            "failed",
            "skipped"
          ],
          "type": "string"
        }
      },
      "required": [
        "created",
        "remote_id",
        "status"
      ]
    },
    "HarvestItemPreview": {
      "properties": {
        "args": {
          "default": [],
          "description": "The item positional arguments",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "created": {
          "description": "The item creation date",
          "format": "date-time",
          "type": "string"
        },
        "dataset": {
          "$ref": "#/definitions/DatasetPreview",
          "description": "The processed dataset"
        },
        "ended": {
          "description": "The item end date",
          "format": "date-time",
          "type": "string"
        },
        "errors": {
          "description": "The item errors",
          "items": {
            "$ref": "#/definitions/HarvestError"
          },
          "type": "array"
        },
        "kwargs": {
          "default": {},
          "description": "The item keyword arguments",
          "type": "object"
        },
        "remote_id": {
          "description": "The item remote ID to process",
          "type": "string"
        },
        "started": {
          "description": "The item start date",
          "format": "date-time",
          "type": "string"
        },
        "status": {
          "description": "The item status",
          "enum": [
            "pending",
            "started",
            "done",
            "failed",
            "skipped"
          ],
          "type": "string"
        }
      },
      "required": [
        "created",
        "remote_id",
        "status"
      ]
    },
    "HarvestJob": {
      "properties": {
        "created": {
          "description": "The job creation date",
          "format": "date-time",
          "type": "string"
        },
        "ended": {
          "description": "The job end date",
          "format": "date-time",
          "type": "string"
        },
        "errors": {
          "description": "The job initialization errors",
          "items": {
            "$ref": "#/definitions/HarvestError"
          },
          "type": "array"
        },
        "id": {
          "description": "The job execution ID",
          "type": "string"
        },
        "items": {
          "description": "The job collected items",
          "items": {
            "$ref": "#/definitions/HarvestItem"
          },
          "type": "array"
        },
        "source": {
          "description": "The source owning the job",
          "type": "string"
        },
        "started": {
          "description": "The job start date",
          "format": "date-time",
          "type": "string"
        },
        "status": {
          "description": "The job status",
          "enum": [
            "pending",
            "initializing",
            "initialized",
            "processing",
            "done",
            "done-errors",
            "failed"
          ],
          "type": "string"
        }
      },
      "required": [
        "created",
        "id",
        "source",
        "status"
      ]
    },
    "HarvestJobPage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/HarvestJob"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "HarvestJobPreview": {
      "properties": {
        "created": {
          "description": "The job creation date",
          "format": "date-time",
          "type": "string"
        },
        "ended": {
          "description": "The job end date",
          "format": "date-time",
          "type": "string"
        },
        "errors": {
          "description": "The job initialization errors",
          "items": {
            "$ref": "#/definitions/HarvestError"
          },
          "type": "array"
        },
        "id": {
          "description": "The job execution ID",
          "type": "string"
        },
        "items": {
          "description": "The job collected items",
          "items": {
            "$ref": "#/definitions/HarvestItemPreview"
          },
          "type": "array"
        },
        "source": {
          "description": "The source owning the job",
          "type": "string"
        },
        "started": {
          "description": "The job start date",
          "format": "date-time",
          "type": "string"
        },
        "status": {
          "description": "The job status",
          "enum": [
            "pending",
            "initializing",
            "initialized",
            "processing",
            "done",
            "done-errors",
            "failed"
          ],
          "type": "string"
        }
      },
      "required": [
        "created",
        "id",
        "source",
        "status"
      ]
    },
    "HarvestSource": {
      "properties": {
        "active": {
          "default": false,
          "description": "Is this source active",
          "type": "boolean"
        },
        "backend": {
          "description": "The source backend",
          "enum": [
            "ods",
            "ckan"
          ],
          "type": "string"
        },
        "config": {
          "default": {},
          "description": "The source specific configuration",
          "type": "object"
        },
        "created_at": {
          "description": "The source creation date",
          "format": "date-time",
          "type": "string"
        },
        "deleted": {
          "description": "The source deletion date",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "The source description",
          "format": "markdown",
          "type": "string"
        },
        "id": {
          "description": "The source unique identifier",
          "readOnly": true,
          "type": "string"
        },
        "last_job": {
          "$ref": "#/definitions/HarvestJob",
          "description": "The last job for this source",
          "readOnly": true
        },
        "name": {
          "description": "The source display name",
          "type": "string"
        },
        "organization": {
          "$ref": "#/definitions/OrganizationReference",
          "description": "The producer organization"
        },
        "owner": {
          "$ref": "#/definitions/UserReference",
          "description": "The owner information"
        },
        "url": {
          "description": "The source base URL",
          "type": "string"
        },
        "validation": {
          "$ref": "#/definitions/HarvestSourceValidation",
          "description": "Has the source been validated",
          "readOnly": true
        }
      },
      "required": [
        "active",
        "backend",
        "created_at",
        "name",
        "url"
      ]
    },
    "HarvestSourceValidation": {
      "properties": {
        "by": {
          "$ref": "#/definitions/UserReference",
          "description": "Who performed the validation",
          "readOnly": true
        },
        "comment": {
          "description": "A comment about the validation. Required on rejection",
          "type": "string"
        },
        "on": {
          "description": "Date date on which validation was performed",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "state": {
          "description": "Is it validated or not",
          "enum": [
            "accepted",
            "pending",
            "refused"
          ],
          "type": "string"
        }
      },
      "required": [
        "state"
      ]
    },
    "Interval": {
      "properties": {
        "every": {
          "description": "The interval without unit",
          "type": "integer"
        },
        "period": {
          "description": "The period/interval type",
          "enum": [
            "days",
            "hours",
            "minutes",
            "seconds",
            "microseconds"
          ],
          "type": "string"
        }
      },
      "required": [
        "every",
        "period"
      ]
    },
    "Issue": {
      "discriminator": "class",
      "properties": {
        "class": {
          "description": "The object class",
          "type": "string"
        },
        "closed": {
          "description": "The issue closing date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "closed_by": {
          "description": "The user who closed the issue",
          "readOnly": true,
          "type": "string"
        },
        "created": {
          "description": "The issue creation date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "discussion": {
          "$ref": "#/definitions/IssueMessage"
        },
        "id": {
          "description": "The issue identifier",
          "readOnly": true,
          "type": "string"
        },
        "subject": {
          "description": "The issue target object identifier",
          "type": "string"
        },
        "title": {
          "description": "The issue title",
          "type": "string"
        },
        "url": {
          "description": "The issue API URI",
          "readOnly": true,
          "type": "string"
        },
        "user": {
          "$ref": "#/definitions/UserReference",
          "description": "The issue author"
        }
      },
      "required": [
        "class",
        "subject",
        "title",
        "user"
      ]
    },
    "IssueMessage": {
      "properties": {
        "content": {
          "description": "The message body",
          "type": "string"
        },
        "posted_by": {
          "$ref": "#/definitions/UserReference",
          "description": "The message author"
        },
        "posted_on": {
          "description": "The message posting date",
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "content",
        "posted_by",
        "posted_on"
      ]
    },
    "IssuePage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/Issue"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "IssueResponse": {
      "properties": {
        "close": {
          "description": "Is this a closing response. Only subject owner can close",
          "type": "boolean"
        },
        "comment": {
          "description": "The comment to submit",
          "type": "string"
        }
      },
      "required": [
        "comment"
      ]
    },
    "Job": {
      "properties": {
        "args": {
          "default": [],
          "description": "The job execution arguments",
          "items": {
            "type": "object"
          },
          "type": "array"
        },
        "crontab": {
          "$ref": "#/definitions/Crontab"
        },
        "description": {
          "description": "The job description",
          "type": "string"
        },
        "enabled": {
          "default": false,
          "description": "Is this job enabled",
          "type": "boolean"
        },
        "id": {
          "description": "The job unique identifier",
          "readOnly": true,
          "type": "string"
        },
        "interval": {
          "$ref": "#/definitions/Interval"
        },
        "kwargs": {
          "default": {},
          "description": "The job execution keyword arguments",
          "type": "object"
        },
        "last_run_at": {
          "description": "The last job execution date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "last_run_id": {
          "description": "The last execution task id",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "The job unique name",
          "type": "string"
        },
        "schedule": {
          "description": "The schedule display",
          "readOnly": true,
          "type": "string"
        },
        "task": {
          "description": "The task name",
          "enum": [
            "piwik-current-metrics",
            "log-test",
            "purge-organizations",
            "purge-datasets",
            "bump-metrics",
            "count-tags",
            "piwik-yesterday-metrics",
            "purge-reuses",
            "error-test",
            "harvest",
            "send-frequency-reminder",
            "crawl-resources"
          ],
          "type": "string"
        }
      },
      "required": [
        "name",
        "task"
      ]
    },
    "License": {
      "properties": {
        "flags": {
          "description": "Some arbitry flags",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "id": {
          "description": "The license identifier",
          "type": "string"
        },
        "maintainer": {
          "description": "The license official maintainer",
          "type": "string"
        },
        "title": {
          "description": "The resource title",
          "type": "string"
        },
        "url": {
          "description": "The license official URL",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title"
      ]
    },
    "Me": {
      "allOf": [
        {
          "$ref": "#/definitions/User"
        },
        {
          "properties": {
            "apikey": {
              "description": "The user API Key",
              "readOnly": true,
              "type": "string"
            },
            "email": {
              "description": "The user email",
              "type": "string"
            }
          },
          "required": [
            "email"
          ]
        }
      ]
    },
    "Member": {
      "properties": {
        "role": {
          "description": "The member role in the organization",
          "enum": [
            "admin",
            "editor"
          ],
          "type": "string"
        },
        "user": {
          "$ref": "#/definitions/UserReference"
        }
      },
      "required": [
        "role"
      ]
    },
    "MembershipRequest": {
      "properties": {
        "comment": {
          "description": "A request comment from the user",
          "type": "string"
        },
        "created": {
          "description": "The request creation date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "id": {
          "readOnly": true,
          "type": "string"
        },
        "status": {
          "description": "The current request status",
          "enum": [
            "accepted",
            "pending",
            "refused"
          ],
          "type": "string"
        },
        "user": {
          "$ref": "#/definitions/UserReference"
        }
      },
      "required": [
        "comment",
        "status"
      ]
    },
    "Metric": {
      "properties": {
        "date": {
          "description": "The metrics sampling date",
          "type": "string"
        },
        "level": {
          "description": "The metrics granularity level",
          "enum": [
            "daily",
            "monthly"
          ],
          "type": "string"
        },
        "object_id": {
          "description": "The object identifier which metrics belongs to",
          "type": "string"
        },
        "values": {
          "description": "The metrics as key-value pairs",
          "type": "object"
        }
      },
      "required": [
        "date",
        "level",
        "object_id",
        "values"
      ]
    },
    "MyMetrics": {
      "properties": {
        "datasets_count": {
          "description": "The user's datasets number",
          "readOnly": true,
          "type": "integer"
        },
        "datasets_org_count": {
          "description": "The user's orgs datasets number",
          "readOnly": true,
          "type": "integer"
        },
        "followers_count": {
          "description": "The user's followers number",
          "readOnly": true,
          "type": "integer"
        },
        "followers_org_count": {
          "description": "The user's orgs followers number",
          "readOnly": true,
          "type": "integer"
        },
        "id": {
          "description": "The user identifier",
          "type": "string"
        },
        "resources_availability": {
          "description": "The user's resources availability percentage",
          "readOnly": true,
          "type": "number"
        }
      },
      "required": [
        "id"
      ]
    },
    "Notification": {
      "properties": {
        "created_on": {
          "description": "The notification creation datetime",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "details": {
          "description": "Key-Value details depending on notification type",
          "readOnly": true,
          "type": "object"
        },
        "type": {
          "description": "The notification type",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "Organization": {
      "properties": {
        "acronym": {
          "description": "The organization acronym",
          "type": "string"
        },
        "badges": {
          "description": "The organization badges",
          "items": {
            "$ref": "#/definitions/Badge"
          },
          "readOnly": true,
          "type": "array"
        },
        "created_at": {
          "description": "The organization creation date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "deleted": {
          "description": "The organization deletion date if deleted",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "description": {
          "description": "The organization description in Markdown",
          "format": "markdown",
          "type": "string"
        },
        "id": {
          "description": "The organization identifier",
          "type": "string"
        },
        "last_modified": {
          "description": "The organization last modification date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "logo": {
          "description": "The organization logo URLs",
          "type": "string"
        },
        "members": {
          "items": {
            "$ref": "#/definitions/Member",
            "description": "The organization members"
          },
          "type": "array"
        },
        "metrics": {
          "description": "The organization metrics",
          "readOnly": true,
          "type": "object"
        },
        "name": {
          "description": "The organization name",
          "type": "string"
        },
        "page": {
          "description": "The organization page URL",
          "readOnly": true,
          "type": "string"
        },
        "slug": {
          "description": "The organization string used as permalink",
          "type": "string"
        },
        "uri": {
          "description": "The organization API URI",
          "readOnly": true,
          "type": "string"
        },
        "url": {
          "description": "The organization website URL",
          "type": "string"
        }
      },
      "required": [
        "description",
        "id",
        "name",
        "slug"
      ]
    },
    "OrganizationPage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/Organization"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "OrganizationReference": {
      "allOf": [
        {
          "$ref": "#/definitions/BaseReference"
        },
        {
          "properties": {
            "acronym": {
              "description": "The organization acronym",
              "type": "string"
            },
            "logo": {
              "description": "The organization logo URL",
              "type": "string"
            },
            "name": {
              "description": "The organization name",
              "readOnly": true,
              "type": "string"
            },
            "page": {
              "description": "The organization web page URL",
              "readOnly": true,
              "type": "string"
            },
            "slug": {
              "description": "The organization string used as permalink",
              "type": "string"
            },
            "uri": {
              "description": "The organization API URI",
              "readOnly": true,
              "type": "string"
            }
          },
          "required": [
            "slug"
          ]
        }
      ]
    },
    "OrganizationSuggestion": {
      "properties": {
        "acronym": {
          "description": "The organization acronym",
          "readOnly": true,
          "type": "string"
        },
        "id": {
          "description": "The organization identifier",
          "readOnly": true,
          "type": "string"
        },
        "image_url": {
          "description": "The organization logo URL",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "The organization name",
          "readOnly": true,
          "type": "string"
        },
        "page": {
          "description": "The organization web page URL",
          "readOnly": true,
          "type": "string"
        },
        "score": {
          "description": "The internal match score",
          "readOnly": true,
          "type": "number"
        },
        "slug": {
          "description": "The organization permalink string",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "Post": {
      "properties": {
        "content": {
          "description": "The post content in Markdown",
          "format": "markdown",
          "type": "string"
        },
        "created_at": {
          "description": "The post creation date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "credit_to": {
          "description": "An optionnal credit line (associated to the image)",
          "type": "string"
        },
        "credit_url": {
          "description": "An optionnal link associated to the credits",
          "type": "string"
        },
        "datasets": {
          "description": "The post datasets",
          "items": {
            "$ref": "#/definitions/DatasetReference"
          },
          "type": "array"
        },
        "headline": {
          "description": "The post headline",
          "type": "string"
        },
        "id": {
          "description": "The post identifier",
          "type": "string"
        },
        "image": {
          "description": "The post image",
          "readOnly": true,
          "type": "string"
        },
        "last_modified": {
          "description": "The post last modification date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "The post name",
          "type": "string"
        },
        "owner": {
          "$ref": "#/definitions/UserReference",
          "description": "The owner user",
          "readOnly": true
        },
        "page": {
          "description": "The post page URL",
          "readOnly": true,
          "type": "string"
        },
        "private": {
          "description": "Is the post visible",
          "type": "boolean"
        },
        "reuses": {
          "description": "The post reuses",
          "items": {
            "$ref": "#/definitions/ReuseReference"
          },
          "type": "array"
        },
        "slug": {
          "description": "The post permalink string",
          "readOnly": true,
          "type": "string"
        },
        "tags": {
          "description": "Some keywords to help in search",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "uri": {
          "description": "The post API URI",
          "readOnly": true,
          "type": "string"
        }
      },
      "required": [
        "content",
        "headline",
        "name"
      ]
    },
    "PostPage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/Post"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "RefuseMembership": {
      "properties": {
        "comment": {
          "description": "The refusal comment.",
          "type": "string"
        }
      }
    },
    "Resource": {
      "properties": {
        "checksum": {
          "$ref": "#/definitions/Checksum",
          "description": "A checksum to validate file validity"
        },
        "created_at": {
          "description": "The resource creation date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "description": {
          "description": "The resource markdown description",
          "format": "markdown",
          "type": "string"
        },
        "filesize": {
          "description": "The resource file size in bytes",
          "type": "integer"
        },
        "filetype": {
          "description": "Whether the resource is an uploaded file, a remote file or an API",
          "enum": [
            "file",
            "remote",
            "api"
          ],
          "type": "string"
        },
        "format": {
          "description": "The resource format",
          "type": "string"
        },
        "id": {
          "description": "The resource unique ID",
          "readOnly": true,
          "type": "string"
        },
        "is_available": {
          "description": "The resource availability",
          "readOnly": true,
          "type": "object"
        },
        "last_modified": {
          "description": "The resource last modification date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "metrics": {
          "description": "The resource metrics",
          "readOnly": true,
          "type": "object"
        },
        "mime": {
          "description": "The resource mime type",
          "type": "string"
        },
        "published": {
          "description": "The resource publication date",
          "format": "date-time",
          "type": "string"
        },
        "title": {
          "description": "The resource title",
          "type": "string"
        },
        "url": {
          "description": "The resource URL",
          "type": "string"
        }
      },
      "required": [
        "filetype",
        "format",
        "title",
        "url"
      ]
    },
    "Reuse": {
      "properties": {
        "badges": {
          "description": "The reuse badges",
          "items": {
            "$ref": "#/definitions/Badge"
          },
          "readOnly": true,
          "type": "array"
        },
        "created_at": {
          "description": "The reuse creation date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "datasets": {
          "description": "The reused datasets",
          "items": {
            "$ref": "#/definitions/DatasetReference"
          },
          "type": "array"
        },
        "deleted": {
          "description": "The organization identifier",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "description": {
          "description": "The reuse description in Markdown",
          "format": "markdown",
          "type": "string"
        },
        "featured": {
          "description": "Is the reuse featured",
          "readOnly": true,
          "type": "boolean"
        },
        "id": {
          "description": "The reuse identifier",
          "readOnly": true,
          "type": "string"
        },
        "image": {
          "description": "The reuse thumbnail",
          "type": "string"
        },
        "last_modified": {
          "description": "The reuse last modification date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "metrics": {
          "description": "The reuse metrics",
          "readOnly": true,
          "type": "object"
        },
        "organization": {
          "$ref": "#/definitions/OrganizationReference",
          "description": "The publishing organization",
          "readOnly": true
        },
        "owner": {
          "$ref": "#/definitions/UserReference",
          "description": "The owner user",
          "readOnly": true
        },
        "page": {
          "description": "The reuse page URL",
          "readOnly": true,
          "type": "string"
        },
        "private": {
          "description": "Is the reuse private to the owner or the organization",
          "type": "boolean"
        },
        "slug": {
          "description": "The reuse permalink string",
          "readOnly": true,
          "type": "string"
        },
        "tags": {
          "description": "Some keywords to help in search",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "title": {
          "description": "The reuse title",
          "type": "string"
        },
        "type": {
          "description": "The reuse type",
          "enum": [
            "paper",
            "application",
            "hardware",
            "api",
            "visualization",
            "post",
            "news_article",
            "idea"
          ],
          "type": "string"
        },
        "uri": {
          "description": "The reuse API URI",
          "readOnly": true,
          "type": "string"
        },
        "url": {
          "description": "The reuse remote URL (website)",
          "type": "string"
        }
      },
      "required": [
        "description",
        "title",
        "type",
        "url"
      ]
    },
    "ReusePage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/Reuse"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "ReuseReference": {
      "allOf": [
        {
          "$ref": "#/definitions/BaseReference"
        },
        {
          "properties": {
            "image": {
              "description": "The reuse thumbnail",
              "type": "string"
            },
            "page": {
              "description": "The reuse page URL",
              "readOnly": true,
              "type": "string"
            },
            "title": {
              "description": "The reuse title",
              "readOnly": true,
              "type": "string"
            },
            "uri": {
              "description": "The reuse API URI",
              "readOnly": true,
              "type": "string"
            }
          }
        }
      ]
    },
    "ReuseSuggestion": {
      "properties": {
        "id": {
          "description": "The reuse identifier",
          "readOnly": true,
          "type": "string"
        },
        "image_url": {
          "description": "The reuse thumbnail URL",
          "type": "string"
        },
        "page": {
          "description": "The reuse page URL",
          "readOnly": true,
          "type": "string"
        },
        "score": {
          "description": "The internal match score",
          "readOnly": true,
          "type": "number"
        },
        "slug": {
          "description": "The reuse permalink string",
          "readOnly": true,
          "type": "string"
        },
        "title": {
          "description": "The reuse title",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "ReuseType": {
      "properties": {
        "id": {
          "description": "The reuse type identifier",
          "type": "string"
        },
        "label": {
          "description": "The reuse type display name",
          "type": "string"
        }
      }
    },
    "Site": {
      "properties": {
        "id": {
          "description": "The Site unique identifier",
          "type": "string"
        },
        "metrics": {
          "default": {},
          "description": "The associated metrics",
          "type": "object"
        },
        "title": {
          "description": "The site display title",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title"
      ]
    },
    "SpatialCoverage": {
      "properties": {
        "geom": {
          "$ref": "#/definitions/GeoJSON",
          "description": "A multipolygon for the whole coverage"
        },
        "granularity": {
          "description": "The spatial/territorial granularity",
          "type": "string"
        },
        "zones": {
          "description": "The covered zones identifiers",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      }
    },
    "Task": {
      "properties": {
        "exc": {
          "description": "The exception thrown during execution",
          "type": "string"
        },
        "id": {
          "description": "Tha task execution ID",
          "readOnly": true,
          "type": "string"
        },
        "result": {
          "description": "The task results if exists",
          "type": "string"
        },
        "status": {
          "description": "Cron expression for hour",
          "enum": [
            "RECEIVED",
            "RETRY",
            "REVOKED",
            "SUCCESS",
            "STARTED",
            "FAILURE",
            "PENDING"
          ],
          "readOnly": true,
          "type": "string"
        },
        "traceback": {
          "description": "The execution traceback",
          "type": "string"
        }
      }
    },
    "TemporalCoverage": {
      "properties": {
        "end": {
          "description": "The temporal coverage end date",
          "format": "date-time",
          "type": "string"
        },
        "start": {
          "description": "The temporal coverage start date",
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "end",
        "start"
      ]
    },
    "TerritorySuggestion": {
      "properties": {
        "code": {
          "description": "The territory main code",
          "type": "string"
        },
        "id": {
          "description": "The territory identifier",
          "type": "string"
        },
        "keys": {
          "description": "The territory known codes",
          "type": "object"
        },
        "level": {
          "description": "The territory administrative level",
          "type": "string"
        },
        "name": {
          "description": "The territory name",
          "type": "string"
        },
        "score": {
          "description": "The internal match score",
          "type": "number"
        }
      },
      "required": [
        "code",
        "id",
        "level",
        "name",
        "score"
      ]
    },
    "Topic": {
      "properties": {
        "created_at": {
          "description": "The topic creation date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "datasets": {
          "description": "The topic datasets",
          "items": {
            "$ref": "#/definitions/DatasetReference"
          },
          "type": "array"
        },
        "deleted": {
          "description": "The organization identifier",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "description": {
          "description": "The topic description in Markdown",
          "format": "markdown",
          "type": "string"
        },
        "featured": {
          "description": "Is the topic featured",
          "type": "boolean"
        },
        "id": {
          "description": "The topic identifier",
          "type": "string"
        },
        "last_modified": {
          "description": "The topic last modification date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "The topic name",
          "type": "string"
        },
        "owner": {
          "$ref": "#/definitions/UserReference",
          "description": "The owner user",
          "readOnly": true
        },
        "page": {
          "description": "The topic page URL",
          "readOnly": true,
          "type": "string"
        },
        "private": {
          "description": "Is the topic private",
          "type": "boolean"
        },
        "reuses": {
          "description": "The topic reuses",
          "items": {
            "$ref": "#/definitions/ReuseReference"
          },
          "type": "array"
        },
        "slug": {
          "description": "The topic permalink string",
          "readOnly": true,
          "type": "string"
        },
        "tags": {
          "description": "Some keywords to help in search",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "uri": {
          "description": "The topic API URI",
          "readOnly": true,
          "type": "string"
        }
      },
      "required": [
        "description",
        "name"
      ]
    },
    "TopicPage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/Topic"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "Transfer": {
      "properties": {
        "comment": {
          "description": "A comment about the transfer request",
          "readOnly": true,
          "type": "string"
        },
        "created": {
          "description": "The transfer request date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "id": {
          "description": "The transfer unique identifier",
          "readOnly": true,
          "type": "string"
        },
        "owner": {
          "$ref": "#/definitions/BaseReference",
          "description": "The user or organization currently owning the transfered object",
          "readOnly": true
        },
        "recipient": {
          "$ref": "#/definitions/BaseReference",
          "description": "The user or organization receiving the transfered object",
          "readOnly": true
        },
        "reponse_comment": {
          "description": "A comment about the transfer response",
          "readOnly": true,
          "type": "string"
        },
        "responded": {
          "description": "The transfer response date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "status": {
          "description": "The current transfer request status",
          "enum": [
            "accepted",
            "pending",
            "refused"
          ],
          "type": "string"
        },
        "subject": {
          "$ref": "#/definitions/BaseReference",
          "description": "The transfered object",
          "readOnly": true
        }
      }
    },
    "TransferRequest": {
      "properties": {
        "comment": {
          "description": "An explanation about the transfer request",
          "type": "string"
        },
        "recipient": {
          "$ref": "#/definitions/BaseReference",
          "description": "The transfer recipient, either an user or an organization"
        },
        "subject": {
          "$ref": "#/definitions/BaseReference",
          "description": "The transfered subject"
        }
      },
      "required": [
        "comment",
        "recipient",
        "subject"
      ]
    },
    "TransferResponse": {
      "properties": {
        "comment": {
          "description": "An optionnal comment about the transfer response",
          "type": "string"
        },
        "response": {
          "description": "The response",
          "enum": [
            "accept",
            "refuse"
          ],
          "type": "string"
        }
      },
      "required": [
        "response"
      ]
    },
    "UploadedImage": {
      "properties": {
        "image": {
          "type": "string"
        },
        "success": {
          "default": true,
          "description": "Whether the upload succeeded or not.",
          "readOnly": true,
          "type": "boolean"
        }
      }
    },
    "UploadedResource": {
      "properties": {
        "checksum": {
          "$ref": "#/definitions/Checksum",
          "description": "A checksum to validate file validity"
        },
        "created_at": {
          "description": "The resource creation date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "description": {
          "description": "The resource markdown description",
          "format": "markdown",
          "type": "string"
        },
        "filesize": {
          "description": "The resource file size in bytes",
          "type": "integer"
        },
        "filetype": {
          "description": "Whether the resource is an uploaded file, a remote file or an API",
          "enum": [
            "file",
            "remote",
            "api"
          ],
          "type": "string"
        },
        "format": {
          "description": "The resource format",
          "type": "string"
        },
        "id": {
          "description": "The resource unique ID",
          "readOnly": true,
          "type": "string"
        },
        "is_available": {
          "description": "The resource availability",
          "readOnly": true,
          "type": "object"
        },
        "last_modified": {
          "description": "The resource last modification date",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "metrics": {
          "description": "The resource metrics",
          "readOnly": true,
          "type": "object"
        },
        "mime": {
          "description": "The resource mime type",
          "type": "string"
        },
        "published": {
          "description": "The resource publication date",
          "format": "date-time",
          "type": "string"
        },
        "success": {
          "default": true,
          "description": "Whether the upload succeeded or not.",
          "readOnly": true,
          "type": "boolean"
        },
        "title": {
          "description": "The resource title",
          "type": "string"
        },
        "url": {
          "description": "The resource URL",
          "type": "string"
        }
      },
      "required": [
        "filetype",
        "format",
        "title",
        "url"
      ]
    },
    "User": {
      "properties": {
        "about": {
          "description": "The user self description",
          "format": "markdown",
          "type": "string"
        },
        "avatar": {
          "description": "The user avatar URL",
          "type": "string"
        },
        "first_name": {
          "description": "The user first name",
          "type": "string"
        },
        "id": {
          "description": "The user identifier",
          "type": "string"
        },
        "last_name": {
          "description": "The user last name",
          "type": "string"
        },
        "organizations": {
          "description": "The organization the user belongs to",
          "items": {
            "$ref": "#/definitions/OrganizationReference"
          },
          "type": "array"
        },
        "page": {
          "description": "The user profile page URL",
          "readOnly": true,
          "type": "string"
        },
        "roles": {
          "description": "Site wide user roles",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "since": {
          "description": "The registeration date",
          "format": "date-time",
          "type": "string"
        },
        "slug": {
          "description": "The user permalink string",
          "type": "string"
        },
        "uri": {
          "description": "The user API URI",
          "type": "string"
        },
        "website": {
          "description": "The user website",
          "type": "string"
        }
      },
      "required": [
        "first_name",
        "id",
        "last_name",
        "since",
        "slug",
        "uri"
      ]
    },
    "UserPage": {
      "properties": {
        "data": {
          "description": "The page data",
          "items": {
            "$ref": "#/definitions/User"
          },
          "type": "array"
        },
        "facets": {
          "description": "Search facets results if any",
          "type": "object"
        },
        "next_page": {
          "description": "The next page URL if exists",
          "type": "string"
        },
        "page": {
          "description": "The current page",
          "minimum": 1,
          "type": "integer"
        },
        "page_size": {
          "description": "The page size used for pagination",
          "minimum": 0,
          "type": "integer"
        },
        "previous_page": {
          "description": "The previous page URL if exists",
          "type": "string"
        },
        "total": {
          "description": "The total paginated items",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "page",
        "page_size",
        "total"
      ]
    },
    "UserReference": {
      "allOf": [
        {
          "$ref": "#/definitions/BaseReference"
        },
        {
          "properties": {
            "avatar": {
              "description": "The user avatar URL",
              "type": "string"
            },
            "first_name": {
              "description": "The user first name",
              "readOnly": true,
              "type": "string"
            },
            "last_name": {
              "description": "The user larst name",
              "readOnly": true,
              "type": "string"
            },
            "page": {
              "description": "The user profile page URL",
              "readOnly": true,
              "type": "string"
            },
            "slug": {
              "description": "The user permalink string",
              "type": "string"
            },
            "uri": {
              "description": "The user API URI",
              "type": "string"
            }
          },
          "required": [
            "slug",
            "uri"
          ]
        }
      ]
    },
    "UserSuggestion": {
      "properties": {
        "avatar_url": {
          "description": "The user avatar URL",
          "type": "string"
        },
        "first_name": {
          "description": "The user first name",
          "readOnly": true,
          "type": "string"
        },
        "id": {
          "description": "The user identifier",
          "readOnly": true,
          "type": "string"
        },
        "last_name": {
          "description": "The user last name",
          "readOnly": true,
          "type": "string"
        },
        "score": {
          "description": "The internal match score",
          "readOnly": true,
          "type": "number"
        },
        "slug": {
          "description": "The user permalink string",
          "readOnly": true,
          "type": "string"
        }
      }
    }
  },
  "securityDefinitions": {
    "apikey": {
      "keyname": "X-API-KEY",
      "passAs": "header",
      "type": "apiKey"
    }
  },
  "tags": [
    {
      "description": "Site global namespace",
      "name": "site"
    },
    {
      "description": "Spatial references",
      "name": "spatial"
    },
    {
      "description": "Issue related operations",
      "name": "issues"
    },
    {
      "description": "Discussion related operations",
      "name": "discussions"
    },
    {
      "description": "User related operations",
      "name": "users"
    },
    {
      "description": "Connected user related operations",
      "name": "me"
    },
    {
      "description": "Dataset related operations",
      "name": "datasets"
    },
    {
      "description": "Reuse related operations",
      "name": "reuses"
    },
    {
      "description": "Organization related operations",
      "name": "organizations"
    },
    {
      "description": "Asynchronous workers related operations",
      "name": "workers"
    },
    {
      "description": "Tags related operations",
      "name": "tags"
    },
    {
      "description": "Topics related operations",
      "name": "topics"
    },
    {
      "description": "Posts related operations",
      "name": "posts"
    },
    {
      "description": null,
      "name": "transfer"
    },
    {
      "description": "Notifications API",
      "name": "notifications"
    },
    {
      "description": "Harvest related operations",
      "name": "harvest"
    }
  ]
}

以上是关于json 这是CKAN API的OpenAPI规范定义的主要内容,如果未能解决你的问题,请参考以下文章

从 OpenAPI 规范生成 JSDoc

REST API openapi 规范 AWS API Gateway 与 serverless.com 框架的集成

如何从 protobuf (.proto) 文件中生成 (.json/.yaml) 中的 swagger3 (OpenAPI3) 规范?

在不使用 OpenAPI 或 Swagger 规范的情况下,使用 OWASP ZAP 对 API 进行身份验证

如何在 OpenAPI (Swagger) 中为相同的 HTTP 状态代码定义不同的响应?

APIM 中的自动更新 OpenAPI 规范