openapi: 3.1.0
info:
  title: Avatars API
  description: Setup and run avatars-based anonymization jobs
  contact:
    name: Octopize
    url: https://docs.octopize.io/docs/support
    email: help@octopize.io
  version: 11.34.0
paths:
  /datasets/stream:
    post:
      tags:
        - datasets
      summary: Create Dataset From Stream
      description: Create a dataset by streaming chunks of the dataset.
      operationId: create_dataset_from_stream
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: name
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Name
        - name: filetype
          in: query
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/FileType'
              - type: 'null'
            title: Filetype
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dataset'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      requestBody:
        content:
          multipart/form-data:
            schema:
              title: File
        required: true
  /datasets:
    post:
      tags:
        - datasets
      summary: Create Dataset
      description: Create a dataset from file upload.
      operationId: create_dataset
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateDataset'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dataset'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
        - datasets
      summary: Find All Datasets By User
      description: List all datasets of the current_user.
      operationId: find_all_datasets_by_user
      security:
        - OAuth2PasswordBearer: []
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Dataset'
                title: Response Datasets-Find All Datasets By User
  /datasets/{id}:
    get:
      tags:
        - datasets
      summary: Get Dataset
      description: Get a dataset.
      operationId: get_dataset
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dataset'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
        - datasets
      summary: Patch Dataset
      description: Modify a dataset.
      operationId: patch_dataset
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchDataset'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dataset'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /datasets/{id}/analyze:
    post:
      tags:
        - datasets
      summary: Analyze Dataset
      description: Start the analysis of a dataset.
      operationId: analyze_dataset
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dataset'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /datasets/{id}/correlations:
    get:
      tags:
        - datasets
      summary: Get Dataset Correlations
      description: Get a dataset's correlations.
      operationId: get_dataset_correlations
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: object
                  additionalProperties:
                    type: number
                title: Response Datasets-Get Dataset Correlations
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /datasets/{id}/download/stream:
    get:
      tags:
        - datasets
      summary: Download Dataset As Stream
      description: |-
        Download a dataset by streaming chunks of it.

        Parameters
        ----------
        id
            The identifier of the dataset to download.
        filetype
            The filetype of the data you which to receive.

        Returns
        -------
            The dataset contents
      operationId: download_dataset_as_stream
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
        - name: filetype
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/FileType'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /datasets/{id}/download:
    get:
      tags:
        - datasets
      summary: Download Dataset
      description: |-
        Download a dataset.

        This is only advised for small datasets.
        Use /datasets/{id}/download/stream for larger datasets.
      operationId: download_dataset
      deprecated: true
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
        - name: filetype
          in: query
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/FileType'
              - type: 'null'
            title: Filetype
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs:
    post:
      tags:
        - jobs
      summary: Create Full Avatarization Job
      description: Create an avatarization job, then calculate metrics.
      operationId: create_full_avatarization_job
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AvatarizationJobCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvatarizationJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
        - jobs
      summary: Find All Jobs By User
      description: >-
        Retrieve all jobs executed by the current user.


        Jobs are filtered by execution date, by default only the last 5 days are
        displayed,

        a parameter can be provided to go further back in time.
      operationId: find_all_jobs_by_user
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: nb_days
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 1825
                minimum: 0
              - type: 'null'
            title: Nb Days
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/GenericJob'
                title: Response Jobs-Find All Jobs By User
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/{id}/cancel:
    post:
      tags:
        - jobs
      summary: Cancel Job
      description: |-
        Cancel any kind of job.

        If the job hadn't been started yet, revoke it.
        If the job is ongoing, gently kill it.
        If the job is done, do nothing.
      operationId: cancel_job
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/avatarization:
    post:
      tags:
        - jobs
      summary: Create Avatarization Job
      description: Create an avatarization job.
      operationId: create_avatarization_job
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AvatarizationJobCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvatarizationJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/avatarization_with_time_series:
    post:
      tags:
        - jobs
      summary: Create Avatarization With Time Series Job
      description: Create an avatarization with time series job.
      operationId: create_avatarization_with_time_series_job
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AvatarizationWithTimeSeriesJobCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvatarizationWithTimeSeriesJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/avatarization_multi_table:
    post:
      tags:
        - jobs
      summary: Create Avatarization Multi Table Job
      description: Create an avatarization for relational data.
      operationId: create_avatarization_multi_table_job
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AvatarizationMultiTableJobCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvatarizationMultiTableJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/metrics/signal:
    post:
      tags:
        - jobs
      summary: Create Signal Metrics Job
      description: Create a signal metrics job.
      operationId: create_signal_metrics_job
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignalMetricsJobCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignalMetricsJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/metrics/privacy:
    post:
      tags:
        - jobs
      summary: Create Privacy Metrics Job
      description: Create a privacy metrics job.
      operationId: create_privacy_metrics_job
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivacyMetricsJobCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivacyMetricsJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/metrics/privacy_time_series:
    post:
      tags:
        - jobs
      summary: Create Privacy Metrics Time Series Job
      description: Create a privacy metrics with time series job.
      operationId: create_privacy_metrics_time_series_job
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivacyMetricsWithTimeSeriesJobCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivacyMetricsWithTimeSeriesJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/metrics/signal_time_series:
    post:
      tags:
        - jobs
      summary: Create Signal Metrics Time Series Job
      description: Create a signal metrics with time series job.
      operationId: create_signal_metrics_time_series_job
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignalMetricsWithTimeSeriesJobCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignalMetricsWithTimeSeriesJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/metrics/privacy_multi_table:
    post:
      tags:
        - jobs
      summary: Create Privacy Metrics Multi Table Job
      description: Create a privacy metrics job.
      operationId: create_privacy_metrics_multi_table_job
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivacyMetricsMultiTableJobCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivacyMetricsMultiTableJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/metrics/privacy_geolocation:
    post:
      tags:
        - jobs
      summary: Create Privacy Metrics Geolocation Job
      description: Create a geolocation privacy metrics job.
      operationId: create_privacy_metrics_geolocation_job
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrivacyMetricsGeolocationJobCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivacyMetricsGeolocationJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/{id}/metrics/privacy_geolocation:
    get:
      tags:
        - jobs
      summary: Get Privacy Metrics Geolocation Job
      description: Get a geolocation privacy metrics job.
      operationId: get_privacy_metrics_geolocation_job
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivacyMetricsGeolocationJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/avatarization/{id}:
    get:
      tags:
        - jobs
      summary: Get Avatarization Job
      description: Get an avatarization job.
      operationId: get_avatarization_job
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvatarizationJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/avatarization_with_time_series/{id}:
    get:
      tags:
        - jobs
      summary: Get Avatarization Time Series Job
      description: Get an avatarization time series job.
      operationId: get_avatarization_time_series_job
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvatarizationWithTimeSeriesJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/avatarization_multi_table/{id}:
    get:
      tags:
        - jobs
      summary: Get Avatarization Multi Table Job
      description: Get a multi table avatarization job.
      operationId: get_avatarization_multi_table_job
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvatarizationMultiTableJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/{id}/metrics/signal:
    get:
      tags:
        - jobs
      summary: Get Signal Metrics
      description: Get a signal metrics job.
      operationId: get_signal_metrics
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignalMetricsJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/{id}/metrics/signal_time_series:
    get:
      tags:
        - jobs
      summary: Get Signal Metrics Time Series Job
      description: Get a signal metrics time series job.
      operationId: get_signal_metrics_time_series_job
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignalMetricsWithTimeSeriesJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/{id}/metrics/privacy:
    get:
      tags:
        - jobs
      summary: Get Privacy Metrics
      description: Get a privacy metrics job.
      operationId: get_privacy_metrics
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivacyMetricsJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/{id}/metrics/privacy_time_series:
    get:
      tags:
        - jobs
      summary: Get Privacy Metrics Time Series Job
      description: Get a privacy metrics time series job.
      operationId: get_privacy_metrics_time_series_job
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivacyMetricsWithTimeSeriesJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/{id}/metrics/privacy_multi_table:
    get:
      tags:
        - jobs
      summary: Get Privacy Metrics Multi Table Job
      description: Get a privacy metrics multi table job.
      operationId: get_privacy_metrics_multi_table_job
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrivacyMetricsMultiTableJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/advice:
    post:
      tags:
        - jobs
      summary: Create Advice
      description: Create advice on anonymization parameters.
      operationId: create_advice
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdviceJobCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdviceJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /jobs/advice/{id}:
    get:
      tags:
        - jobs
      summary: Get Advice
      description: Get advice result.
      operationId: get_advice
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdviceJob'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /users:
    post:
      tags:
        - users
      summary: Create User
      description: |-
        Create a user.

        This endpoint is protected with rate limiting.
      operationId: create_user
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUser'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
        - users
      summary: Find Users
      description: |-
        Get users, optionally filtering them by username or email.

        This endpoint is protected with rate limiting.
      operationId: find_users
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: email
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Email
        - name: username
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Username
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
                title: Response Users-Find Users
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /users/me:
    get:
      tags:
        - users
      summary: Get Me
      description: Get my own user.
      operationId: get_me
      security:
        - OAuth2PasswordBearer: []
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
  /users/{id}:
    get:
      tags:
        - users
      summary: Get User
      description: |-
        Get a user by id.

        This endpoint is protected with rate limiting.
      operationId: get_user
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
        - users
      summary: Delete User
      operationId: delete_user
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /projections/{job_id}:
    get:
      tags:
        - metrics
      summary: Get Job Projections
      description: |-
        Get the projections of records and avatars in 3D.

        See https://saiph.readthedocs.io/en/latest/ for more information.

        Arguments
        ---------
            job_id:
                avatarization or privacy job id used to fit the model
      operationId: get_job_projections
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Job Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Projections'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /contributions:
    get:
      tags:
        - metrics
      summary: Get Variable Contributions
      description: |-
        Get the contributions of the dataset variables within the fitted space.

        See https://saiph.readthedocs.io/en/latest for more information.

        Arguments
        ---------
            job_id:
                avatarization or privacy job id used to fit the model
      operationId: get_variable_contributions
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: job_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            title: Job Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contributions'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /variance/{job_id}:
    get:
      tags:
        - metrics
      summary: Get Explained Variance
      description: |-
        Get the explained variance of records.

        See https://saiph.readthedocs.io/en/latest/ for more information.

        Arguments
        ---------
            job_id:
                avatarization or privacy job id used to fit the model
      operationId: get_explained_variance
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Job Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExplainedVariance'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /stats/cluster:
    get:
      tags:
        - stats
      summary: Get Cluster Stats
      description: Get insights into the cluster's usage.
      operationId: get_cluster_stats
      security:
        - OAuth2PasswordBearer: []
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterStats'
  /reports:
    post:
      tags:
        - reports
      summary: Create Report
      description: Create an anonymization report.
      operationId: create_report
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Report'
        '201':
          description: Report job was created
          detail: A report job was started, report will be available later
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /reports/jobs/{id}:
    get:
      tags:
        - reports
      summary: Get Report
      operationId: get_report
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Report'
        '202':
          description: Report request was accepted
          detail: A report job is running, report will be available later
          content:
            application/json:
              schema: {}
        '400':
          description: Report request failed
          detail: Report job failed during execution
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /reports/{id}/download:
    get:
      tags:
        - reports
      summary: Download Report
      description: Download a report.
      operationId: download_report
      security:
        - OAuth2PasswordBearer: []
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '404':
          description: Report not found or you don't have access to it
          detail: Report not found or you don't have access to it
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /reports/from_data:
    post:
      tags:
        - reports
      summary: Create Report From Data
      description: Create an anonymization report without avatarization job.
      operationId: create_report_from_data
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportFromDataCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Report'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /reports/geolocation_privacy:
    post:
      tags:
        - reports
      summary: Create Geolocation Privacy Report
      description: Create an anonymization report without avatarization job.
      operationId: create_geolocation_privacy_report
      security:
        - OAuth2PasswordBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportGeolocationPrivacyCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Report'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /:
    get:
      tags:
        - health
      summary: Get Root
      description: Verify server health.
      operationId: get_root
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /health:
    get:
      tags:
        - health
      summary: Get Health
      description: Verify server health.
      operationId: get_health
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /health/db:
    get:
      tags:
        - health
      summary: Get Health Db
      description: Verify connection to the db health.
      operationId: get_health_db
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /login:
    post:
      tags:
        - auth
      summary: Login
      description: Login the user.
      operationId: login
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Login'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /refresh:
    get:
      tags:
        - auth
      summary: Refresh
      operationId: refresh
      parameters:
        - name: token
          in: query
          required: true
          schema:
            type: string
            title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /login/forgotten_password:
    post:
      tags:
        - auth
      summary: Forgotten Password
      operationId: forgotten_password
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ForgottenPasswordRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /login/reset_password:
    post:
      tags:
        - auth
      summary: Reset Password
      operationId: reset_password
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResetPasswordRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /check_client:
    get:
      tags:
        - compatibility
      summary: Is Client Compatible
      description: Verify if the client is compatible with the API.
      operationId: is_client_compatible
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompatibilityResponse'
components:
  schemas:
    Advice:
      properties:
        parameters:
          $ref: '#/components/schemas/AvatarizationParameters'
          description: Suggested AvatarizationParameters.
        python_client_pipeline:
          type: string
          title: Python Client Pipeline
          description: >-
            Pipeline ready to run, you need to replace <NAME_OF_YOUR_DF> by the
            name of your dataframe.
        more_details:
          additionalProperties:
            type: string
          type: object
          title: More Details
          description: Additional information on parameters and processors.
          default: {}
      type: object
      required:
        - parameters
        - python_client_pipeline
      title: Advice
      description: Recommendations on anonymization parameters and processors.
    AdviceJobCreate:
      properties:
        parameters:
          $ref: '#/components/schemas/AdviceParameters'
      type: object
      required:
        - parameters
      title: AdviceJobCreate
    AdviceParameters:
      properties:
        dataset_id:
          type: string
          format: uuid
          title: Dataset Id
      additionalProperties: true
      type: object
      required:
        - dataset_id
      title: AdviceParameters
      description: Parameters for advice job.
    AnalysisStatus:
      type: string
      enum:
        - started
        - done
      title: AnalysisStatus
    AvatarizationJobCreate:
      properties:
        kind:
          $ref: '#/components/schemas/JobKind'
          default: avatarization
        parameters:
          $ref: '#/components/schemas/AvatarizationParameters'
      type: object
      required:
        - parameters
      title: AvatarizationJobCreate
    AvatarizationMultiTableJobCreate:
      properties:
        parameters:
          $ref: '#/components/schemas/AvatarizationMultiTableParameters'
      type: object
      required:
        - parameters
      title: AvatarizationMultiTableJobCreate
    AvatarizationMultiTableParameters:
      properties:
        table_links:
          items:
            $ref: '#/components/schemas/TableLink'
          type: array
          minItems: 1
          title: Table Links
          description: Description of each relational link between tables.
        table_parameters:
          items:
            anyOf:
              - $ref: '#/components/schemas/BaseAvatarizationParameters'
              - $ref: '#/components/schemas/BaseAvatarizationWithTimeSeriesParameters'
          type: array
          minItems: 1
          title: Table Parameters
          description: 'Avatarization parameters for each table. '
        seed:
          anyOf:
            - type: integer
            - type: 'null'
          title: Seed
          description: >-
            Seed used to generate the random numbers.If not provided, a random
            seed will be generated.
      additionalProperties: true
      type: object
      required:
        - table_links
        - table_parameters
      title: AvatarizationMultiTableParameters
      description: >-
        Parameters to create a multi table anonymization job.


        There are a few rules to follow to make sure that the parameters are
        consistent:


        - Every dataset_id in table_parameters must be referenced in
        table_links.

        - Every dataset_id in table_links must also be referenced in
        table_parameters.

        - Every TableReference with the same dataset_id must be identical in
        other fields.

        - There can't be a cycle in the table_links e.g. A -> B -> C -> A is not
        allowed.

        - Each table needs to have N+1 identifier columns (id, patient_id,
        visit_id, etc.), where N is
          the  number of direct predecessors of each table. A direct predecessor is a table that has a
          direct link (depth=1) between itself and another table.

          For example, if a table has 2 direct predecessors, it needs to have 3 identifier columns.

          Examples:
            * A -> B <- C , A and C need to have 1 identifier column, and B needs to have 3 identifier
                columns.
            * A -> B -> C <- D , A and D need to have 1 identifier column, B needs to have 2, and
             C needs to only have 3 and not 4, because C only has 2 direct predecessors (B and D).
             There is not a direct link from C to A, so it is not a direct predecessor.
        - Each table can only be linked to the same variable once. This means
        that if A -> B <- C ,
          A and C need to link to two different columns in B.
        - Every table can only reference another table once. This means that A
        -> B <- A is
          not possible.
        - Top level tables need to be individual_level tables. For example, A ->
        B <- C , A and C need
          to be individual_level tables.
    AvatarizationMultiTableResult:
      properties:
        datasets:
          items:
            $ref: '#/components/schemas/AvatarizationResultPerDataset'
          type: array
          title: Datasets
      type: object
      required:
        - datasets
      title: AvatarizationMultiTableResult
    AvatarizationParameters:
      properties:
        dataset_id:
          type: string
          format: uuid
          title: Dataset Id
        column_weights:
          anyOf:
            - additionalProperties:
                type: number
              type: object
            - type: 'null'
          title: Column Weights
        ncp:
          anyOf:
            - type: integer
            - type: 'null'
          title: Ncp
        imputation:
          anyOf:
            - $ref: '#/components/schemas/ImputationParameters'
            - type: 'null'
        use_categorical_reduction:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Categorical Reduction
        exclude_variables:
          anyOf:
            - $ref: '#/components/schemas/ExcludeVariablesParameters'
            - type: 'null'
        k:
          type: integer
          title: K
        seed:
          anyOf:
            - type: integer
            - type: 'null'
          title: Seed
      additionalProperties: true
      type: object
      required:
        - dataset_id
        - k
      title: AvatarizationParameters
      description: |-
        Parameters to create an anonymization job.

        It contains the seed parameter.
    AvatarizationResult:
      properties:
        privacy_metrics:
          anyOf:
            - $ref: '#/components/schemas/PrivacyMetrics'
            - type: 'null'
        signal_metrics:
          anyOf:
            - $ref: '#/components/schemas/SignalMetrics'
            - type: 'null'
        avatars_dataset:
          $ref: '#/components/schemas/Dataset'
        sensitive_unshuffled_avatars_datasets:
          $ref: '#/components/schemas/Dataset'
      type: object
      required:
        - avatars_dataset
        - sensitive_unshuffled_avatars_datasets
      title: AvatarizationResult
    AvatarizationResultPerDataset:
      properties:
        privacy_metrics:
          anyOf:
            - $ref: '#/components/schemas/PrivacyMetrics'
            - type: 'null'
        signal_metrics:
          anyOf:
            - $ref: '#/components/schemas/SignalMetrics'
            - type: 'null'
        avatars_dataset:
          $ref: '#/components/schemas/Dataset'
        sensitive_unshuffled_avatars_datasets:
          $ref: '#/components/schemas/Dataset'
        original_id:
          type: string
          format: uuid
          title: Original Id
      type: object
      required:
        - avatars_dataset
        - sensitive_unshuffled_avatars_datasets
        - original_id
      title: AvatarizationResultPerDataset
    AvatarizationTimeSeriesParameters:
      properties:
        dataset_id:
          type: string
          format: uuid
          title: Dataset Id
          description: Identifier of the dataset containing the time series.
        projection_parameters:
          anyOf:
            - $ref: '#/components/schemas/FPCAParameters'
            - $ref: '#/components/schemas/FlattenParameters'
          title: Projection Parameters
          description: Parameters of the time series projection.
      type: object
      required:
        - dataset_id
        - projection_parameters
      title: AvatarizationTimeSeriesParameters
      description: Parameters for the anonymization of a Time Series.
    AvatarizationWithTimeSeriesJobCreate:
      properties:
        parameters:
          $ref: '#/components/schemas/AvatarizationWithTimeSeriesParameters'
      type: object
      required:
        - parameters
      title: AvatarizationWithTimeSeriesJobCreate
    AvatarizationWithTimeSeriesParameters:
      properties:
        dataset_id:
          type: string
          format: uuid
          title: Dataset Id
        column_weights:
          anyOf:
            - additionalProperties:
                type: number
              type: object
            - type: 'null'
          title: Column Weights
        ncp:
          anyOf:
            - type: integer
            - type: 'null'
          title: Ncp
        imputation:
          anyOf:
            - $ref: '#/components/schemas/ImputationParameters'
            - type: 'null'
        use_categorical_reduction:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Categorical Reduction
        exclude_variables:
          anyOf:
            - $ref: '#/components/schemas/ExcludeVariablesParameters'
            - type: 'null'
        vanilla_dataset_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Vanilla Dataset Id
          description: 'Dataset identifier of the vanilla data. '
        time_series:
          items:
            $ref: '#/components/schemas/AvatarizationTimeSeriesParameters'
          type: array
          title: Time Series
          description: >-
            Parameters of the time series. Each time series can have a different
            set of parameters.
        seed:
          anyOf:
            - type: integer
            - type: 'null'
          title: Seed
      additionalProperties: true
      type: object
      required:
        - dataset_id
        - time_series
      title: AvatarizationWithTimeSeriesParameters
      description: |-
        Parameters to create an time series anonymization job.

        It contains the seed parameter.
    AvatarizationWithTimeSeriesResult:
      properties:
        datasets:
          items:
            $ref: '#/components/schemas/AvatarizationResultPerDataset'
          type: array
          title: Datasets
      type: object
      required:
        - datasets
      title: AvatarizationWithTimeSeriesResult
    BaseAvatarizationParameters:
      properties:
        dataset_id:
          type: string
          format: uuid
          title: Dataset Id
        column_weights:
          anyOf:
            - additionalProperties:
                type: number
              type: object
            - type: 'null'
          title: Column Weights
        ncp:
          anyOf:
            - type: integer
            - type: 'null'
          title: Ncp
        imputation:
          anyOf:
            - $ref: '#/components/schemas/ImputationParameters'
            - type: 'null'
        use_categorical_reduction:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Categorical Reduction
        exclude_variables:
          anyOf:
            - $ref: '#/components/schemas/ExcludeVariablesParameters'
            - type: 'null'
        k:
          type: integer
          title: K
      type: object
      required:
        - dataset_id
        - k
      title: BaseAvatarizationParameters
      description: |-
        Parameters to create an anonymization with vanilla dataset.

        This class is used in the multi table job. It does not contain the seed.
    BaseAvatarizationWithTimeSeriesParameters:
      properties:
        dataset_id:
          type: string
          format: uuid
          title: Dataset Id
        column_weights:
          anyOf:
            - additionalProperties:
                type: number
              type: object
            - type: 'null'
          title: Column Weights
        ncp:
          anyOf:
            - type: integer
            - type: 'null'
          title: Ncp
        imputation:
          anyOf:
            - $ref: '#/components/schemas/ImputationParameters'
            - type: 'null'
        use_categorical_reduction:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Categorical Reduction
        exclude_variables:
          anyOf:
            - $ref: '#/components/schemas/ExcludeVariablesParameters'
            - type: 'null'
        vanilla_dataset_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Vanilla Dataset Id
          description: 'Dataset identifier of the vanilla data. '
        time_series:
          items:
            $ref: '#/components/schemas/AvatarizationTimeSeriesParameters'
          type: array
          title: Time Series
          description: >-
            Parameters of the time series. Each time series can have a different
            set of parameters.
      type: object
      required:
        - dataset_id
        - time_series
      title: BaseAvatarizationWithTimeSeriesParameters
      description: |-
        Parameters to configure an anonymization with a time series dataset.

        This class is used in the multi table job. It does not contain the seed.
    BasePrivacyMetricsParameters:
      properties:
        original_id:
          type: string
          format: uuid
          title: Original Id
        avatarization_job_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Avatarization Job Id
        closest_rate_percentage_threshold:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Closest Rate Percentage Threshold
          description: >-
            Threshold of closest original individuals to define a distance
            threshold. Any avatar data generated closer from an original than
            the distance threshold, is considered at risk.
        closest_rate_ratio_threshold:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Closest Rate Ratio Threshold
          description: >-
            Closest distance ratio threshold below which an avatar data is
            considered too close to an original and too isolated from the rest
            to be safe.
        imputation:
          anyOf:
            - $ref: '#/components/schemas/ImputationParameters'
            - type: 'null'
          description: >-
            Imputation parameters used to preprocess avatars data for metrics
            computation.
        ncp:
          anyOf:
            - type: integer
            - type: 'null'
          title: Ncp
          description: >-
            Number of components used for distance based metrics computation.
            Default behavior similar to avatarization. If unspecified, ncp is
            set to the minimum value between 5 and the number of variables after
            one hot encoding. Note: we recommend using to use the same ncp as
            during the avatarization to check the worst-case scenario.
        use_categorical_reduction:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Categorical Reduction
          description: >-
            Parameter to vectorize categorical variables using cat2vec. See
            :class:`AvatarizationParameters` for more details. Note: we
            recommend using the same parameter as during the avatarization.
        known_variables:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Known Variables
          description: >-
            Variables considered to be known by the attacker. Used to measure
            some specific privacy metrics. Note: we recommend using demographic
            variables as they are the most likely to be known by an attacker.
        target:
          anyOf:
            - type: string
            - type: 'null'
          title: Target
          description: >-
            The target variable to be inferred. Used to measure some specific
            privacy metrics. Must be used together with ``known_variables``.
            Note: we recommend using a sensitive variable
        categorical_hidden_rate_variables:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Categorical Hidden Rate Variables
          description: >-
            List of categorical variables to compute the categorical hidden
            rate.
          default: []
        unshuffled_avatars_id:
          type: string
          format: uuid
          title: Unshuffled Avatars Id
      additionalProperties: true
      type: object
      required:
        - original_id
        - unshuffled_avatars_id
      title: BasePrivacyMetricsParameters
      description: |-
        Parameters to configure privacy metrics.

        This class is used in the multi table job. It does not contain the seed.
    BasePrivacyMetricsWithTimeSeriesParameters:
      properties:
        closest_rate_percentage_threshold:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Closest Rate Percentage Threshold
          description: >-
            Threshold of closest original individuals to define a distance
            threshold. Any avatar data generated closer from an original than
            the distance threshold, is considered at risk.
        closest_rate_ratio_threshold:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Closest Rate Ratio Threshold
          description: >-
            Closest distance ratio threshold below which an avatar data is
            considered too close to an original and too isolated from the rest
            to be safe.
        imputation:
          anyOf:
            - $ref: '#/components/schemas/ImputationParameters'
            - type: 'null'
          description: >-
            Imputation parameters used to preprocess avatars data for metrics
            computation.
        ncp:
          anyOf:
            - type: integer
            - type: 'null'
          title: Ncp
          description: >-
            Number of components used for distance based metrics computation.
            Default behavior similar to avatarization. If unspecified, ncp is
            set to the minimum value between 5 and the number of variables after
            one hot encoding. Note: we recommend using to use the same ncp as
            during the avatarization to check the worst-case scenario.
        use_categorical_reduction:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Categorical Reduction
          description: >-
            Parameter to vectorize categorical variables using cat2vec. See
            :class:`AvatarizationParameters` for more details. Note: we
            recommend using the same parameter as during the avatarization.
        known_variables:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Known Variables
          description: >-
            Variables considered to be known by the attacker. Used to measure
            some specific privacy metrics. Note: we recommend using demographic
            variables as they are the most likely to be known by an attacker.
        target:
          anyOf:
            - type: string
            - type: 'null'
          title: Target
          description: >-
            The target variable to be inferred. Used to measure some specific
            privacy metrics. Must be used together with ``known_variables``.
            Note: we recommend using a sensitive variable
        categorical_hidden_rate_variables:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Categorical Hidden Rate Variables
          description: >-
            List of categorical variables to compute the categorical hidden
            rate.
          default: []
        vanilla_original_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Vanilla Original Id
          description: Identifier of the original vanilla dataset.
        vanilla_unshuffled_avatars_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Vanilla Unshuffled Avatars Id
          description: Identifier of the avatar vanilla dataset.
        time_series:
          items:
            $ref: '#/components/schemas/PrivacyMetricsTimeSeriesParameters'
          type: array
          title: Time Series
          description: >-
            Privacy metrics parameters of the time series. Each time series can
            have a different set of parameters.
      additionalProperties: true
      type: object
      required:
        - vanilla_original_id
        - vanilla_unshuffled_avatars_id
        - time_series
      title: BasePrivacyMetricsWithTimeSeriesParameters
      description: |-
        Parameters to configure a privacy metric job with a time series dataset.

        This class is used in the multi table job. It does not contain the seed.
    ClusterStats:
      properties:
        n_active_tasks:
          anyOf:
            - type: integer
            - type: 'null'
          title: N Active Tasks
        available_concurrency:
          anyOf:
            - type: integer
            - type: 'null'
          title: Available Concurrency
        utilization_rate_100:
          anyOf:
            - type: integer
            - type: 'null'
          title: Utilization Rate 100
        status_message:
          type: string
          title: Status Message
          default: ''
      type: object
      title: ClusterStats
    ColumnDetail:
      properties:
        type:
          $ref: '#/components/schemas/ColumnType'
        label:
          type: string
          title: Label
        is_identifier:
          type: boolean
          title: Is Identifier
          default: false
      type: object
      required:
        - type
        - label
      title: ColumnDetail
    ColumnStats:
      properties:
        label:
          type: string
          title: Label
        dtype:
          type: string
          title: Dtype
        missing_number:
          type: integer
          minimum: 0
          title: Missing Number
        missing_proportion:
          type: number
          maximum: 1
          minimum: 0
          title: Missing Proportion
        unique_number:
          type: integer
          minimum: 0
          title: Unique Number
        unique_proportion:
          type: number
          maximum: 1
          minimum: 0
          title: Unique Proportion
        mean:
          anyOf:
            - type: number
            - type: 'null'
          title: Mean
        median:
          anyOf:
            - type: number
            - type: 'null'
          title: Median
        standard_deviation:
          anyOf:
            - type: number
            - type: 'null'
          title: Standard Deviation
        mode:
          anyOf:
            - type: string
            - type: integer
            - type: number
            - type: 'null'
          title: Mode
        is_skewed:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Is Skewed
        is_rare:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Is Rare
      type: object
      required:
        - label
        - dtype
        - missing_number
        - missing_proportion
        - unique_number
        - unique_proportion
      title: ColumnStats
    ColumnType:
      type: string
      enum:
        - int
        - bool
        - category
        - float
        - datetime
      title: ColumnType
    CompatibilityResponse:
      properties:
        message:
          type: string
          title: Message
        most_recent_compatible_client:
          anyOf:
            - type: string
            - type: 'null'
          title: Most Recent Compatible Client
        status:
          $ref: '#/components/schemas/CompatibilityStatus'
      type: object
      required:
        - message
        - status
      title: CompatibilityResponse
    CompatibilityStatus:
      type: string
      enum:
        - compatible
        - incompatible
        - unknown
      title: CompatibilityStatus
    Contributions:
      properties:
        data:
          additionalProperties:
            additionalProperties:
              type: number
            type: object
          type: object
          title: Data
      type: object
      required:
        - data
      title: Contributions
    CreateUser:
      properties:
        username:
          anyOf:
            - type: string
            - type: 'null'
          title: Username
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        role:
          $ref: '#/components/schemas/UserRole'
          default: user
        password:
          anyOf:
            - type: string
            - type: 'null'
          title: Password
      type: object
      title: CreateUser
      description: |-
        Create a user, either with an email, or a username.

        The choice will depend on how your server is setup.
    Dataset:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        hash:
          type: string
          title: Hash
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        columns:
          items:
            $ref: '#/components/schemas/ColumnDetail'
          type: array
          title: Columns
        download_url:
          type: string
          title: Download Url
        analysis_status:
          anyOf:
            - $ref: '#/components/schemas/AnalysisStatus'
            - type: 'null'
        analysis_duration:
          anyOf:
            - type: number
            - type: 'null'
          title: Analysis Duration
        nb_lines:
          anyOf:
            - type: integer
            - type: 'null'
          title: Nb Lines
        nb_dimensions:
          type: integer
          title: Nb Dimensions
        summary:
          anyOf:
            - $ref: '#/components/schemas/DatasetSummary'
            - type: 'null'
        filetype:
          $ref: '#/components/schemas/FileType'
      type: object
      required:
        - id
        - hash
        - columns
        - download_url
        - nb_dimensions
        - filetype
      title: Dataset
    DatasetSummary:
      properties:
        stats:
          items:
            $ref: '#/components/schemas/ColumnStats'
          type: array
          title: Stats
        probable_ids:
          items:
            type: string
          type: array
          title: Probable Ids
      type: object
      required:
        - stats
        - probable_ids
      title: DatasetSummary
    ExcludeVariablesMethod:
      type: string
      enum:
        - row_order
        - coordinate_similarity
      title: ExcludeVariablesMethod
      description: >-
        The method to exclude column.


        There are several possible choices:


        - ``row_order``: **SENSITIVE** The excluded column will be linked to the
        original row order.

        This is a violation of privacy.


        - ``coordinate_similarity``: The excluded column will be linked by
        individual similarity.
    ExcludeVariablesParameters:
      properties:
        variable_names:
          items:
            type: string
          type: array
          title: Variable Names
          description: 'List of variables to exclude from the anonymization. '
        replacement_strategy:
          $ref: '#/components/schemas/ExcludeVariablesMethod'
          description: See :class:`ExcludeVariablesMethod`.
      type: object
      required:
        - variable_names
        - replacement_strategy
      title: ExcludeVariablesParameters
      description: >-
        Parameters to exclude some variables from the anonymization before
        re-assigning.


        This parameter can be applied to any variable, regardless of its type
        but it is particularly

        recommended when the data contains categorical variables with a large
        number of modalities.
    ExplainedVariance:
      properties:
        raw:
          items:
            type: number
          type: array
          title: Raw
        ratio:
          items:
            type: number
          type: array
          title: Ratio
      type: object
      required:
        - raw
        - ratio
      title: ExplainedVariance
    FPCAParameters:
      properties:
        nf:
          type: integer
          title: Nf
          description: Number of degrees of freedom kept by the projection.
        projection_type:
          type: string
          enum:
            - fpca
          const: fpca
          title: Projection Type
          default: fpca
      type: object
      required:
        - nf
      title: FPCAParameters
      description: Parameters of a FPCA projection.
    FileType:
      type: string
      enum:
        - csv
        - parquet
      title: FileType
    FlattenParameters:
      properties:
        projection_type:
          type: string
          enum:
            - flatten
          const: flatten
          title: Projection Type
          default: flatten
      type: object
      title: FlattenParameters
      description: Parameters of a Flatten projection.
    ForgottenPasswordRequest:
      properties:
        email:
          type: string
          title: Email
      type: object
      required:
        - email
      title: ForgottenPasswordRequest
    GenericParameters:
      properties: {}
      additionalProperties: true
      type: object
      title: GenericParameters
    GenericResult:
      properties: {}
      type: object
      title: GenericResult
    GeolocationDensityParameters:
      properties:
        projection_type:
          type: string
          enum:
            - geolocation_density
          const: geolocation_density
          title: Projection Type
          default: geolocation_density
        n_lon_to_compute:
          type: integer
          title: N Lon To Compute
          description: Number of longitude to compute.
          default: 100
        n_lat_to_compute:
          type: integer
          title: N Lat To Compute
          description: Number of latitude to compute.
          default: 100
      type: object
      title: GeolocationDensityParameters
      description: Parameters of a Geolocation Density projection.
    GeolocationFeatures:
      type: string
      enum:
        - length
        - duration
        - speed
      title: GeolocationFeatures
      description: Features available for geolocation feature projection and metrics.
    GeolocationFeaturesParameters:
      properties:
        projection_type:
          type: string
          enum:
            - geolocation_features
          const: geolocation_features
          title: Projection Type
          default: geolocation_features
      type: object
      title: GeolocationFeaturesParameters
      description: Parameters of a Geolocation Features projection.
    GeolocationPrivacyMetrics:
      properties:
        local_cloaking:
          type: number
          title: Local Cloaking
        hidden_rate:
          type: number
          title: Hidden Rate
        specific_hidden_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Specific Hidden Rate
        distance_to_closest:
          anyOf:
            - type: number
            - type: 'null'
          title: Distance To Closest
        closest_distances_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Closest Distances Ratio
        closest_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Closest Rate
        meta_metric:
          anyOf:
            - type: number
            - type: 'null'
          title: Meta Metric
        features_inference_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Features Inference Rate
        features_correlation_protection_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Features Correlation Protection Rate
        thresholded_signal_inference_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Thresholded Signal Inference Rate
        trace_correlation_protection_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Trace Correlation Protection Rate
        inference_distances:
          anyOf:
            - items:
                type: number
              type: array
            - type: 'null'
          title: Inference Distances
      type: object
      required:
        - local_cloaking
        - hidden_rate
      title: GeolocationPrivacyMetrics
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ImputationParameters:
      properties:
        method:
          anyOf:
            - $ref: '#/components/schemas/ImputeMethod'
            - type: 'null'
          description: >-
            Imputation method used to impute missing values, default method is
            fast_knn
        k:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: K
          description: >-
            Number of nearest neighbors to consider for imputation of missing
            values
        training_fraction:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Training Fraction
          description: >-
            Fraction of the data to use to impute the missing data, default is
            0.3 as we are using fast_knn method
      type: object
      title: ImputationParameters
    ImputeMethod:
      type: string
      enum:
        - knn
        - mode
        - median
        - mean
        - fast_knn
      title: ImputeMethod
    JobKind:
      type: string
      enum:
        - avatarization
        - privacy_metrics
        - signal_metrics
        - avatarization_with_time_series
        - avatarization_multi_table
        - privacy_metrics_with_time_series
        - privacy_metrics_multi_table
        - signal_metrics_with_time_series
        - privacy_metrics_geolocation
        - generic
        - advice
      title: JobKind
    JobProgress:
      properties:
        completion_rate_100:
          type: integer
          title: Completion Rate 100
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        created_at:
          type: string
          format: date-time
          title: Created At
      type: object
      required:
        - completion_rate_100
        - created_at
      title: JobProgress
    JobStatus:
      type: string
      enum:
        - pending
        - started
        - success
        - failure
        - killed
        - unknown
      title: JobStatus
    LinkMethod:
      type: string
      enum:
        - linear_sum_assignment
        - minimum_distance_assignment
        - sensitive_original_order_assignment
        - time_series
      title: LinkMethod
      description: >-
        Available assignment methods to link a child to its parent table after
        the anonymization.


        LINEAR_SUM_ASSIGNMENT: Assign using the linear sum assignment algorithm.

        This method is a good privacy and utility trade-off. The algorithm
        consumes lots of resources.


        MINIMUM_DISTANCE_ASSIGNMENT: Assign using the minimum distance
        assignment algorithm.

        This method assigns the closest child to the parent. It is an acceptable
        privacy and utility

        trade-off.

        This algorithm consumes less resources than the linear sum assignment.


        SENSITIVE_ORIGINAL_ORDER_ASSIGNMENT: Assign the child to the parent
        using the original order.

        WARNING!!! This method is a HIGH PRIVACY BREACH as it keeps the original
        order to assign

        the child to the parent.

        This method isn't recommended for privacy reasons but consumes less
        resources than the other

        methods.
    LoginResponse:
      properties:
        access_token:
          type: string
          title: Access Token
        refresh_token:
          anyOf:
            - type: string
            - type: 'null'
          title: Refresh Token
        token_type:
          type: string
          title: Token Type
      type: object
      required:
        - access_token
        - token_type
      title: LoginResponse
    MetaPrivacyMetrics:
      properties:
        details:
          items:
            oneOf:
              - $ref: '#/components/schemas/PrivacyMetricsPerMultiTableDataset'
              - $ref: '#/components/schemas/PrivacyMetricsPerTimeSeriesDataset'
            discriminator:
              propertyName: metrics_type
              mapping:
                multi_table: '#/components/schemas/PrivacyMetricsPerMultiTableDataset'
                time_series: '#/components/schemas/PrivacyMetricsPerTimeSeriesDataset'
          type: array
          title: Details
      type: object
      required:
        - details
      title: MetaPrivacyMetrics
    MetaSignalMetrics:
      properties:
        details:
          items:
            anyOf:
              - $ref: '#/components/schemas/SignalMetricsPerDataset'
              - $ref: '#/components/schemas/TimeSeriesSignalMetricsPerDataset'
          type: array
          title: Details
      type: object
      required:
        - details
      title: MetaSignalMetrics
    MetricsComputationType:
      type: string
      enum:
        - standalone
        - to_bottom_id_propagated
        - to_top_enriched
        - full_enriched
        - to_bottom_information_propagated
      title: MetricsComputationType
    PointOfInterest:
      type: string
      enum:
        - start
        - end
      title: PointOfInterest
      description: >-
        Available target points of interest (POI) for geolocation signal-based
        metrics.
    PrivacyMetrics:
      properties:
        hidden_rate:
          type: number
          title: Hidden Rate
        local_cloaking:
          type: number
          title: Local Cloaking
        distance_to_closest:
          anyOf:
            - type: number
            - type: 'null'
          title: Distance To Closest
        closest_distances_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Closest Distances Ratio
        column_direct_match_protection:
          type: number
          title: Column Direct Match Protection
        categorical_hidden_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Categorical Hidden Rate
        row_direct_match_protection:
          type: number
          title: Row Direct Match Protection
        correlation_protection_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Correlation Protection Rate
        inference_continuous:
          anyOf:
            - type: number
            - type: 'null'
          title: Inference Continuous
        inference_categorical:
          anyOf:
            - type: number
            - type: 'null'
          title: Inference Categorical
        closest_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Closest Rate
        targets:
          $ref: '#/components/schemas/PrivacyMetricsTargets'
          default:
            hidden_rate: '> 90'
            local_cloaking: '> 5'
            distance_to_closest: '> 0.2'
            closest_distances_ratio: '> 0.3'
            column_direct_match_protection: '> 50'
            categorical_hidden_rate: '> 90'
            row_direct_match_protection: '> 90'
            correlation_protection_rate: '> 95'
            inference_continuous: '> 10'
            inference_categorical: '> 10'
            closest_rate: '> 90'
      type: object
      required:
        - hidden_rate
        - local_cloaking
        - distance_to_closest
        - closest_distances_ratio
        - column_direct_match_protection
        - row_direct_match_protection
        - targets
      title: PrivacyMetrics
    PrivacyMetricsGeolocationJobCreate:
      properties:
        parameters:
          $ref: '#/components/schemas/PrivacyMetricsGeolocationParameters'
      type: object
      required:
        - parameters
      title: PrivacyMetricsGeolocationJobCreate
    PrivacyMetricsGeolocationParameters:
      properties:
        original_dataset_id:
          type: string
          format: uuid
          title: Original Dataset Id
        unshuffled_avatar_dataset_id:
          type: string
          format: uuid
          title: Unshuffled Avatar Dataset Id
        scenarios:
          items:
            $ref: '#/components/schemas/PrivacyMetricsGeolocationScenario'
          type: array
          title: Scenarios
        parameter_type:
          type: string
          enum:
            - privacy_metrics_geolocation
          const: privacy_metrics_geolocation
          title: Parameter Type
          default: privacy_metrics_geolocation
      additionalProperties: true
      type: object
      required:
        - original_dataset_id
        - unshuffled_avatar_dataset_id
        - scenarios
      title: PrivacyMetricsGeolocationParameters
      description: >-
        Parameters to configure a PrivacyMetricsGeolocationJob.


        It enables to compute privacy metrics for multiple scenarios (with no
        limit in number).
    PrivacyMetricsGeolocationResult:
      properties:
        privacy_metrics_per_scenario:
          items:
            $ref: '#/components/schemas/PrivacyMetricsGeolocationScenarioResult'
          type: array
          title: Privacy Metrics Per Scenario
      type: object
      required:
        - privacy_metrics_per_scenario
      title: PrivacyMetricsGeolocationResult
    PrivacyMetricsGeolocationScenario:
      properties:
        projection_parameters:
          anyOf:
            - $ref: '#/components/schemas/GeolocationDensityParameters'
            - $ref: '#/components/schemas/GeolocationFeaturesParameters'
          title: Projection Parameters
          description: Parameters of the geolocation projection.
        known_features:
          anyOf:
            - items:
                $ref: '#/components/schemas/GeolocationFeatures'
              type: array
            - type: 'null'
          title: Known Features
          description: Known geolocation features
        target_feature:
          anyOf:
            - $ref: '#/components/schemas/GeolocationFeatures'
            - type: 'null'
          description: Target geolocation features
        known_signal_position:
          anyOf:
            - $ref: '#/components/schemas/SignalPosition'
            - type: 'null'
          description: Position of the known signal
        target_signal_poi:
          anyOf:
            - $ref: '#/components/schemas/PointOfInterest'
            - type: 'null'
          description: Target point of interest (POI) to infer
        inference_metric_threshold:
          type: number
          title: Inference Metric Threshold
          description: Threshold (in meters) for the inference metric
          default: 500
      type: object
      required:
        - projection_parameters
      title: PrivacyMetricsGeolocationScenario
    PrivacyMetricsGeolocationScenarioResult:
      properties:
        privacy_metrics:
          $ref: '#/components/schemas/GeolocationPrivacyMetrics'
        parameters:
          $ref: '#/components/schemas/PrivacyMetricsGeolocationScenario'
      type: object
      required:
        - privacy_metrics
        - parameters
      title: PrivacyMetricsGeolocationScenarioResult
    PrivacyMetricsJobCreate:
      properties:
        parameters:
          $ref: '#/components/schemas/PrivacyMetricsParameters'
      type: object
      required:
        - parameters
      title: PrivacyMetricsJobCreate
    PrivacyMetricsMultiTableJobCreate:
      properties:
        parameters:
          $ref: '#/components/schemas/PrivacyMetricsMultiTableParameters'
      type: object
      required:
        - parameters
      title: PrivacyMetricsMultiTableJobCreate
    PrivacyMetricsMultiTableParameters:
      properties:
        table_links:
          items:
            $ref: '#/components/schemas/TableLink'
          type: array
          minItems: 1
          title: Table Links
          description: Description of each relational link between tables.
        table_parameters:
          items:
            anyOf:
              - $ref: '#/components/schemas/BasePrivacyMetricsParameters'
              - $ref: >-
                  #/components/schemas/BasePrivacyMetricsWithTimeSeriesParameters
          type: array
          minItems: 1
          title: Table Parameters
          description: 'Privacy metrics parameters for each table. '
        seed:
          anyOf:
            - type: integer
            - type: 'null'
          title: Seed
          description: Seed used to generate the random state.
      additionalProperties: true
      type: object
      required:
        - table_links
        - table_parameters
      title: PrivacyMetricsMultiTableParameters
      description: >-
        Parameters to create a multi table privacy metrics job.


        There are a few rules to follow to make sure that the parameters are
        consistent.

        The following ones are the same as the ones for the avatarization job.

        Other rules specific to privacy metrics are down below.


        - Every dataset_id in table_parameters must be referenced in
        table_links.

        - Every dataset_id in table_links must also be referenced in
        table_parameters.

        - Every TableReference with the same dataset_id must be identical in
        other fields.

        - There can't be a cycle in the table_links e.g. A -> B -> C -> A is not
        allowed.

        - Each table needs to have N+1 identifier columns (id, patient_id,
        visit_id, etc.), where N is
          the  number of direct predecessors of each table. A direct predecessor is a table that has a
          direct link (depth=1) between itself and another table.

          For example, if a table has 2 direct predecessors, it needs to have 3 identifier columns.

          Examples:
            * A -> B <- C , A and C need to have 1 identifier column, and B needs to have 3 identifier
                columns.
            * A -> B -> C <- D , A and D need to have 1 identifier column, B needs to have 2, and
             C needs to only have 3 and not 4, because C only has 2 direct predecessors (B and D).
             There is not a direct link from C to A, so it is not a direct predecessor.
        - Each table can only be linked to the same variable once. This means
        that if A -> B <- C ,
          A and C need to link to two different columns in B.
        - Every table can only reference another table once. This means that A
        -> B <- A is
          not possible.
        - Top level tables need to be individual_level tables. For example, A ->
        B <- C , A and C need
          to be individual_level tables.

          Privacy Metrics specific
          ------------------------

          - The avatar datasets referenced by the avatars_id in table_parameters need to be
            identical in columns, shape, and dtype to their corresponding original dataset.
    PrivacyMetricsParameters:
      properties:
        original_id:
          type: string
          format: uuid
          title: Original Id
        avatarization_job_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Avatarization Job Id
        closest_rate_percentage_threshold:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Closest Rate Percentage Threshold
          description: >-
            Threshold of closest original individuals to define a distance
            threshold. Any avatar data generated closer from an original than
            the distance threshold, is considered at risk.
        closest_rate_ratio_threshold:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Closest Rate Ratio Threshold
          description: >-
            Closest distance ratio threshold below which an avatar data is
            considered too close to an original and too isolated from the rest
            to be safe.
        imputation:
          anyOf:
            - $ref: '#/components/schemas/ImputationParameters'
            - type: 'null'
          description: >-
            Imputation parameters used to preprocess avatars data for metrics
            computation.
        ncp:
          anyOf:
            - type: integer
            - type: 'null'
          title: Ncp
          description: >-
            Number of components used for distance based metrics computation.
            Default behavior similar to avatarization. If unspecified, ncp is
            set to the minimum value between 5 and the number of variables after
            one hot encoding. Note: we recommend using to use the same ncp as
            during the avatarization to check the worst-case scenario.
        use_categorical_reduction:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Categorical Reduction
          description: >-
            Parameter to vectorize categorical variables using cat2vec. See
            :class:`AvatarizationParameters` for more details. Note: we
            recommend using the same parameter as during the avatarization.
        known_variables:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Known Variables
          description: >-
            Variables considered to be known by the attacker. Used to measure
            some specific privacy metrics. Note: we recommend using demographic
            variables as they are the most likely to be known by an attacker.
        target:
          anyOf:
            - type: string
            - type: 'null'
          title: Target
          description: >-
            The target variable to be inferred. Used to measure some specific
            privacy metrics. Must be used together with ``known_variables``.
            Note: we recommend using a sensitive variable
        categorical_hidden_rate_variables:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Categorical Hidden Rate Variables
          description: >-
            List of categorical variables to compute the categorical hidden
            rate.
          default: []
        unshuffled_avatars_id:
          type: string
          format: uuid
          title: Unshuffled Avatars Id
        seed:
          anyOf:
            - type: integer
            - type: 'null'
          title: Seed
          description: Seed used to generate the random state.
      additionalProperties: true
      type: object
      required:
        - original_id
        - unshuffled_avatars_id
      title: PrivacyMetricsParameters
      description: Parameters to configure a PrivacyMetricsJob.
    PrivacyMetricsPerMultiTableDataset:
      properties:
        hidden_rate:
          type: number
          title: Hidden Rate
        local_cloaking:
          type: number
          title: Local Cloaking
        distance_to_closest:
          anyOf:
            - type: number
            - type: 'null'
          title: Distance To Closest
        closest_distances_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Closest Distances Ratio
        column_direct_match_protection:
          type: number
          title: Column Direct Match Protection
        categorical_hidden_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Categorical Hidden Rate
        row_direct_match_protection:
          type: number
          title: Row Direct Match Protection
        correlation_protection_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Correlation Protection Rate
        inference_continuous:
          anyOf:
            - type: number
            - type: 'null'
          title: Inference Continuous
        inference_categorical:
          anyOf:
            - type: number
            - type: 'null'
          title: Inference Categorical
        closest_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Closest Rate
        targets:
          $ref: '#/components/schemas/PrivacyMetricsTargets'
          default:
            hidden_rate: '> 90'
            local_cloaking: '> 5'
            distance_to_closest: '> 0.2'
            closest_distances_ratio: '> 0.3'
            column_direct_match_protection: '> 50'
            categorical_hidden_rate: '> 90'
            row_direct_match_protection: '> 90'
            correlation_protection_rate: '> 95'
            inference_continuous: '> 10'
            inference_categorical: '> 10'
            closest_rate: '> 90'
        original_id:
          type: string
          format: uuid
          title: Original Id
        unshuffled_avatars_id:
          type: string
          format: uuid
          title: Unshuffled Avatars Id
        metrics_type:
          type: string
          enum:
            - multi_table
          const: multi_table
          title: Metrics Type
          default: multi_table
        individual_identifier_variable:
          type: string
          title: Individual Identifier Variable
        computation_type:
          $ref: '#/components/schemas/MetricsComputationType'
        dataset_name:
          type: string
          title: Dataset Name
      type: object
      required:
        - hidden_rate
        - local_cloaking
        - distance_to_closest
        - closest_distances_ratio
        - column_direct_match_protection
        - row_direct_match_protection
        - original_id
        - unshuffled_avatars_id
        - individual_identifier_variable
        - computation_type
        - dataset_name
        - targets
      title: PrivacyMetricsPerMultiTableDataset
    PrivacyMetricsPerTimeSeriesDataset:
      properties:
        hidden_rate:
          type: number
          title: Hidden Rate
        local_cloaking:
          type: number
          title: Local Cloaking
        distance_to_closest:
          anyOf:
            - type: number
            - type: 'null'
          title: Distance To Closest
        closest_distances_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Closest Distances Ratio
        column_direct_match_protection:
          type: number
          title: Column Direct Match Protection
        categorical_hidden_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Categorical Hidden Rate
        row_direct_match_protection:
          type: number
          title: Row Direct Match Protection
        correlation_protection_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Correlation Protection Rate
        inference_continuous:
          anyOf:
            - type: number
            - type: 'null'
          title: Inference Continuous
        inference_categorical:
          anyOf:
            - type: number
            - type: 'null'
          title: Inference Categorical
        closest_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Closest Rate
        targets:
          $ref: '#/components/schemas/PrivacyMetricsTargets'
          default:
            hidden_rate: '> 90'
            local_cloaking: '> 5'
            distance_to_closest: '> 0.2'
            closest_distances_ratio: '> 0.3'
            column_direct_match_protection: '> 50'
            categorical_hidden_rate: '> 90'
            row_direct_match_protection: '> 90'
            correlation_protection_rate: '> 95'
            inference_continuous: '> 10'
            inference_categorical: '> 10'
            closest_rate: '> 90'
        original_id:
          type: string
          format: uuid
          title: Original Id
        unshuffled_avatars_id:
          type: string
          format: uuid
          title: Unshuffled Avatars Id
        metrics_type:
          type: string
          enum:
            - time_series
          const: time_series
          title: Metrics Type
          default: time_series
      type: object
      required:
        - hidden_rate
        - local_cloaking
        - distance_to_closest
        - closest_distances_ratio
        - column_direct_match_protection
        - row_direct_match_protection
        - original_id
        - unshuffled_avatars_id
        - targets
      title: PrivacyMetricsPerTimeSeriesDataset
    PrivacyMetricsTargets:
      properties:
        hidden_rate:
          type: string
          title: Hidden Rate
        local_cloaking:
          type: string
          title: Local Cloaking
        distance_to_closest:
          type: string
          title: Distance To Closest
        closest_distances_ratio:
          type: string
          title: Closest Distances Ratio
        column_direct_match_protection:
          type: string
          title: Column Direct Match Protection
        categorical_hidden_rate:
          type: string
          title: Categorical Hidden Rate
        row_direct_match_protection:
          type: string
          title: Row Direct Match Protection
        correlation_protection_rate:
          type: string
          title: Correlation Protection Rate
        inference_continuous:
          type: string
          title: Inference Continuous
        inference_categorical:
          type: string
          title: Inference Categorical
        closest_rate:
          type: string
          title: Closest Rate
      type: object
      required:
        - hidden_rate
        - local_cloaking
        - distance_to_closest
        - closest_distances_ratio
        - column_direct_match_protection
        - categorical_hidden_rate
        - row_direct_match_protection
        - correlation_protection_rate
        - inference_continuous
        - inference_categorical
        - closest_rate
      title: PrivacyMetricsTargets
    PrivacyMetricsTimeSeriesParameters:
      properties:
        closest_rate_percentage_threshold:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Closest Rate Percentage Threshold
          description: >-
            Threshold of closest original individuals to define a distance
            threshold. Any avatar data generated closer from an original than
            the distance threshold, is considered at risk.
        closest_rate_ratio_threshold:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Closest Rate Ratio Threshold
          description: >-
            Closest distance ratio threshold below which an avatar data is
            considered too close to an original and too isolated from the rest
            to be safe.
        dataset_id:
          type: string
          format: uuid
          title: Dataset Id
        unshuffled_avatar_dataset_id:
          type: string
          format: uuid
          title: Unshuffled Avatar Dataset Id
        projection_parameters:
          anyOf:
            - $ref: '#/components/schemas/FPCAParameters'
            - $ref: '#/components/schemas/FlattenParameters'
            - type: 'null'
          title: Projection Parameters
          description: Parameters of the time series projection.
        parameter_type:
          type: string
          enum:
            - privacy_metrics_time_series
          const: privacy_metrics_time_series
          title: Parameter Type
          default: privacy_metrics_time_series
      type: object
      required:
        - dataset_id
        - unshuffled_avatar_dataset_id
      title: PrivacyMetricsTimeSeriesParameters
    PrivacyMetricsWithTimeSeriesJobCreate:
      properties:
        parameters:
          $ref: '#/components/schemas/PrivacyMetricsWithTimeSeriesParameters'
      type: object
      required:
        - parameters
      title: PrivacyMetricsWithTimeSeriesJobCreate
    PrivacyMetricsWithTimeSeriesParameters:
      properties:
        closest_rate_percentage_threshold:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Closest Rate Percentage Threshold
          description: >-
            Threshold of closest original individuals to define a distance
            threshold. Any avatar data generated closer from an original than
            the distance threshold, is considered at risk.
        closest_rate_ratio_threshold:
          anyOf:
            - type: number
              maximum: 1
              minimum: 0
            - type: 'null'
          title: Closest Rate Ratio Threshold
          description: >-
            Closest distance ratio threshold below which an avatar data is
            considered too close to an original and too isolated from the rest
            to be safe.
        imputation:
          anyOf:
            - $ref: '#/components/schemas/ImputationParameters'
            - type: 'null'
          description: >-
            Imputation parameters used to preprocess avatars data for metrics
            computation.
        ncp:
          anyOf:
            - type: integer
            - type: 'null'
          title: Ncp
          description: >-
            Number of components used for distance based metrics computation.
            Default behavior similar to avatarization. If unspecified, ncp is
            set to the minimum value between 5 and the number of variables after
            one hot encoding. Note: we recommend using to use the same ncp as
            during the avatarization to check the worst-case scenario.
        use_categorical_reduction:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Use Categorical Reduction
          description: >-
            Parameter to vectorize categorical variables using cat2vec. See
            :class:`AvatarizationParameters` for more details. Note: we
            recommend using the same parameter as during the avatarization.
        known_variables:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Known Variables
          description: >-
            Variables considered to be known by the attacker. Used to measure
            some specific privacy metrics. Note: we recommend using demographic
            variables as they are the most likely to be known by an attacker.
        target:
          anyOf:
            - type: string
            - type: 'null'
          title: Target
          description: >-
            The target variable to be inferred. Used to measure some specific
            privacy metrics. Must be used together with ``known_variables``.
            Note: we recommend using a sensitive variable
        categorical_hidden_rate_variables:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Categorical Hidden Rate Variables
          description: >-
            List of categorical variables to compute the categorical hidden
            rate.
          default: []
        vanilla_original_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Vanilla Original Id
          description: Identifier of the original vanilla dataset.
        vanilla_unshuffled_avatars_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Vanilla Unshuffled Avatars Id
          description: Identifier of the avatar vanilla dataset.
        time_series:
          items:
            $ref: '#/components/schemas/PrivacyMetricsTimeSeriesParameters'
          type: array
          title: Time Series
          description: >-
            Privacy metrics parameters of the time series. Each time series can
            have a different set of parameters.
        seed:
          anyOf:
            - type: integer
            - type: 'null'
          title: Seed
          description: Seed used to generate the random state.
      additionalProperties: true
      type: object
      required:
        - vanilla_original_id
        - vanilla_unshuffled_avatars_id
        - time_series
      title: PrivacyMetricsWithTimeSeriesParameters
    Projections:
      properties:
        records:
          items:
            items:
              type: number
            type: array
          type: array
          title: Records
        avatars:
          items:
            items:
              type: number
            type: array
          type: array
          title: Avatars
      type: object
      required:
        - records
        - avatars
      title: Projections
    Report:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        user_id:
          type: string
          format: uuid
          title: User Id
        job_id:
          type: string
          format: uuid
          title: Job Id
        created_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Created At
        download_url:
          type: string
          title: Download Url
      type: object
      required:
        - id
        - user_id
        - job_id
        - download_url
      title: Report
    ReportCreate:
      properties:
        avatarization_job_id:
          type: string
          format: uuid
          title: Avatarization Job Id
        privacy_job_id:
          type: string
          format: uuid
          title: Privacy Job Id
        signal_job_id:
          type: string
          format: uuid
          title: Signal Job Id
      type: object
      required:
        - avatarization_job_id
        - privacy_job_id
        - signal_job_id
      title: ReportCreate
    ReportFromDataCreate:
      properties:
        dataset_id:
          type: string
          format: uuid
          title: Dataset Id
        avatars_dataset_id:
          type: string
          format: uuid
          title: Avatars Dataset Id
        privacy_job_id:
          type: string
          format: uuid
          title: Privacy Job Id
        signal_job_id:
          type: string
          format: uuid
          title: Signal Job Id
      type: object
      required:
        - dataset_id
        - avatars_dataset_id
        - privacy_job_id
        - signal_job_id
      title: ReportFromDataCreate
    ReportGeolocationPrivacyCreate:
      properties:
        dataset_id:
          type: string
          format: uuid
          title: Dataset Id
        avatars_dataset_id:
          type: string
          format: uuid
          title: Avatars Dataset Id
        privacy_job_id:
          type: string
          format: uuid
          title: Privacy Job Id
      type: object
      required:
        - dataset_id
        - avatars_dataset_id
        - privacy_job_id
      title: ReportGeolocationPrivacyCreate
    ResetPasswordRequest:
      properties:
        email:
          type: string
          title: Email
        new_password:
          type: string
          title: New Password
        new_password_repeated:
          type: string
          title: New Password Repeated
        token:
          type: string
          format: uuid
          title: Token
      type: object
      required:
        - email
        - new_password
        - new_password_repeated
        - token
      title: ResetPasswordRequest
    SignalMetrics:
      properties:
        hellinger_mean:
          anyOf:
            - type: number
            - type: 'null'
          title: Hellinger Mean
        hellinger_std:
          anyOf:
            - type: number
            - type: 'null'
          title: Hellinger Std
        correlation_difference_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Correlation Difference Ratio
        targets:
          $ref: '#/components/schemas/SignalMetricsTargets'
          default:
            hellinger_mean: < 0.1
            correlation_difference_ratio: < 10
      type: object
      required:
        - targets
      title: SignalMetrics
    SignalMetricsJobCreate:
      properties:
        parameters:
          $ref: '#/components/schemas/SignalMetricsParameters'
      type: object
      required:
        - parameters
      title: SignalMetricsJobCreate
    SignalMetricsParameters:
      properties:
        original_id:
          type: string
          format: uuid
          title: Original Id
        avatarization_job_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Avatarization Job Id
        avatars_id:
          type: string
          format: uuid
          title: Avatars Id
      additionalProperties: true
      type: object
      required:
        - original_id
        - avatars_id
      title: SignalMetricsParameters
      description: Parameters to configure a SignalMetricsJob.
    SignalMetricsPerDataset:
      properties:
        hellinger_mean:
          anyOf:
            - type: number
            - type: 'null'
          title: Hellinger Mean
        hellinger_std:
          anyOf:
            - type: number
            - type: 'null'
          title: Hellinger Std
        correlation_difference_ratio:
          anyOf:
            - type: number
            - type: 'null'
          title: Correlation Difference Ratio
        targets:
          $ref: '#/components/schemas/SignalMetricsTargets'
          default:
            hellinger_mean: < 0.1
            correlation_difference_ratio: < 10
        original_id:
          type: string
          format: uuid
          title: Original Id
        avatars_id:
          type: string
          format: uuid
          title: Avatars Id
      type: object
      required:
        - targets
      title: SignalMetricsPerDataset
    SignalMetricsTargets:
      properties:
        hellinger_mean:
          type: string
          title: Hellinger Mean
        correlation_difference_ratio:
          type: string
          title: Correlation Difference Ratio
      type: object
      required:
        - hellinger_mean
        - correlation_difference_ratio
      title: SignalMetricsTargets
    SignalMetricsTimeSeriesParameters:
      properties:
        dataset_id:
          type: string
          format: uuid
          title: Dataset Id
        avatar_dataset_id:
          type: string
          format: uuid
          title: Avatar Dataset Id
      type: object
      required:
        - dataset_id
        - avatar_dataset_id
      title: SignalMetricsTimeSeriesParameters
    SignalMetricsWithTimeSeriesJobCreate:
      properties:
        parameters:
          $ref: '#/components/schemas/SignalMetricsWithTimeSeriesParameters'
      type: object
      required:
        - parameters
      title: SignalMetricsWithTimeSeriesJobCreate
    SignalMetricsWithTimeSeriesParameters:
      properties:
        vanilla_original_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Vanilla Original Id
          description: Identifier of the original vanilla dataset.
        vanilla_avatars_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Vanilla Avatars Id
          description: Identifier of the avatar vanilla dataset.
        time_series:
          items:
            $ref: '#/components/schemas/SignalMetricsTimeSeriesParameters'
          type: array
          title: Time Series
          description: >-
            Privacy metrics parameters of the time series. Each time series can
            have a different set of parameters.
        seed:
          anyOf:
            - type: integer
            - type: 'null'
          title: Seed
          description: Seed used to generate the random state.
      additionalProperties: true
      type: object
      required:
        - vanilla_original_id
        - vanilla_avatars_id
        - time_series
      title: SignalMetricsWithTimeSeriesParameters
    SignalPosition:
      type: string
      enum:
        - start
        - middle
        - end
      title: SignalPosition
      description: Available known signal positions for geolocation signal-based metrics.
    TableLink:
      properties:
        parent_table:
          $ref: '#/components/schemas/TableReference'
          description: Reference to the parent table.
        child_table:
          $ref: '#/components/schemas/TableReference'
          description: Reference to the child table.
        parent_link_key:
          type: string
          title: Parent Link Key
          description: >-
            Variable to be used for linking with the child table. The link_key
            specified here must contain unique values only. It is most often the
                    primary key. It needs to have the is_identifier property set to True when creating
                    the dataset.
        child_link_key:
          type: string
          title: Child Link Key
          description: >-
            Variable to be used for linking with the parent table. It is most
            often a foreign key. It needs to have the property is_identifier set
            to True
                    when creating the dataset.
        link_method:
          $ref: '#/components/schemas/LinkMethod'
          description: Assignment method.
          default: linear_sum_assignment
      type: object
      required:
        - parent_table
        - child_table
        - parent_link_key
        - child_link_key
      title: TableLink
    TableReference:
      properties:
        dataset_id:
          type: string
          format: uuid
          title: Dataset Id
        is_individual_level:
          type: boolean
          title: Is Individual Level
          description: >-
            Whether the table contains rows at the individual level. Individual
            level means that each row contains information about a distinct
            physical person.
      type: object
      required:
        - dataset_id
        - is_individual_level
      title: TableReference
    TimeSeriesSignalMetricsPerDataset:
      properties:
        pointwise_hellinger_mean:
          type: number
          title: Pointwise Hellinger Mean
        pointwise_hellinger_std:
          type: number
          title: Pointwise Hellinger Std
        density_hellinger_mean:
          type: number
          title: Density Hellinger Mean
        density_hellinger_std:
          type: number
          title: Density Hellinger Std
        multivariate_hellinger_distance_mean:
          anyOf:
            - type: number
            - type: 'null'
          title: Multivariate Hellinger Distance Mean
        multivariate_hellinger_distance_std:
          anyOf:
            - type: number
            - type: 'null'
          title: Multivariate Hellinger Distance Std
        multivariate_hellinger_distance_dict:
          anyOf:
            - additionalProperties:
                type: number
              type: object
            - type: 'null'
          title: Multivariate Hellinger Distance Dict
        meta_metric:
          anyOf:
            - type: number
            - type: 'null'
          title: Meta Metric
        original_id:
          type: string
          format: uuid
          title: Original Id
        avatars_id:
          type: string
          format: uuid
          title: Avatars Id
      type: object
      required:
        - pointwise_hellinger_mean
        - pointwise_hellinger_std
        - density_hellinger_mean
        - density_hellinger_std
        - original_id
        - avatars_id
      title: TimeSeriesSignalMetricsPerDataset
    User:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        organization_id:
          type: string
          format: uuid
          title: Organization Id
        username:
          anyOf:
            - type: string
            - type: 'null'
          title: Username
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        role:
          $ref: '#/components/schemas/UserRole'
          default: user
      type: object
      required:
        - id
        - organization_id
      title: User
    UserRole:
      type: string
      enum:
        - admin
        - user
      title: UserRole
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    Login:
      properties:
        grant_type:
          anyOf:
            - type: string
              pattern: password
            - type: 'null'
          title: Grant Type
        username:
          type: string
          title: Username
        password:
          type: string
          title: Password
        scope:
          type: string
          title: Scope
          default: ''
        client_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Client Id
        client_secret:
          anyOf:
            - type: string
            - type: 'null'
          title: Client Secret
      type: object
      required:
        - username
        - password
      title: Login
    CreateDataset:
      properties:
        file:
          type: string
          format: binary
          title: File
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
      type: object
      required:
        - file
      title: CreateDataset
    PatchDataset:
      properties:
        columns:
          anyOf:
            - items:
                $ref: '#/components/schemas/ColumnDetail'
              type: array
            - type: 'null'
          title: Columns
      type: object
      required:
        - columns
      title: PatchDataset
    AdviceJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/JobKind'
        created_at:
          type: string
          format: date-time
          title: Created At
        status:
          $ref: '#/components/schemas/JobStatus'
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        traceback:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceback
        result:
          anyOf:
            - $ref: '#/components/schemas/Advice'
            - type: 'null'
        parameters:
          $ref: '#/components/schemas/AdviceParameters'
        current_progress:
          anyOf:
            - $ref: '#/components/schemas/JobProgress'
            - type: 'null'
      type: object
      required:
        - id
        - kind
        - created_at
        - status
        - parameters
      title: AdviceJob
    AvatarizationMultiTableJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/JobKind'
        created_at:
          type: string
          format: date-time
          title: Created At
        status:
          $ref: '#/components/schemas/JobStatus'
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        traceback:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceback
        result:
          anyOf:
            - $ref: '#/components/schemas/AvatarizationMultiTableResult'
            - type: 'null'
        parameters:
          $ref: '#/components/schemas/AvatarizationMultiTableParameters'
        current_progress:
          anyOf:
            - $ref: '#/components/schemas/JobProgress'
            - type: 'null'
      type: object
      required:
        - id
        - kind
        - created_at
        - status
        - parameters
      title: AvatarizationMultiTableJob
    AvatarizationJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/JobKind'
        created_at:
          type: string
          format: date-time
          title: Created At
        status:
          $ref: '#/components/schemas/JobStatus'
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        traceback:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceback
        result:
          anyOf:
            - $ref: '#/components/schemas/AvatarizationResult'
            - type: 'null'
        parameters:
          $ref: '#/components/schemas/AvatarizationParameters'
        current_progress:
          anyOf:
            - $ref: '#/components/schemas/JobProgress'
            - type: 'null'
      type: object
      required:
        - id
        - kind
        - created_at
        - status
        - parameters
      title: AvatarizationJob
    AvatarizationWithTimeSeriesJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/JobKind'
        created_at:
          type: string
          format: date-time
          title: Created At
        status:
          $ref: '#/components/schemas/JobStatus'
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        traceback:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceback
        result:
          anyOf:
            - $ref: '#/components/schemas/AvatarizationWithTimeSeriesResult'
            - type: 'null'
        parameters:
          $ref: '#/components/schemas/AvatarizationWithTimeSeriesParameters'
        current_progress:
          anyOf:
            - $ref: '#/components/schemas/JobProgress'
            - type: 'null'
      type: object
      required:
        - id
        - kind
        - created_at
        - status
        - parameters
      title: AvatarizationWithTimeSeriesJob
    GenericJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/JobKind'
        created_at:
          type: string
          format: date-time
          title: Created At
        status:
          $ref: '#/components/schemas/JobStatus'
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        traceback:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceback
        result:
          anyOf:
            - $ref: '#/components/schemas/GenericResult'
            - type: 'null'
        parameters:
          $ref: '#/components/schemas/GenericParameters'
        current_progress:
          anyOf:
            - $ref: '#/components/schemas/JobProgress'
            - type: 'null'
      type: object
      required:
        - id
        - kind
        - created_at
        - status
        - parameters
      title: GenericJob
    PrivacyMetricsGeolocationJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/JobKind'
        created_at:
          type: string
          format: date-time
          title: Created At
        status:
          $ref: '#/components/schemas/JobStatus'
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        traceback:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceback
        result:
          anyOf:
            - $ref: '#/components/schemas/PrivacyMetricsGeolocationResult'
            - type: 'null'
        parameters:
          $ref: '#/components/schemas/PrivacyMetricsGeolocationParameters'
        current_progress:
          anyOf:
            - $ref: '#/components/schemas/JobProgress'
            - type: 'null'
      type: object
      required:
        - id
        - kind
        - created_at
        - status
        - parameters
      title: PrivacyMetricsGeolocationJob
    PrivacyMetricsMultiTableJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/JobKind'
        created_at:
          type: string
          format: date-time
          title: Created At
        status:
          $ref: '#/components/schemas/JobStatus'
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        traceback:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceback
        result:
          anyOf:
            - $ref: '#/components/schemas/MetaPrivacyMetrics'
            - type: 'null'
        parameters:
          $ref: '#/components/schemas/PrivacyMetricsMultiTableParameters'
        current_progress:
          anyOf:
            - $ref: '#/components/schemas/JobProgress'
            - type: 'null'
      type: object
      required:
        - id
        - kind
        - created_at
        - status
        - parameters
      title: PrivacyMetricsMultiTableJob
    PrivacyMetricsJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/JobKind'
        created_at:
          type: string
          format: date-time
          title: Created At
        status:
          $ref: '#/components/schemas/JobStatus'
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        traceback:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceback
        result:
          anyOf:
            - $ref: '#/components/schemas/PrivacyMetrics'
            - type: 'null'
        parameters:
          $ref: '#/components/schemas/PrivacyMetricsParameters'
        current_progress:
          anyOf:
            - $ref: '#/components/schemas/JobProgress'
            - type: 'null'
      type: object
      required:
        - id
        - kind
        - created_at
        - status
        - parameters
      title: PrivacyMetricsJob
    PrivacyMetricsWithTimeSeriesJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/JobKind'
        created_at:
          type: string
          format: date-time
          title: Created At
        status:
          $ref: '#/components/schemas/JobStatus'
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        traceback:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceback
        result:
          anyOf:
            - $ref: '#/components/schemas/MetaPrivacyMetrics'
            - type: 'null'
        parameters:
          $ref: '#/components/schemas/PrivacyMetricsWithTimeSeriesParameters'
        current_progress:
          anyOf:
            - $ref: '#/components/schemas/JobProgress'
            - type: 'null'
      type: object
      required:
        - id
        - kind
        - created_at
        - status
        - parameters
      title: PrivacyMetricsWithTimeSeriesJob
    SignalMetricsJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/JobKind'
        created_at:
          type: string
          format: date-time
          title: Created At
        status:
          $ref: '#/components/schemas/JobStatus'
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        traceback:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceback
        result:
          anyOf:
            - $ref: '#/components/schemas/SignalMetrics'
            - type: 'null'
        parameters:
          $ref: '#/components/schemas/SignalMetricsParameters'
        current_progress:
          anyOf:
            - $ref: '#/components/schemas/JobProgress'
            - type: 'null'
      type: object
      required:
        - id
        - kind
        - created_at
        - status
        - parameters
      title: SignalMetricsJob
    SignalMetricsWithTimeSeriesJob:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/JobKind'
        created_at:
          type: string
          format: date-time
          title: Created At
        status:
          $ref: '#/components/schemas/JobStatus'
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        traceback:
          anyOf:
            - type: string
            - type: 'null'
          title: Traceback
        result:
          anyOf:
            - $ref: '#/components/schemas/MetaSignalMetrics'
            - type: 'null'
        parameters:
          $ref: '#/components/schemas/SignalMetricsWithTimeSeriesParameters'
        current_progress:
          anyOf:
            - $ref: '#/components/schemas/JobProgress'
            - type: 'null'
      type: object
      required:
        - id
        - kind
        - created_at
        - status
        - parameters
      title: SignalMetricsWithTimeSeriesJob
  securitySchemes:
    OAuth2PasswordBearer:
      type: oauth2
      flows:
        password:
          scopes: {}
          tokenUrl: login
tags:
  - name: jobs
    description: Start and retrieve different kinds of jobs
  - name: datasets
    description: Create, modify and configure datasets
  - name: compatibility
    description: Verify compatibility between client and server
  - name: health
    description: Verify health of the server and it's components
  - name: auth
    description: Handle login and authentication
  - name: metrics
    description: Retrieve metrics about the anonymization
  - name: reports
    description: Create and retrieve anonymization reports
  - name: stats
    description: Retrieve statistics about the resource usage of the server
  - name: users
    description: Create, modify and configure users
