components:
  schemas:
    Affiliation:
      description: Affiliation object.
      properties:
        email:
          description: Email address of user.
          type: string
        first_name:
          description: First name of user.
          type: string
        id:
          description: Unique integer identifying a affiliation.
          type: integer
        last_name:
          description: Last name of user.
          type: string
        organization_id:
          description: Unique integer identifying an organization.
          minimum: 1
          type: integer
        permission:
          description: User permission level for the organization.
          enum:
            - Member
            - Admin
          type: string
        user_id:
          description: Unique integer identifying a user.
          minimum: 1
          type: integer
        username:
          description: Username for the membership.
          type: string
      type: object
    AffiliationSpec:
      properties:
        permission:
          description: User permission level for the organization.
          enum:
            - Member
            - Admin
          type: string
        user:
          description: Unique integer identifying a user.
          minimum: 1
          type: integer
      type: object
    AffiliationUpdate:
      properties:
        permission:
          description: User permission level for the organization.
          enum:
            - Member
            - Admin
          type: string
      type: object
    Algorithm:
      properties:
        categories:
          description: List of categories the algorithm workflow belongs to
          items:
            type: string
          type: array
        cluster:
          description: Unique integer identifying the job cluster.
          nullable: true
          type: integer
        description:
          description: Description of the algorithm.
          type: string
        files_per_job:
          description: Number of media files to be submitted to each workflow.
          type: integer
        id:
          description: Unique integer identifying the registered algorithm.
          type: integer
        manifest:
          description: Server URL to argo manifest file (.yaml)
          type: string
        name:
          description: Unique name of the algorithm workflow.
          type: string
        parameters:
          description: List of algorithm workflow parameters
          items:
            $ref: '#/components/schemas/AlgorithmParameter'
            x-scope:
              - ''
              - '#/components/schemas/Algorithm'
          type: array
        project:
          description: >-
            Unique integer identifying the project associated with the
            algorithm.
          type: integer
        user:
          description: Unique integer identifying the user registering the algorithm.
          type: integer
      type: object
    AlgorithmManifest:
      properties:
        url:
          description: Name of algorithm manifest (.yaml) file
          type: string
      type: object
    AlgorithmManifestSpec:
      description: Algorithm manifest save spec.
      properties:
        name:
          description: Name of manifest (.yaml) file
          type: string
        upload_url:
          description: URL of the uploaded file
          type: string
      type: object
    AlgorithmParameter:
      properties:
        name:
          description: Name of algorithm parameter
          type: string
        value:
          description: Value of algorithm parameter
          oneOf:
            - type: number
            - type: string
      required:
        - name
        - value
      type: object
    AlgorithmSpec:
      description: Algorithm registration creation spec.
      properties:
        categories:
          description: List of categories the algorithm workflow belongs to
          items:
            type: string
          type: array
        cluster:
          description: Unique integer identifying the job cluster.
          nullable: true
          type: integer
        description:
          description: Description of the algorithm.
          type: string
        files_per_job:
          description: Number of media files to be submitted to each workflow.
          type: integer
        manifest:
          description: Server URL to argo manifest file (.yaml)
          type: string
        name:
          description: Unique name of the algorithm workflow.
          type: string
        parameters:
          description: List of algorithm workflow parameters
          items:
            $ref: '#/components/schemas/AlgorithmParameter'
            x-scope:
              - ''
              - '#/components/schemas/Algorithm'
          type: array
        user:
          description: Unique integer identifying the user registering the algorithm.
          type: integer
      required:
        - name
        - user
        - manifest
        - files_per_job
      type: object
    AlphaRange:
      description: >-
        Three element array containing start attribute value, stop attribute
        value, and alpha level 0-255 for the localizations with attribute value
        falling in this range.
      items:
        type: number
      maxLength: 3
      minLength: 3
      type: array
    Announcement:
      description: Announcement object.
      properties:
        created_datetime:
          description: When the announcement was made.
          type: string
        eol_datetime:
          description: When the announcement will expire.
          type: string
        id:
          description: Unique integer identifying an announcement.
          type: integer
        markdown:
          description: Markdown formatted contents of the announcement.
          type: string
      type: object
    Applet:
      description: Applet spec.
      properties:
        categories:
          description: List of categories the applet belongs to
          items:
            type: string
          type: array
        description:
          description: Description of applet
          type: string
        html_file:
          description: Server URL to applet HTML file
          type: string
        id:
          description: Unique integer identifying the applet
          type: integer
        name:
          description: Name of applet
          type: string
        project:
          description: Unique integer identifying the project associated with the applet
          type: integer
      type: object
    AppletSpec:
      description: Register applet spec.
      properties:
        categories:
          description: List of categories the applet belongs to
          items:
            type: string
          type: array
        description:
          description: Description of applet
          type: string
        html_file:
          description: Server URL to applet HTML file
          type: string
        name:
          description: Name of applet
          type: string
      type: object
    ArchiveConfig:
      description: >-
        Settings for archival video encode and storage. If not set, the raw
        video will be stored in Tator.
      properties:
        encode:
          $ref: '#/components/schemas/EncodeConfig'
          x-scope:
            - ''
            - '#/components/schemas/MediaType'
            - '#/components/schemas/ArchiveConfig'
        name:
          description: >-
            Name of this archive config, used for retrieval in case of multiple
            archive configs.
          type: string
        s3_storage:
          $ref: '#/components/schemas/S3StorageConfig'
          x-scope:
            - ''
            - '#/components/schemas/MediaType'
            - '#/components/schemas/ArchiveConfig'
      required:
        - encode
      type: object
    AttributeCombinatorSpec:
      description: Used to combine multiple operations with a method
      properties:
        method:
          description: 'Method to combine '
          enum:
            - and
            - or
            - not
          type: string
        operations:
          description: Must be a AttributeOperationSpec!
          items:
            type: object
          type: array
      type: object
    AttributeFilterSpec:
      description: Object to query on attribute
      properties:
        attribute:
          description: |
            Name of the attribute or field to search on. 
                          
                          Given a user defined type (Localization, State, or Media) with defined attributes 
                          any attribute is searchable by its name. If a Localization has an attribute named 'Species' 
                          the name to use to search on that column is 'Species'. 

                          Additional built-in columns are available to search on dependent on the underlying metadata
                          type being searched. To search a built in field, a '$' character must be used in front of the column
                          name from main.models.
                          
                          The following table shows common columns and to which types they apply. Any internal column 
                          of the model may be searched in this manner.
                          
                          '$' must precede these names in search attempts. E.g. `created_by` is supplied as `$created_by`.
                          
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          type: string
        inverse:
          default: false
          description: Whether to apply NOT to result
          type: boolean
        operation:
          description: >-
            Name of the operation to apply. Not all operations apply to all
            attributes.
          enum:
            - eq
            - gt
            - gte
            - lt
            - lte
            - icontains
            - iendswidth
            - istartswith
            - isnull
            - date_eq
            - date_gte
            - date_gt
            - date_lt
            - date_lte
            - date_range
            - distance_lte
          type: string
        value:
          $ref: '#/components/schemas/AttributeValue'
          x-scope:
            - ''
            - '#/components/schemas/LeafIdQuery'
            - '#/components/schemas/AttributeOperationSpec'
            - '#/components/schemas/AttributeFilterSpec'
      type: object
    AttributeOperationSpec:
      anyOf:
        - $ref: '#/components/schemas/AttributeCombinatorSpec'
          x-scope:
            - ''
            - '#/components/schemas/LeafIdQuery'
            - '#/components/schemas/AttributeOperationSpec'
        - $ref: '#/components/schemas/AttributeFilterSpec'
          x-scope:
            - ''
            - '#/components/schemas/LeafIdQuery'
            - '#/components/schemas/AttributeOperationSpec'
      description: |-
        Operation(s) to apply to attribute(s) for a complex filter
          
          Basic:
          ``` 
          # Matches Freddie Mercury or Fred Thompson
          {'attribute': 'name', 'operation': 'icontains', 'value': 'Fred'}
          ```

          Combination
          ```
          # Matches "Freddie Mercury or "Fred Thompson" or "Robert Redford". SQL Looks like "name LIKE Fred% OR name LIKE Robert%"
          {'method':'OR', 'operations': [{'attribute': 'name', 'operation': 'icontains', 'value': 'Fred' },{'attribute': 'name', 'operation': 'icontains', 'value': 'Robert' }]}
          ```
           
          Nested Combination
          ```
          # Matches "Freddie Mercury or "Fred Thompson" or "Robert Redford". SQL Looks like "age >= 30 AND (name LIKE Fred% OR name LIKE Robert%)"
          {'method': 'AND', 'operations': [{'method':'OR', 'operations': [{'attribute': 'name', 'operation': 'icontains', 'value': 'Fred' },{'attribute': 'name', 'operation': 'icontains', 'value': 'Robert' }]}, {'attribute': 'age', 'operation': 'gte', 'value': 30 }]}
          ```
           
    AttributeType:
      description: The full definition of an attribute on an entity type.
      properties:
        autocomplete:
          $ref: '#/components/schemas/AutocompleteService'
          x-scope:
            - ''
            - '#/components/schemas/FileType'
            - '#/components/schemas/AttributeType'
        choices:
          description: Array of possible values; required for enum dtype.
          items:
            type: string
          type: array
        default:
          $ref: '#/components/schemas/AttributeValue'
          x-scope:
            - ''
            - '#/components/schemas/FileType'
            - '#/components/schemas/AttributeType'
        description:
          default: ''
          description: Description of the attribute.
          type: string
        dtype:
          description: Data type of the attribute.
          enum:
            - bool
            - int
            - float
            - enum
            - string
            - datetime
            - geopos
            - float_array
          type: string
        labels:
          description: Array of labels for enum dtype.
          items:
            type: string
          type: array
        maximum:
          description: Upper bound for int or float dtype.
          type: number
        minimum:
          description: Lower bound for int or float dtype.
          type: number
        name:
          description: >-
            Name of the attribute. The first character must not be '$', which is
            a reserved character for system usage.
          type: string
        order:
          default: 0
          description: >-
            Integer specifying relative order this attribute is displayed in the
            UI. Negative values are hidden by default.
          type: integer
        required:
          default: false
          description: True if this attribute is required for POST requests.
          type: boolean
        size:
          description: Number of elements for `float_array` dtype.
          maximum: 2000
          minimum: 1
          type: integer
        style:
          description: >-
            Available options:
            disabled|long_string|start_frame|end_frame|start_frame_check|end_frame_check  
            Multiple options can be chained together separated by white space.
            "disabled" will not allow the user to edit the attribute in the
            Tator GUI. Create a text area string if "long_string" is combined
            with "string" dtype. "start_frame" and "end_frame" used in
            conjunction with "attr_style_range" interpolation.
            "start_frame_check and "end_frame_check" are used in conjunction
            with "attr_style_range" interpolation. "range_set and
            in_video_check" is used in conjunction with "attr_style_range"
            interpolation. When associated with a bool, these checks will result
            in Tator GUI changes with the corresponding start_frame and
            end_frame attributes.
          type: string
        use_current:
          description: True to use current datetime as default for datetime dtype.
          type: boolean
        visible:
          description: True to make attribute visible.
          type: boolean
      type: object
    AttributeTypeDelete:
      description: Deletes an existing attribute from a type.
      properties:
        entity_type:
          description: The entity type containing the attribute to rename.
          type: string
        name:
          description: The attribute to delete.
          type: string
      type: object
    AttributeTypeSpec:
      description: Addition of an attribute to a type.
      properties:
        addition:
          $ref: '#/components/schemas/AttributeType'
          x-scope:
            - ''
            - '#/components/schemas/AttributeTypeSpec'
        entity_type:
          description: The entity type containing the attribute to rename.
          type: string
      type: object
    AttributeTypeUpdate:
      description: Renames an attribute of a type.
      properties:
        attribute_type_update:
          properties:
            autocomplete:
              $ref: '#/components/schemas/AutocompleteService'
              x-scope:
                - ''
                - '#/components/schemas/AttributeTypeUpdate'
            choices:
              description: Array of possible values; required for enum dtype.
              items:
                type: string
              type: array
            default:
              $ref: '#/components/schemas/AttributeValue'
              x-scope:
                - ''
                - '#/components/schemas/AttributeTypeUpdate'
            description:
              description: Description of the attribute.
              type: string
            dtype:
              description: Data type of the attribute.
              enum:
                - bool
                - int
                - float
                - enum
                - string
                - datetime
                - geopos
                - float_array
              type: string
            labels:
              description: Array of labels for enum dtype.
              items:
                type: string
              type: array
            maximum:
              description: Upper bound for int or float dtype.
              type: number
            minimum:
              description: Lower bound for int or float dtype.
              type: number
            name:
              description: >-
                Name of the attribute. The first character must not be '$',
                which is a reserved character for system usage.
              type: string
            order:
              description: >-
                Integer specifying relative order this attribute is displayed in
                the UI. Negative values are hidden by default.
              type: integer
            required:
              description: True if this attribute is required for POST requests.
              type: boolean
            size:
              description: Number of elements for `float_array` dtype.
              maximum: 2000
              minimum: 1
              type: integer
            style:
              description: >-
                Available options:
                disabled|long_string|start_frame|end_frame|start_frame_check|end_frame_check  
                Multiple options can be chained together separated by white
                space. "disabled" will not allow the user to edit the attribute
                in the Tator GUI. Create a text area string if "long_string" is
                combined with "string" dtype. "start_frame" and "end_frame" used
                in conjunction with "attr_style_range" interpolation.
                "start_frame_check and "end_frame_check" are used in conjunction
                with "attr_style_range" interpolation. "range_set and
                in_video_check" is used in conjunction with "attr_style_range"
                interpolation. When associated with a bool, these checks will
                result in Tator GUI changes with the corresponding start_frame
                and end_frame attributes.
              type: string
            use_current:
              description: True to use current datetime as default for datetime dtype.
              type: boolean
            visible:
              description: True to make attribute visible.
              type: boolean
          type: object
        current_name:
          description: The attribute to rename.
          type: string
        entity_type:
          description: The entity type containing the attribute to rename.
          type: string
      required:
        - entity_type
        - current_name
        - attribute_type_update
      type: object
    AttributeValue:
      description: Boolean, integer, float, string, datetime, [lon, lat], float array.
      nullable: true
      oneOf:
        - type: boolean
        - type: number
        - type: string
        - items:
            type: number
          minItems: 1
          type: array
        - items:
            type: string
          minItems: 1
          type: array
    AudioDefinition:
      properties:
        bit_rate:
          description: Bit rate in bits per second
          type: integer
        codec:
          description: Human readable codec.
          type: string
        codec_description:
          description: Description other than codec.
          type: string
        codec_mime:
          description: >-
            Example mime: "video/mp4; codecs="avc1.64001e"". Only relevant for
            streaming files, will assume example above if not present.
          type: string
        host:
          description: >-
            If supplied will use this instead of currently connected host, e.g.
            https://example.com
          type: string
        http_auth:
          description: >-
            If specified will be used for HTTP authorization in request for
            media, i.e. "bearer TOKEN".
          type: string
        path:
          description: Relative URL to the file.
          type: string
        size:
          description: File size in bytes.
          type: integer
      required:
        - path
        - codec
      type: object
    AutocompleteService:
      nullable: true
      properties:
        match_any:
          default: false
          description: >-
            If true, autocomplete will find leaves with any part of name
            matching the query. Otherwise only leaf names that start with the
            query are returned.
          type: boolean
        minLevel:
          description: >-
            If using WoRMS, set this to the minimum returnable taxonomic
            levelSee
            https://www.marinespecies.org/rest/AphiaTaxonRanksByID/-1?AphiaID=2
            for the levels, Note: 220 is species
          type: integer
        mode:
          default: tator
          description: >-
            Change flavor of autocomplete to use built-in WoRMs support. For
            information on WoRMs see https://www.marinespecies.org/rest/
          enum:
            - tator
            - worms
          type: string
        serviceUrl:
          description: URL of the autocomplete service.
          type: string
        useCommon:
          description: >-
            If using WoRMS, if set to true, use common names (vernacular in
            their API)
          type: boolean
      type: object
    AuxiliaryFileDefinition:
      properties:
        host:
          description: >-
            If supplied will use this instead of currently connected host, e.g.
            https://example.com
          type: string
        http_auth:
          description: >-
            If specified will be used for HTTP authorization in request for
            media, i.e. "bearer TOKEN".
          type: string
        mime:
          description: 'Example mime: "text/csv".'
          type: string
        name:
          description: Name of the file.
          type: string
        path:
          description: Relative URL to the file.
          type: string
        size:
          description: File size in bytes.
          type: integer
      required:
        - path
      type: object
    BadRequestResponse:
      properties:
        details:
          description: Detailed error message for bad request.
          type: string
        message:
          description: Error message for bad request.
          type: string
      type: object
    Bookmark:
      description: Bookmark object.
      properties:
        id:
          description: Unique integer identifying a bookmark.
          type: integer
        name:
          description: Name of the bookmark.
          type: string
        project:
          description: Unique integer identifying a project.
          type: integer
        uri:
          description: URI to the saved link.
          type: string
        user:
          description: Unique integer identifying a user.
          minimum: 1
          type: integer
      type: object
    BookmarkSpec:
      properties:
        name:
          description: Name of the bookmark.
          type: string
        uri:
          description: URI to the saved link.
          type: string
      type: object
    BookmarkUpdate:
      properties:
        name:
          description: Name of the bookmark.
          type: string
        uri:
          description: URI to the saved link.
          type: string
      type: object
    Bucket:
      description: Bucket object.
      properties:
        archive_sc:
          description: Storage class in which archived objects live.
          enum:
            - STANDARD
            - DEEP_ARCHIVE
            - COLDLINE
          type: string
        endpoint_url:
          description: Endpoint URL for bucket.
          type: string
        external_host:
          description: The proxy host for presigned urls.
          type: string
        id:
          description: Unique integer identifying a bucket.
          type: integer
        live_sc:
          description: Storage class in which live objects live.
          enum:
            - STANDARD
          type: string
        name:
          description: Bucket name.
          type: string
        organization:
          description: Unique integer identifying organization that owns this bucket.
          type: integer
        store_type:
          description: Type of object store on which the bucket is hosted.
          enum:
            - AWS
            - MINIO
            - GCP
            - OCI
          type: string
      type: object
    BucketGCPConfig:
      properties:
        auth_provider_x509_cert_url:
          description: Provider cert url.
          type: string
        auth_uri:
          description: Authorization URI.
          type: string
        client_email:
          description: Email address associated with the service account.
          type: string
        client_id:
          description: ID of the client account.
          type: string
        client_x509_cert_url:
          description: Client cert url.
          type: string
        private_key:
          description: Account access key.
          type: string
        private_key_id:
          description: Account secret key.
          type: string
        project_id:
          description: GCP project id.
          type: string
        token_uri:
          description: Token URI.
          type: string
        type:
          description: Type of account, should be `service_account`.
          type: string
      required:
        - type
        - project_id
        - private_key_id
        - private_key
        - client_email
        - client_id
        - auth_uri
        - token_uri
        - auth_provider_x509_cert_url
        - client_x509_cert_url
      type: object
    BucketOCIConfig:
      properties:
        boto3_config:
          $ref: '#/components/schemas/BucketS3Config'
          x-scope:
            - ''
            - '#/components/schemas/BucketSpec'
            - '#/components/schemas/BucketOCIConfig'
        native_config:
          $ref: '#/components/schemas/BucketOCINativeConfig'
          x-scope:
            - ''
            - '#/components/schemas/BucketSpec'
            - '#/components/schemas/BucketOCIConfig'
      required:
        - boto3_config
        - native_config
      type: object
    BucketOCINativeConfig:
      properties:
        fingerprint:
          description: Public key fingerprint.
          type: string
        key_content:
          description: Private key content.
          type: string
        region:
          description: OCI region.
          type: string
        tenancy:
          description: Tenancy OCID.
          type: string
        user:
          description: User OCID.
          type: string
      required:
        - user
        - key_content
        - fingerprint
        - tenancy
        - region
      type: object
    BucketS3Config:
      properties:
        aws_access_key_id:
          description: Account access key.
          type: string
        aws_secret_access_key:
          description: Account secret key.
          type: string
        endpoint_url:
          description: Endpoint URL for bucket.
          type: string
        region_name:
          description: Bucket region.
          type: string
      required:
        - endpoint_url
        - region_name
        - aws_access_key_id
        - aws_secret_access_key
      type: object
    BucketSpec:
      properties:
        archive_sc:
          description: Storage class in which archived objects live.
          enum:
            - STANDARD
            - DEEP_ARCHIVE
            - COLDLINE
          type: string
        config:
          description: JSON string containing cloud storage credentials.
          oneOf:
            - $ref: '#/components/schemas/BucketGCPConfig'
              x-scope:
                - ''
                - '#/components/schemas/BucketSpec'
            - $ref: '#/components/schemas/BucketOCIConfig'
              x-scope:
                - ''
                - '#/components/schemas/BucketSpec'
            - $ref: '#/components/schemas/BucketS3Config'
              x-scope:
                - ''
                - '#/components/schemas/BucketSpec'
        external_host:
          description: The proxy host for presigned urls.
          type: string
        live_sc:
          description: Storage class in which live objects live.
          enum:
            - STANDARD
          type: string
        name:
          description: Bucket name.
          type: string
        store_type:
          description: Type of object store on which the bucket is hosted.
          enum:
            - AWS
            - MINIO
            - GCP
            - OCI
          type: string
      required:
        - name
        - store_type
        - config
      type: object
    BucketUpdate:
      properties:
        archive_sc:
          description: Storage class in which archived objects live.
          enum:
            - STANDARD
            - DEEP_ARCHIVE
            - COLDLINE
          type: string
        config:
          description: JSON string containing cloud storage credentials.
          oneOf:
            - $ref: '#/components/schemas/BucketGCPConfig'
              x-scope:
                - ''
                - '#/components/schemas/BucketSpec'
            - $ref: '#/components/schemas/BucketOCIConfig'
              x-scope:
                - ''
                - '#/components/schemas/BucketSpec'
            - $ref: '#/components/schemas/BucketS3Config'
              x-scope:
                - ''
                - '#/components/schemas/BucketSpec'
        external_host:
          description: The proxy host for presigned urls.
          type: string
        live_sc:
          description: Storage class in which live objects live.
          enum:
            - STANDARD
          type: string
        name:
          description: Bucket name.
          type: string
        store_type:
          description: Type of object store on which the bucket is hosted.
          enum:
            - AWS
            - MINIO
            - GCP
            - OCI
          type: string
      type: object
    ChangeLog:
      properties:
        description_of_change:
          description: The old and new values for the changed object
          properties:
            new:
              description: The new values for the changed object
              items:
                properties:
                  name:
                    description: The name of the changed property
                    type: string
                  value:
                    $ref: '#/components/schemas/AttributeValue'
                    x-scope:
                      - ''
                      - '#/components/schemas/ChangeLog'
                type: object
              type: array
            old:
              description: The old values for the changed object
              items:
                properties:
                  name:
                    description: The name of the changed property
                    type: string
                  value:
                    $ref: '#/components/schemas/AttributeValue'
                    x-scope:
                      - ''
                      - '#/components/schemas/ChangeLog'
                type: object
              type: array
          type: object
        id:
          description: Unique integer identifying this change log.
          type: integer
        modified_datetime:
          description: Datetime this change occurred.
          format: date-time
          type: string
        project:
          description: Unique integer identifying project of this change log.
          type: integer
        user:
          description: >-
            Unique integer identifying the user whose changes created this
            change log.
          type: integer
      type: object
    CloneMediaSpec:
      properties:
        dest_project:
          description: Unique integer identifying destination project.
          type: integer
        dest_section:
          description: Destination media section name.
          nullable: true
          type: string
        dest_type:
          description: >-
            Unique integer identifying destination media type. Use -1 to
            automatically select the media type if only one media type exists in
            the destination project.
          minimum: -1
          type: integer
      required:
        - dest_project
        - dest_type
      type: object
    Color:
      description: RGB array, RGBA array, or hex string.
      oneOf:
        - $ref: '#/components/schemas/RgbColor'
          x-scope:
            - ''
            - '#/components/schemas/LocalizationType'
            - '#/components/schemas/ColorMap'
            - '#/components/schemas/Color'
        - $ref: '#/components/schemas/RgbaColor'
          x-scope:
            - ''
            - '#/components/schemas/LocalizationType'
            - '#/components/schemas/ColorMap'
            - '#/components/schemas/Color'
        - $ref: '#/components/schemas/HexColor'
          x-scope:
            - ''
            - '#/components/schemas/LocalizationType'
            - '#/components/schemas/ColorMap'
            - '#/components/schemas/Color'
    ColorMap:
      description: >-
        Maps an attribute value or version to a color/alpha. Use `key` and `map`
        (optionally `alpha_ranges`) to map an attribute value to colors. Use
        `version` to map version IDs to colors.
      nullable: true
      properties:
        alpha_ranges:
          additionalProperties:
            $ref: '#/components/schemas/AlphaRange'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationType'
              - '#/components/schemas/ColorMap'
          description: Map of attribute values to alpha level.
          type: object
        default:
          $ref: '#/components/schemas/Color'
          x-scope:
            - ''
            - '#/components/schemas/LocalizationType'
            - '#/components/schemas/ColorMap'
        default_fill:
          $ref: '#/components/schemas/Fill'
          x-scope:
            - ''
            - '#/components/schemas/LocalizationType'
            - '#/components/schemas/ColorMap'
        fill_map:
          additionalProperties:
            $ref: '#/components/schemas/Fill'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationType'
              - '#/components/schemas/ColorMap'
          description: Map of attribute values to fill types.
          type: object
        key:
          description: Attribute name.
          type: string
        map:
          additionalProperties:
            $ref: '#/components/schemas/Color'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationType'
              - '#/components/schemas/ColorMap'
          description: Map of attribute values to colors.
          type: object
        version:
          additionalProperties:
            $ref: '#/components/schemas/Color'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationType'
              - '#/components/schemas/ColorMap'
          description: Map of version IDs to colors.
          type: object
      type: object
    ConcatDefinition:
      description: Object containing information needed for a concating videos together
      properties:
        id:
          description: Primary key of video in append series
          type: integer
        timestampOffset:
          description: Insertion point for this video
          type: number
      type: object
    CreateListResponse:
      properties:
        id:
          description: List of unique integers identifying created objects.
          items:
            oneOf:
              - type: integer
              - type: string
          type: array
        message:
          description: Message indicating successful creation.
          type: string
        object:
          description: List of created objects.
          items:
            additionalProperties: true
            description: The created objects.
            type: object
          type: array
      type: object
    CreateResponse:
      properties:
        id:
          description: Unique integer identifying the created object.
          oneOf:
            - type: integer
            - type: string
        message:
          description: Message indicating successful creation.
          type: string
        object:
          additionalProperties: true
          description: The created objects.
          type: object
      type: object
    Credentials:
      properties:
        password:
          description: Account password.
          type: string
        refresh:
          description: If true, forces generation of new token.
          type: boolean
        username:
          description: Account username.
          type: string
      required:
        - username
        - password
      type: object
    DownloadInfo:
      properties:
        key:
          description: Object key.
          type: string
        url:
          description: URL for downloading object specified by key.
          type: string
      type: object
    DownloadInfoSpec:
      properties:
        keys:
          description: Array of object keys for download info retrieval.
          items:
            type: string
          type: array
      required:
        - keys
      type: object
    EmailAttachmentSpec:
      description: Email attachment spec.
      properties:
        key:
          description: S3 key of file
          type: string
        name:
          description: Name of file to use in attachment
          type: string
      required:
        - key
        - name
      type: object
    EmailSpec:
      description: >-
        Send an email message to members of the project using the Tator
        configured AWS email service
      properties:
        attachments:
          description: >-
            S3 object(s) to send as attachment(s). Ensure the attachment size
            does not exceed the corresponding email service limits
          items:
            $ref: '#/components/schemas/EmailAttachmentSpec'
            x-scope:
              - ''
              - '#/components/schemas/JobSpec'
          type: array
        recipients:
          description: >-
            Recipients of the email message. They must be members of this
            project. Entries are either in "Name <email@email.com>" or
            "email@email.com" format
          items:
            type: string
          type: array
        subject:
          description: Subject of the email message
          type: string
        text:
          description: Text body of the email message. HTML is currently not supported.
          type: string
      required:
        - recipients
        - subject
        - text
      type: object
    EncodeConfig:
      additionalProperties: true
      description: >-
        Settings for archival video encode. Any additional properties will be
        passed as command line arguments to ffmpeg. The copy setting does no
        encoding and simply copies the original file.
      properties:
        crf:
          default: 23
          description: Constant rate factor.
          maximum: 51
          minimum: 0
          type: integer
        movflags:
          default: ''
          description: Movflags to specify to packager
          type: string
        pixel_format:
          default: yuv420p
          description: >-
            Pixel format selection. Of note, compatibility varies significantly
            from codec to codec based on encoder support.SW Encoders: h264 when
            using libx264 supports:               yuv420p yuvj420p yuv422p
            yuvj422p yuv444p yuvj444p nv12 nv16 nv21 yuv420p10le yuv422p10le
            yuv444p10le nv20leh265 when using libsvt_hevc supports:          
            yuv420p yuvj420p yuv422p yuvj422p yuv444p yuvj444p nv12 nv16 nv21
            yuv420p10le yuv422p10le yuv444p10le nv20leav1 when using libsvtav1
            supports:              yuv420p          yuv422p         
            yuv444p                         yuv420p10le yuv422p10le
            yuv444p10leGenerally hardware encoders like QSV only support
            nv12(yuv420p) or p010le(yuv420p10le). Tator converts to the
            appropriate hardware format based on the specified pixel format.
          enum:
            - yuv420p
            - yuvj420p
            - yuv422p
            - yuvj422p
            - yuv444p
            - yuvj444p
            - yuv420p10le
            - yuv422p10le
            - yuv444p10le
          type: string
        preset:
          default: fast
          description: Preset for ffmpeg encoding.
          enum:
            - ultrafast
            - superfast
            - veryfast
            - faster
            - fast
            - medium
            - slow
            - slower
            - veryslow
          type: string
        tune:
          default: fastdecode
          description: Tune setting for ffmpeg.
          enum:
            - film
            - animation
            - grain
            - stillimage
            - fastdecode
            - zerolatency
            - psnr
            - ssim
          type: string
        vcodec:
          default: hevc
          description: Video codec.
          enum:
            - copy
            - h264
            - hevc
          type: string
      type: object
    Favorite:
      description: Favorite object.
      properties:
        entity_type_name:
          description: Name of entity type associated with the favorite
          enum:
            - Localization
            - State
          type: string
        id:
          description: Unique integer identifying a favorite.
          type: integer
        name:
          description: Name of the favorite.
          type: string
        page:
          default: 1
          description: Integer specifying page to display on. Should be 1-10.
          maximum: 10
          minimum: 1
          type: integer
        type:
          description: Unique integer identifying entity type of this entry.
          type: integer
        user:
          description: Unique integer identifying a user.
          minimum: 1
          type: integer
        values:
          additionalProperties: true
          description: Attribute name/value pairs.
          type: object
      type: object
    FavoriteSpec:
      properties:
        entity_type_name:
          description: Name of entity type associated with the favorite
          enum:
            - Localization
            - State
          type: string
        name:
          description: Name of the favorite.
          type: string
        page:
          default: 1
          description: Integer specifying page to display on. Should be 1-10.
          maximum: 10
          minimum: 1
          type: integer
        type:
          description: Unique integer identifying an entity type.
          minimum: 1
          type: integer
        values:
          additionalProperties: true
          description: Attribute name/value pairs.
          type: object
      type: object
    FavoriteUpdate:
      properties:
        entity_type_name:
          description: Name of entity type associated with the favorite
          enum:
            - Localization
            - State
          type: string
        name:
          description: Name of the favorite.
          type: string
      type: object
    FeedDefinition:
      properties:
        name:
          description: Name of the feed.
          type: string
        resolution:
          description: Resolution of the video in pixels (height, width).
          items:
            minimum: 1
            type: integer
          maxItems: 2
          minItems: 2
          type: array
      required:
        - name
        - resolution
      type: object
    File:
      description: Non-media file spec.
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/File'
          description: Object containing attribute values
          type: object
        created_by:
          description: User that created this file
          type: integer
        created_datetime:
          description: Datetime this file was created
          format: date-time
          type: string
        description:
          description: Description of file
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        id:
          description: Unique integer identifying the non-media file
          type: integer
        modified_by:
          description: User who last edited this file
          type: integer
        modified_datetime:
          description: Datetime this file was created
          format: date-time
          type: string
        name:
          description: Name of file
          type: string
        path:
          description: Relative URL to the file
          type: string
        project:
          description: Unique integer identifying the project associated with the file
          type: integer
        type:
          description: Unique integer identifying FileType of this File object.
          type: integer
      type: object
    FileSpec:
      description: Register non-media file spec
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/File'
          description: Object containing attribute values
          type: object
        description:
          description: Description of file
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        name:
          description: Name of file
          type: string
        type:
          description: Unique integer identifying FileType of this File object.
          type: integer
        user_elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
      type: object
    FileType:
      description: File type.
      properties:
        attribute_types:
          description: Attribute type definitions.
          items:
            $ref: '#/components/schemas/AttributeType'
            x-scope:
              - ''
              - '#/components/schemas/FileType'
          type: array
        description:
          default: ''
          description: Description of the file type.
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        id:
          description: Unique integer identifying a file type.
          type: integer
        name:
          description: Name of the file type.
          type: string
        project:
          description: Unique integer identifying project for this file type.
          type: integer
      type: object
    FileTypeSpec:
      properties:
        attribute_types:
          description: Attribute type definitions.
          items:
            $ref: '#/components/schemas/AttributeType'
            x-scope:
              - ''
              - '#/components/schemas/FileType'
          type: array
        description:
          default: ''
          description: Description of the file type.
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        name:
          description: Name of the file type.
          type: string
      type: object
    FileTypeUpdate:
      properties:
        description:
          default: ''
          description: Description of the file type.
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        name:
          description: Name of the file type.
          type: string
      type: object
    FileUpdate:
      description: Non-media file spec.
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/File'
          description: Object containing attribute values
          type: object
        description:
          description: Description of file
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        name:
          description: Name of file
          type: string
        null_attributes:
          description: Null a value in the attributes body
          items:
            minimum: 1
            type: string
          type: array
        path:
          description: Relative URL to the file
          type: string
        reset_attributes:
          description: Reset an attribute to the default value specified in the Type object
          items:
            minimum: 1
            type: string
          type: array
        type:
          description: Unique integer identifying FileType of this File object.
          type: integer
      type: object
    Fill:
      description: >-
        Maps an attribute value or version to a color/alpha. Use `key` and `map`
        (optionally `alpha_ranges`) to map an attribute value to colors. Use
        `version` to map version IDs to colors.
      properties:
        color:
          $ref: '#/components/schemas/Color'
          x-scope:
            - ''
            - '#/components/schemas/LocalizationType'
            - '#/components/schemas/ColorMap'
            - '#/components/schemas/Fill'
        style:
          description: Type of fill effect
          enum:
            - fill
            - blur
            - gray
          type: string
      type: object
    FloatArrayQuery:
      properties:
        center:
          description: Center of the query.
          items:
            type: number
          type: array
        metric:
          default: l2norm
          description: Distance metric from center of query.
          enum:
            - l2norm
            - ip
            - cosine
          type: string
        name:
          description: Name of the attribute.
          type: string
        order:
          default: asc
          description: Order in which results should be returned.
          enum:
            - asc
            - desc
          type: string
      required:
        - name
        - center
      type: object
    GenericFile:
      properties:
        name:
          description: Name of generic, non-media file
          type: string
        project:
          description: Unique integer identifying project to store the file in
          type: integer
        upload_url:
          description: URL of the uploaded file
          type: string
        url:
          description: Name of generic, non-media file
          type: string
      type: object
    GenericFileSpec:
      description: Generic file save spec.
      properties:
        name:
          description: Name of generic, non-media file
          type: string
        upload_url:
          description: URL of the uploaded file
          type: string
      type: object
    GetClonedMediaResponse:
      properties:
        ids:
          description: List of unique integers identifying cloned objects.
          items:
            type: integer
          type: array
        message:
          description: Message indicating return of cloned media list.
          type: string
      type: object
    HexColor:
      description: 'Hex color string, such as #00FF00.'
      maxLength: 7
      minLength: 7
      pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$
      type: string
    ImageDefinition:
      properties:
        host:
          description: >-
            If supplied will use this instead of currently connected host, e.g.
            https://example.com
          type: string
        http_auth:
          description: >-
            If specified will be used for HTTP authorization in request for
            media, i.e. "bearer TOKEN".
          type: string
        mime:
          description: 'Example mime: "image/jpg".'
          type: string
        path:
          description: Relative URL to the file.
          type: string
        resolution:
          description: Resolution of the video in pixels (height, width).
          items:
            minimum: 1
            type: integer
          maxItems: 2
          minItems: 2
          type: array
        size:
          description: File size in bytes.
          type: integer
      required:
        - path
        - resolution
      type: object
    Invitation:
      description: Invitation object.
      properties:
        created_by:
          description: Unique integer identifying a user.
          type: integer
        created_datetime:
          description: Datetime this invitation was created.
          format: date-time
          type: string
        created_username:
          description: Username of creator of the invitation.
          type: string
        email:
          description: Email address of invitee.
          type: string
        id:
          description: Unique integer identifying an invitation.
          type: integer
        organization:
          description: Unique integer identifying an organization.
          minimum: 1
          type: integer
        permission:
          description: User permission level for the organization.
          enum:
            - Member
            - Admin
          type: string
        registration_token:
          description: Registration token.
          type: string
        status:
          description: Status of the invitation.
          enum:
            - Pending
            - Expired
            - Accepted
          type: string
      type: object
    InvitationSpec:
      properties:
        email:
          description: Email address of invitee.
          type: string
        permission:
          description: User permission level for the organization.
          enum:
            - Member
            - Admin
          type: string
      required:
        - email
        - permission
      type: object
    InvitationUpdate:
      properties:
        permission:
          description: User permission level for the organization.
          enum:
            - Member
            - Admin
          type: string
        status:
          description: Status of the invitation.
          enum:
            - Accepted
          type: string
      type: object
    Job:
      properties:
        gid:
          description: Group ID of the job.
          type: string
        id:
          description: Unique identifier of the job generated by Argo.
          type: string
        nodes:
          items:
            $ref: '#/components/schemas/JobNode'
            x-scope:
              - ''
              - '#/components/schemas/Job'
          type: array
        project:
          description: Unique integer identifying a project.
          type: integer
        start_time:
          description: Start time of this job.
          format: date-time
          nullable: true
          type: string
        status:
          description: Status of this job.
          type: string
        stop_time:
          description: Stop time of this job.
          format: date-time
          nullable: true
          type: string
        uid:
          description: Unique ID of the job.
          type: string
        user:
          description: Unique integer identifying user who submitted the job.
          type: integer
      type: object
    JobCluster:
      properties:
        cert:
          description: Certificate for accessing the job cluster.
          type: string
        host:
          description: Hostname where the cluster can be accessed.
          type: string
        id:
          description: Unique integer identifying the job cluster.
          type: integer
        name:
          description: Unique name of the job cluster.
          type: string
        organization:
          description: >-
            Unique integer identifying the organization associated with the job
            cluster.
          type: integer
        port:
          description: Port where the cluster can be accessed.
          type: integer
        token:
          description: Token for accessing the job cluster.
          type: string
      type: object
    JobClusterSpec:
      description: Job cluster creation spec.
      properties:
        cert:
          description: Certificate for accessing the job cluster.
          type: string
        host:
          description: Hostname where the cluster can be accessed.
          type: string
        name:
          description: Unique name of the job cluster.
          type: string
        port:
          description: Port where the cluster can be accessed.
          type: integer
        token:
          description: Token for accessing the job cluster.
          type: string
      required:
        - name
        - host
        - port
        - token
        - cert
      type: object
    JobNode:
      description: Represents a step or node (for DAGs) in a job.
      properties:
        children:
          items:
            description: ID of child node.
            type: string
          type: array
        id:
          description: Unique identifier of the job node.
          type: string
        start_time:
          description: Start time of this node.
          format: date-time
          nullable: true
          type: string
        status:
          description: Status of this node.
          type: string
        stop_time:
          description: Stop time of this node.
          format: date-time
          nullable: true
          type: string
        task:
          description: Name of task performed by this node.
          type: string
      type: object
    JobSpec:
      properties:
        algorithm_name:
          description: Name of the algorithm to execute.
          type: string
        extra_params:
          description: Extra parameters to pass into the algorithm
          items:
            $ref: '#/components/schemas/AlgorithmParameter'
            x-scope:
              - ''
              - '#/components/schemas/JobSpec'
          type: array
        failure_email_spec:
          description: >-
            Send an email message to members of the project using the Tator
            configured AWS email service
          nullable: true
          properties:
            attachments:
              description: >-
                S3 object(s) to send as attachment(s). Ensure the attachment
                size does not exceed the corresponding email service limits
              items:
                $ref: '#/components/schemas/EmailAttachmentSpec'
                x-scope:
                  - ''
                  - '#/components/schemas/JobSpec'
              type: array
            recipients:
              description: >-
                Recipients of the email message. They must be members of this
                project. Entries are either in "Name <email@email.com>" or
                "email@email.com" format
              items:
                type: string
              type: array
            subject:
              description: Subject of the email message
              type: string
            text:
              description: Text body of the email message. HTML is currently not supported.
              type: string
          required:
            - recipients
            - subject
            - text
          type: object
        media_ids:
          description: List of media IDs.
          items:
            type: integer
          type: array
        success_email_spec:
          description: >-
            Send an email message to members of the project using the Tator
            configured AWS email service
          nullable: true
          properties:
            attachments:
              description: >-
                S3 object(s) to send as attachment(s). Ensure the attachment
                size does not exceed the corresponding email service limits
              items:
                $ref: '#/components/schemas/EmailAttachmentSpec'
                x-scope:
                  - ''
                  - '#/components/schemas/JobSpec'
              type: array
            recipients:
              description: >-
                Recipients of the email message. They must be members of this
                project. Entries are either in "Name <email@email.com>" or
                "email@email.com" format
              items:
                type: string
              type: array
            subject:
              description: Subject of the email message
              type: string
            text:
              description: Text body of the email message. HTML is currently not supported.
              type: string
          required:
            - recipients
            - subject
            - text
          type: object
      required:
        - algorithm_name
        - media_ids
      type: object
    Leaf:
      description: Leaf object.
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/Leaf'
          description: Object containing attribute values.
          type: object
        id:
          description: Unique integer identifying the leaf.
          type: integer
        name:
          description: Name of the leaf.
          type: string
        parent:
          description: ID to use as parent if there is one.
          nullable: true
          type: integer
        path:
          description: Full path to leaf in hierarchy.
          type: string
        project:
          description: Unique integer identifying a project.
          type: integer
        type:
          description: Unique integer identifying the entity type.
          type: integer
      type: object
    LeafBulkUpdate:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/LeafBulkUpdate'
          description: Attribute values to bulk update an entity list.
          type: object
        float_array:
          description: Searches on `float_array` attributes.
          items:
            $ref: '#/components/schemas/FloatArrayQuery'
            x-scope:
              - ''
              - '#/components/schemas/LeafIdQuery'
          type: array
        ids:
          description: Array of leaf IDs to retrieve.
          items:
            minimum: 1
            type: integer
          type: array
        null_attributes:
          description: Null a value in the attributes body
          items:
            minimum: 1
            type: string
          type: array
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/LeafIdQuery'
        reset_attributes:
          description: Reset an attribute to the default value specified in the Type object
          items:
            minimum: 1
            type: string
          type: array
      type: object
    LeafIdQuery:
      properties:
        float_array:
          description: Searches on `float_array` attributes.
          items:
            $ref: '#/components/schemas/FloatArrayQuery'
            x-scope:
              - ''
              - '#/components/schemas/LeafIdQuery'
          type: array
        ids:
          description: Array of leaf IDs to retrieve.
          items:
            minimum: 1
            type: integer
          type: array
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/LeafIdQuery'
      type: object
    LeafSpec:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/LeafSpec'
          description: Object containing attribute values.
          type: object
        name:
          description: Name of the leaf.
          type: string
        parent:
          description: ID to use as parent if there is one.
          nullable: true
          type: integer
        type:
          description: Unique integer identifying a leaf type.
          type: integer
      required:
        - name
        - type
      type: object
    LeafSuggestion:
      properties:
        data:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/LeafSuggestion'
          description: Auxiliary data associated with the leaf.
          type: object
        group:
          description: Group of the suggestion.
          type: string
        value:
          description: Name of the suggestion.
          type: string
      type: object
    LeafType:
      description: Leaf type.
      properties:
        attribute_types:
          description: Attribute type definitions.
          items:
            $ref: '#/components/schemas/AttributeType'
            x-scope:
              - ''
              - '#/components/schemas/LeafType'
          type: array
        description:
          default: ''
          description: Description of the leaf type.
          type: string
        dtype:
          description: Name of this data type, value is always "leaf".
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        id:
          description: Unique integer identifying a leaf type.
          type: integer
        name:
          description: Name of the leaf type.
          type: string
        project:
          description: Unique integer identifying project for this leaf type.
          type: integer
      type: object
    LeafTypeSpec:
      description: Leaf type spec.
      properties:
        attribute_types:
          description: Attribute type definitions.
          items:
            $ref: '#/components/schemas/AttributeType'
            x-scope:
              - ''
              - '#/components/schemas/LeafType'
          type: array
        description:
          default: ''
          description: Description of the leaf type.
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        name:
          description: Name of the leaf type.
          type: string
      type: object
    LeafTypeUpdate:
      description: Leaf type update.
      properties:
        description:
          description: Description of the leaf type.
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        name:
          description: Name of the leaf type.
          type: string
      type: object
    LeafUpdate:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/LeafUpdate'
          description: Attribute values to update.
          type: object
        name:
          description: Name of the leaf.
          type: string
        null_attributes:
          description: Null a value in the attributes body
          items:
            minimum: 1
            type: string
          type: array
        reset_attributes:
          description: Reset an attribute to the default value specified in the Type object
          items:
            minimum: 1
            type: string
          type: array
      type: object
    LiveDefinition:
      properties:
        feeds:
          items:
            $ref: '#/components/schemas/FeedDefinition'
            x-scope:
              - ''
              - '#/components/schemas/Media'
              - '#/components/schemas/MediaFiles'
              - '#/components/schemas/LiveDefinition'
          type: array
        url:
          description: URL to streaming server.
          type: string
      required:
        - url
        - feeds
      type: object
    LiveUpdateDefinition:
      properties:
        layout:
          description: 2-element array to define rxc layout
          items:
            type: integer
          type: array
        streams:
          items:
            $ref: '#/components/schemas/LiveDefinition'
            x-scope:
              - ''
              - '#/components/schemas/MediaUpdate'
              - '#/components/schemas/LiveUpdateDefinition'
          type: array
      required:
        - streams
        - layout
      type: object
    Localization:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/Localization'
          description: Object containing attribute values.
          type: object
        created_by:
          description: Unique integer identifying the user who created this localization.
          type: integer
        created_datetime:
          description: Datetime this localization was created.
          format: date-time
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        frame:
          description: Frame number of this localization if it is in a video.
          type: integer
        height:
          description: Normalized height of bounding box for `box` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
        id:
          description: Unique integer identifying this localization.
          type: integer
        media:
          description: Unique integer identifying media of this localization.
          type: integer
        modified_by:
          description: >-
            Unique integer identifying the user who last modified this
            localization.
          type: integer
        modified_datetime:
          description: Datetime this localization was last modified.
          format: date-time
          type: string
        parent:
          description: If a clone, the pk of the parent.
          nullable: true
          type: number
        points:
          description: List of normalized [x, y] pairs for `poly` localization types.
          items:
            items:
              maximum: 1
              minimum: 0
              type: number
            maxItems: 2
            minItems: 2
            type: array
          nullable: true
          type: array
        project:
          description: Unique integer identifying project of this localization.
          type: integer
        thumbnail_image:
          description: URL of thumbnail corresponding to this localization.
          type: string
        type:
          description: Unique integer identifying entity type of this localization.
          type: integer
        u:
          description: Horizontal vector component for `line` localization types.
          maximum: 1
          minimum: -1
          nullable: true
          type: number
        user:
          description: Unique integer identifying the user who created this localization.
          type: integer
        v:
          description: Vertical vector component for `line` localization types.
          maximum: 1
          minimum: -1
          nullable: true
          type: number
        variant_deleted:
          description: Unique integer identifying the user who created this localization.
          type: boolean
        version:
          description: Unique integer identifying a version.
          type: integer
        width:
          description: Normalized width of bounding box for `box` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
        x:
          description: >-
            Normalized horizontal position of left edge of bounding box for
            `box` localization types, start of line for `line` localization
            types, or position of dot for `dot` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
        'y':
          description: >-
            Normalized vertical position of top edge of bounding box for `box`
            localization types, start of line for `line` localization types, or
            position of dot for `dot` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
      type: object
    LocalizationBulkDelete:
      properties:
        float_array:
          description: Searches on `float_array` attributes.
          items:
            $ref: '#/components/schemas/FloatArrayQuery'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationIdQuery'
          type: array
        ids:
          description: Array of localization IDs to retrieve.
          items:
            minimum: 1
            type: integer
          type: array
        media_ids:
          description: >-
            Array of parent media IDs for which localizations should be
            retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        media_query:
          description: >-
            Query string used to filter media IDs. This can be used to avoid
            serialization and download of a media ID list.
          type: string
        null_attributes:
          description: Null a value in the attributes body
          items:
            minimum: 1
            type: string
          type: array
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/LocalizationIdQuery'
        prune:
          default: 0
          description: >-
            If set to 1 will purge the object from the database entirely. This
            removes any record, change-log, that this metadatum ever existed.
          maximum: 1
          minimum: 0
          type: integer
        reset_attributes:
          description: Reset an attribute to the default value specified in the Type object
          items:
            minimum: 1
            type: string
          type: array
        state_ids:
          description: >-
            Array of parent state IDs for which localizations should be
            retrieved.
          items:
            minimum: 1
            type: integer
          type: array
      type: object
    LocalizationBulkUpdate:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationBulkUpdate'
          description: Attribute values to bulk update an entity list.
          type: object
        float_array:
          description: Searches on `float_array` attributes.
          items:
            $ref: '#/components/schemas/FloatArrayQuery'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationIdQuery'
          type: array
        ids:
          description: Array of localization IDs to retrieve.
          items:
            minimum: 1
            type: integer
          type: array
        media_ids:
          description: >-
            Array of parent media IDs for which localizations should be
            retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        media_query:
          description: >-
            Query string used to filter media IDs. This can be used to avoid
            serialization and download of a media ID list.
          type: string
        new_elemental_id:
          description: The new elemental ID for these objects
          type: string
        new_version:
          description: Unique integer identifying a new version for these objects
          type: integer
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/LocalizationIdQuery'
        state_ids:
          description: >-
            Array of parent state IDs for which localizations should be
            retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        user_elemental_id:
          description: >-
            Unique ID of the original user who created this. If permissions
            allow, will change the creating user to the one referenced by this
            elemental_id
          type: string
      type: object
    LocalizationDelete:
      properties:
        prune:
          default: 0
          description: >-
            If set to 1 will purge the object from the database entirely. This
            removes any record, change-log, that this metadatum ever existed.
          maximum: 1
          minimum: 0
          type: integer
      type: object
    LocalizationIdQuery:
      properties:
        float_array:
          description: Searches on `float_array` attributes.
          items:
            $ref: '#/components/schemas/FloatArrayQuery'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationIdQuery'
          type: array
        ids:
          description: Array of localization IDs to retrieve.
          items:
            minimum: 1
            type: integer
          type: array
        media_ids:
          description: >-
            Array of parent media IDs for which localizations should be
            retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        media_query:
          description: >-
            Query string used to filter media IDs. This can be used to avoid
            serialization and download of a media ID list.
          type: string
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/LocalizationIdQuery'
        state_ids:
          description: >-
            Array of parent state IDs for which localizations should be
            retrieved.
          items:
            minimum: 1
            type: integer
          type: array
      type: object
    LocalizationSpec:
      description: >-
        Localization creation spec. Attribute key/values must be included in the
        base object.
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationSpec'
          description: Object containing attribute values.
          type: object
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        frame:
          description: Frame number of this localization if it is in a video.
          type: integer
        height:
          description: Normalized height of bounding box for `box` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
        media_id:
          description: Unique integer identifying a media.
          type: integer
        parent:
          description: If a clone, the pk of the parent.
          nullable: true
          type: number
        points:
          description: List of normalized [x, y] pairs for `poly` localization types.
          items:
            items:
              maximum: 1
              minimum: 0
              type: number
            maxItems: 2
            minItems: 2
            type: array
          nullable: true
          type: array
        type:
          description: Unique integer identifying a localization type.
          type: integer
        u:
          description: Horizontal vector component for `line` localization types.
          maximum: 1
          minimum: -1
          nullable: true
          type: number
        user_elemental_id:
          description: >-
            Unique ID of the original user who created this. If permissions
            allow, will change the creating user to the one referenced by this
            elemental_id
          type: string
        v:
          description: Vertical vector component for `line` localization types.
          maximum: 1
          minimum: -1
          nullable: true
          type: number
        version:
          description: Unique integer identifying the version.
          type: integer
        width:
          description: Normalized width of bounding box for `box` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
        x:
          description: >-
            Normalized horizontal position of left edge of bounding box for
            `box` localization types, start of line for `line` localization
            types, or position of dot for `dot` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
        'y':
          description: >-
            Normalized vertical position of top edge of bounding box for `box`
            localization types, start of line for `line` localization types, or
            position of dot for `dot` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
      required:
        - media_id
        - type
        - frame
      type: object
    LocalizationType:
      description: Localization type.
      properties:
        attribute_types:
          description: Attribute type definitions.
          items:
            $ref: '#/components/schemas/AttributeType'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationType'
          type: array
        color_map:
          $ref: '#/components/schemas/ColorMap'
          nullable: true
          x-scope:
            - ''
            - '#/components/schemas/LocalizationType'
        description:
          description: Description of the localization type.
          type: string
        drawable:
          default: true
          description: Whether this type can be drawn in the UI. Must also be visible.
          type: boolean
        dtype:
          description: Shape of this localization type.
          enum:
            - box
            - line
            - dot
            - poly
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        grouping_default:
          default: true
          description: Whether to group elements in the UI by default.
          type: boolean
        id:
          description: Unique integer identifying a localization type.
          type: integer
        line_width:
          description: Width of the line used to draw the localization.
          minimum: 1
          type: integer
        media:
          description: >-
            List of integers identifying media types that this localization type
            may apply to.
          items:
            minimum: 1
            type: integer
          type: array
        name:
          description: Name of the localization type.
          type: string
        project:
          description: Unique integer identifying project for this leaf type.
          type: integer
        visible:
          default: true
          description: Whether this type should be displayed in the UI.
          type: boolean
      type: object
    LocalizationTypeSpec:
      properties:
        attribute_types:
          description: Attribute type definitions.
          items:
            $ref: '#/components/schemas/AttributeType'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationType'
          type: array
        color_map:
          $ref: '#/components/schemas/ColorMap'
          nullable: true
          x-scope:
            - ''
            - '#/components/schemas/LocalizationType'
        description:
          description: Description of the localization type.
          type: string
        drawable:
          default: true
          description: Whether this type can be drawn in the UI. Must also be visible.
          type: boolean
        dtype:
          description: Shape of this localization type.
          enum:
            - box
            - line
            - dot
            - poly
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        grouping_default:
          default: true
          description: Whether to group elements in the UI by default.
          type: boolean
        line_width:
          description: Width of the line used to draw the localization.
          minimum: 1
          type: integer
        media_types:
          description: >-
            List of integers identifying media types that this localization type
            may apply to.
          items:
            minimum: 1
            type: integer
          minItems: 1
          type: array
        name:
          description: Name of the localization type.
          type: string
        visible:
          default: true
          description: Whether this type should be displayed in the UI.
          type: boolean
      required:
        - name
        - dtype
        - media_types
      type: object
    LocalizationTypeUpdate:
      description: Localization type update.
      properties:
        color_map:
          $ref: '#/components/schemas/ColorMap'
          nullable: true
          x-scope:
            - ''
            - '#/components/schemas/LocalizationType'
        description:
          description: Description of the localization type.
          type: string
        drawable:
          default: true
          description: Whether this type can be drawn in the UI. Must also be visible.
          type: boolean
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        grouping_default:
          default: true
          description: Whether to group elements in the UI by default.
          type: boolean
        line_width:
          description: Width of the line used to draw the localization.
          minimum: 1
          type: integer
        name:
          description: Name of the localization type.
          type: string
        visible:
          default: true
          description: Whether this type should be displayed in the UI.
          type: boolean
      type: object
    LocalizationUpdate:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/LocalizationUpdate'
          description: Object containing attribute values.
          type: object
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        frame:
          description: Frame number of this localization if it is in a video.
          type: integer
        height:
          description: Normalized height of bounding box for `box` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
        null_attributes:
          description: Null a value in the attributes body
          items:
            minimum: 1
            type: string
          type: array
        parent:
          description: If a clone, the pk of the parent.
          nullable: true
          type: number
        points:
          description: List of normalized [x, y] pairs for `poly` localization types.
          items:
            items:
              maximum: 1
              minimum: 0
              type: number
            maxItems: 2
            minItems: 2
            type: array
          nullable: true
          type: array
        reset_attributes:
          description: Reset an attribute to the default value specified in the Type object
          items:
            minimum: 1
            type: string
          type: array
        u:
          description: Horizontal vector component for `line` localization types.
          maximum: 1
          minimum: -1
          nullable: true
          type: number
        user_elemental_id:
          description: >-
            Unique ID of the original user who created this. If permissions
            allow, will change the creating user to the one referenced by this
            elemental_id
          type: string
        v:
          description: Vertical vector component for `line` localization types.
          maximum: 1
          minimum: -1
          nullable: true
          type: number
        width:
          description: Normalized width of bounding box for `box` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
        x:
          description: >-
            Normalized horizontal position of left edge of bounding box for
            `box` localization types, start of line for `line` localization
            types, or position of dot for `dot` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
        'y':
          description: >-
            Normalized vertical position of top edge of bounding box for `box`
            localization types, start of line for `line` localization types, or
            position of dot for `dot` localization types.
          maximum: 1
          minimum: 0
          nullable: true
          type: number
      type: object
    Media:
      properties:
        archive_state:
          description: The current archival state of the media.
          enum:
            - archived
            - to_archive
            - live
            - to_live
          type: string
        archive_status_date:
          description: Datetime of the last change to the `archive_state` field.
          format: date-time
          type: string
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/Media'
          description: Object containing attribute values.
          type: object
        codec:
          description: Codec for videos.
          type: string
        created_by:
          description: Unique integer identifying user who created this media.
          type: integer
        created_datetime:
          description: Datetime when this media was created.
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        fps:
          description: Frame rate for videos.
          type: number
        gid:
          description: Group ID for the upload group of this media.
          type: string
        height:
          description: Vertical resolution in pixels.
          type: integer
        id:
          description: Unique integer identifying this media.
          type: integer
        incident:
          description: >-
            If doing a related search, will contain the number of matching
            metadata hits in this media.
          nullable: true
          type: integer
        last_edit_end:
          description: >-
            Datetime of the end of the session when this media or its
            annotations were last edited.
          format: date-time
          type: string
        last_edit_start:
          description: >-
            Datetime of the start of the session when this media or its
            annotations were last edited.
          format: date-time
          type: string
        md5:
          description: MD5 checksum of the media file.
          type: string
        media_files:
          $ref: '#/components/schemas/MediaFiles'
          x-scope:
            - ''
            - '#/components/schemas/Media'
        modified_by:
          description: Unique integer identifying user who last modified this media.
          type: integer
        modified_datetime:
          description: Datetime when this media was last modified.
          type: string
        name:
          description: Name of the media.
          type: string
        num_frames:
          description: Number of frames for videos.
          type: integer
        project:
          description: Unique integer identifying project of this media.
          type: integer
        summary_level:
          description: If supplied, this video is best summarized at this frame interval
          type: integer
        type:
          description: Unique integer identifying entity type of this media.
          type: integer
        uid:
          description: Unique ID for the upload of this media.
          type: string
        width:
          description: Horizontal resolution in pixels.
          type: integer
      type: object
    MediaBulkUpdate:
      properties:
        archive_state:
          description: >-
            Marks media for archival or retrieval. Media may not be set directly
            to `live` or `archived`, the system performs that transition for the
            user.
          enum:
            - to_archive
            - to_live
          type: string
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/MediaBulkUpdate'
          description: Attribute values to bulk update an entity list.
          type: object
        float_array:
          description: Searches on `float_array` attributes.
          items:
            $ref: '#/components/schemas/FloatArrayQuery'
            x-scope:
              - ''
              - '#/components/schemas/MediaIdQuery'
          type: array
        ids:
          description: Array of media IDs to retrieve.
          items:
            minimum: 1
            type: integer
          type: array
        localization_ids:
          description: Array of child localization IDs for which media should be retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        null_attributes:
          description: Null a value in the attributes body
          items:
            minimum: 1
            type: string
          type: array
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/MediaIdQuery'
        reset_attributes:
          description: Reset an attribute to the default value specified in the Type object
          items:
            minimum: 1
            type: string
          type: array
        state_ids:
          description: Array of child state IDs for which media should be retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        user_elemental_id:
          description: >-
            Unique ID of the original user who created this. If permissions
            allow, will change the creating user to the one referenced by this
            elemental_id
          type: string
      type: object
    MediaFiles:
      description: >-
        Object containing upload urls for the transcoded file and corresponding
        `VideoDefinition`.
      properties:
        archival:
          items:
            $ref: '#/components/schemas/VideoDefinition'
            x-scope:
              - ''
              - '#/components/schemas/Media'
              - '#/components/schemas/MediaFiles'
          type: array
        attachment:
          items:
            $ref: '#/components/schemas/AuxiliaryFileDefinition'
            x-scope:
              - ''
              - '#/components/schemas/Media'
              - '#/components/schemas/MediaFiles'
          type: array
        audio:
          items:
            $ref: '#/components/schemas/AudioDefinition'
            x-scope:
              - ''
              - '#/components/schemas/Media'
              - '#/components/schemas/MediaFiles'
          type: array
        concat:
          items:
            $ref: '#/components/schemas/ConcatDefinition'
            x-scope:
              - ''
              - '#/components/schemas/Media'
              - '#/components/schemas/MediaFiles'
          type: array
        frameOffset:
          description: Frame of sub-video, offset from media in slot 0.
          items:
            type: integer
          type: array
        ids:
          description: If multi-stream list of ids of sub-videos
          items:
            type: integer
          type: array
        image:
          items:
            $ref: '#/components/schemas/ImageDefinition'
            x-scope:
              - ''
              - '#/components/schemas/Media'
              - '#/components/schemas/MediaFiles'
          type: array
        layout:
          description: 2-element array to define rxc layout
          items:
            type: integer
          type: array
        live:
          items:
            $ref: '#/components/schemas/LiveDefinition'
            x-scope:
              - ''
              - '#/components/schemas/Media'
              - '#/components/schemas/MediaFiles'
          type: array
        quality:
          description: Resolution to fetch on each sub-video
          type: integer
        streaming:
          items:
            $ref: '#/components/schemas/VideoDefinition'
            x-scope:
              - ''
              - '#/components/schemas/Media'
              - '#/components/schemas/MediaFiles'
          type: array
        thumbnail:
          items:
            $ref: '#/components/schemas/ImageDefinition'
            x-scope:
              - ''
              - '#/components/schemas/Media'
              - '#/components/schemas/MediaFiles'
          type: array
        thumbnail_gif:
          items:
            $ref: '#/components/schemas/ImageDefinition'
            x-scope:
              - ''
              - '#/components/schemas/Media'
              - '#/components/schemas/MediaFiles'
          type: array
      type: object
    MediaIdQuery:
      properties:
        float_array:
          description: Searches on `float_array` attributes.
          items:
            $ref: '#/components/schemas/FloatArrayQuery'
            x-scope:
              - ''
              - '#/components/schemas/MediaIdQuery'
          type: array
        ids:
          description: Array of media IDs to retrieve.
          items:
            minimum: 1
            type: integer
          type: array
        localization_ids:
          description: Array of child localization IDs for which media should be retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/MediaIdQuery'
        state_ids:
          description: Array of child state IDs for which media should be retrieved.
          items:
            minimum: 1
            type: integer
          type: array
      type: object
    MediaNext:
      properties:
        next:
          minimum: 0
          type: integer
      type: object
    MediaPrev:
      properties:
        prev:
          minimum: 0
          type: integer
      type: object
    MediaSpec:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/MediaSpec'
          description: Object containing attribute values.
          nullable: true
          type: object
        codec:
          description: Codec for videos.
          nullable: true
          type: string
        elemental_id:
          description: Unique ID of an element
          type: string
        fps:
          description: Frame rate for videos.
          nullable: true
          type: number
        gid:
          description: Group ID for the upload group of this media.
          type: string
        height:
          description: Vertical resolution in pixels.
          nullable: true
          type: integer
        md5:
          description: MD5 sum of the media file.
          type: string
        name:
          description: Name of the file.
          type: string
        num_frames:
          description: Number of frames for videos.
          nullable: true
          type: integer
        reference_only:
          default: 0
          description: >-
            Do not import the media resources into Tator. This causes the image
            to be accessed at the supplied URL upon access in the UI. Valid for
            images only.
          maximum: 1
          type: integer
        section:
          description: Media section name.
          type: string
        summary_level:
          description: If supplied, this video is best summarized at this frame interval
          type: integer
        thumbnail_gif_url:
          description: Upload URL for the video gif thumbnail if already generated.
          type: string
        thumbnail_url:
          description: Upload URL for the media thumbnail if already generated.
          type: string
        type:
          description: >-
            Unique integer identifying a media type. Use -1 to automatically
            select the media type if only one media type exists in a project.
          minimum: -1
          type: integer
        uid:
          description: Unique ID for the upload of this media.
          type: string
        url:
          description: >-
            Upload URL for the image if this is an image type, URL of hosted
            original media if this is a video type. For video types this field
            is just for reference.
          type: string
        user_elemental_id:
          description: >-
            Unique ID of the original user who created this. If permissions
            allow, will change the creating user to the one referenced by this
            elemental_id
          type: string
        width:
          description: Horizontal resolution in pixels.
          nullable: true
          type: integer
      required:
        - type
        - section
        - name
        - md5
      type: object
    MediaStats:
      properties:
        count:
          minimum: 0
          type: integer
        download_size:
          minimum: 0
          type: integer
        duration:
          minimum: 0
          type: number
        total_size:
          minimum: 0
          type: integer
      type: object
    MediaType:
      description: Media type.
      properties:
        archive_config:
          description: >-
            Archive config definitions. If null, the raw file will be uploaded
            to Tator.
          items:
            $ref: '#/components/schemas/ArchiveConfig'
            x-scope:
              - ''
              - '#/components/schemas/MediaType'
          type: array
        attribute_types:
          description: Attribute type definitions.
          items:
            $ref: '#/components/schemas/AttributeType'
            x-scope:
              - ''
              - '#/components/schemas/MediaType'
          type: array
        default_box:
          description: Unique integer identifying default box type for drawing.
          type: integer
        default_dot:
          description: Unique integer identifying default dot type for drawing.
          type: integer
        default_line:
          description: Unique integer identifying default line type for drawing.
          type: integer
        default_volume:
          description: Default audio volume for this media type.
          maximum: 100
          minimum: 0
          type: integer
        description:
          default: ''
          description: Description of the media type.
          type: string
        dtype:
          description: Type of the media, image or video.
          enum:
            - image
            - video
            - multi
            - live
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        file_format:
          description: >-
            File extension. If omitted, any recognized file extension for the
            given dtype is accepted for upload. Do not include a dot prefix.
          maxLength: 4
          type: string
        id:
          description: Unique integer identifying a media type.
          type: integer
        name:
          description: Name of the media type.
          type: string
        overlay_config:
          additionalProperties: true
          description: Overlay configuration
          type: object
        project:
          description: Unique integer identifying project for this media type.
          type: integer
        streaming_config:
          description: Streaming config definition. If null, the default will be used.
          items:
            $ref: '#/components/schemas/ResolutionConfig'
            x-scope:
              - ''
              - '#/components/schemas/MediaType'
          type: array
        visible:
          description: Visible configuration
          type: boolean
      type: object
    MediaTypeSpec:
      properties:
        archive_config:
          description: >-
            Archive config definitions. If null, the raw file will be uploaded
            to Tator.
          items:
            $ref: '#/components/schemas/ArchiveConfig'
            x-scope:
              - ''
              - '#/components/schemas/MediaType'
          type: array
        attribute_types:
          description: Attribute type definitions.
          items:
            $ref: '#/components/schemas/AttributeType'
            x-scope:
              - ''
              - '#/components/schemas/MediaType'
          type: array
        default_box:
          description: Unique integer identifying default box type for drawing.
          type: integer
        default_dot:
          description: Unique integer identifying default dot type for drawing.
          type: integer
        default_line:
          description: Unique integer identifying default line type for drawing.
          type: integer
        default_volume:
          description: Default audio volume for this media type.
          maximum: 100
          minimum: 0
          type: integer
        description:
          default: ''
          description: Description of the media type.
          type: string
        dtype:
          description: Type of the media, image or video.
          enum:
            - image
            - video
            - multi
            - live
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        file_format:
          description: >-
            File extension. If omitted, any recognized file extension for the
            given dtype is accepted for upload. Do not include a dot prefix.
          maxLength: 4
          type: string
        name:
          description: Name of the media type.
          type: string
        overlay_config:
          additionalProperties: true
          description: Overlay configuration
          type: object
        streaming_config:
          description: Streaming config definition. If null, the default will be used.
          items:
            $ref: '#/components/schemas/ResolutionConfig'
            x-scope:
              - ''
              - '#/components/schemas/MediaType'
          type: array
        visible:
          description: Visible configuration
          type: boolean
      required:
        - name
        - dtype
      type: object
    MediaTypeUpdate:
      properties:
        archive_config:
          description: >-
            Archive config definitions. If null, the raw file will be uploaded
            to Tator.
          items:
            $ref: '#/components/schemas/ArchiveConfig'
            x-scope:
              - ''
              - '#/components/schemas/MediaType'
          type: array
        default_box:
          description: Unique integer identifying default box type for drawing.
          type: integer
        default_dot:
          description: Unique integer identifying default dot type for drawing.
          type: integer
        default_line:
          description: Unique integer identifying default line type for drawing.
          type: integer
        default_volume:
          description: Default audio volume for this media type.
          maximum: 100
          minimum: 0
          type: integer
        description:
          description: Description of the media type.
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        file_format:
          description: >-
            File extension. If omitted, any recognized file extension for the
            given dtype is accepted for upload. Do not include a dot prefix.
          maxLength: 4
          type: string
        name:
          description: Name of the media type.
          type: string
        streaming_config:
          description: Streaming config definition. If null, the default will be used.
          items:
            $ref: '#/components/schemas/ResolutionConfig'
            x-scope:
              - ''
              - '#/components/schemas/MediaType'
          type: array
        visible:
          description: Visible configuration
          type: boolean
      type: object
    MediaUpdate:
      properties:
        archive_state:
          description: >-
            Marks media for archival or retrieval. Media may not be set directly
            to `live` or `archived`, the system performs that transition for the
            user.
          enum:
            - to_archive
            - to_live
          type: string
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/Media'
          description: Object containing attribute values.
          type: object
        codec:
          description: Codec of the original video.
          type: string
        concat:
          description: List of concated videos
          items:
            $ref: '#/components/schemas/ConcatDefinition'
            x-scope:
              - ''
              - '#/components/schemas/MediaUpdate'
          type: array
        elemental_id:
          description: Unique ID of an element
          type: string
        fps:
          description: Frame rate of the video.
          type: number
        height:
          description: Pixel height of the video.
          type: integer
        last_edit_end:
          description: >-
            Datetime of the end of the session when this media or its
            annotations were last edited.
          format: date-time
          type: string
        last_edit_start:
          description: >-
            Datetime of the start of the session when this media or its
            annotations were last edited.
          format: date-time
          type: string
        live:
          $ref: '#/components/schemas/LiveUpdateDefinition'
          x-scope:
            - ''
            - '#/components/schemas/MediaUpdate'
        media_files:
          $ref: '#/components/schemas/MediaFiles'
          x-scope:
            - ''
            - '#/components/schemas/Media'
        multi:
          $ref: '#/components/schemas/MultiDefinition'
          x-scope:
            - ''
            - '#/components/schemas/MediaUpdate'
        name:
          description: Name of the media.
          type: string
        null_attributes:
          description: Null a value in the attributes body
          items:
            minimum: 1
            type: string
          type: array
        num_frames:
          description: Number of frames in the video.
          minimum: 0
          type: integer
        reset_attributes:
          description: Reset an attribute to the default value specified in the Type object
          items:
            minimum: 1
            type: string
          type: array
        summary_level:
          description: If supplied, this video is best summarized at this frame interval
          type: integer
        user_elemental_id:
          description: >-
            Unique ID of the original user who created this. If permissions
            allow, will change the creating user to the one referenced by this
            elemental_id
          type: string
        width:
          description: Pixel width of the video.
          type: integer
      type: object
    Membership:
      description: Membership object.
      properties:
        default_version:
          description: Unique integer identifying a version.
          minimum: 1
          type: integer
        email:
          description: Email address of user.
          type: string
        first_name:
          description: First name of user.
          type: string
        id:
          description: Unique integer identifying a membership.
          type: integer
        last_name:
          description: Last name of user.
          type: string
        permission:
          description: User permission level for the project.
          enum:
            - View Only
            - Can Edit
            - Can Transfer
            - Can Execute
            - Full Control
          type: string
        project:
          description: Unique integer identifying project for this membership.
          type: integer
        user:
          description: Unique integer identifying a user.
          minimum: 1
          type: integer
        username:
          description: Username for the membership.
          type: string
      type: object
    MembershipSpec:
      properties:
        default_version:
          description: Unique integer identifying a version.
          minimum: 1
          type: integer
        permission:
          description: User permission level for the project.
          enum:
            - View Only
            - Can Edit
            - Can Transfer
            - Can Execute
            - Full Control
          type: string
        user:
          description: Unique integer identifying a user.
          minimum: 1
          type: integer
      required:
        - user
        - permission
      type: object
    MembershipUpdate:
      properties:
        default_version:
          description: Unique integer identifying a version.
          minimum: 1
          type: integer
        permission:
          description: User permission level for the project.
          enum:
            - View Only
            - Can Edit
            - Can Transfer
            - Can Execute
            - Full Control
          type: string
      type: object
    MessageResponse:
      properties:
        message:
          description: Message explaining response.
          type: string
      type: object
    MultiDefinition:
      description: Object containing information needed for a multi media type.
      properties:
        frameOffset:
          description: Frame of sub-video, offset from media in slot 0.
          items:
            type: integer
          type: array
        ids:
          description: If multi-stream list of ids of sub-videos
          items:
            type: integer
          type: array
        layout:
          description: 2-element array to define rxc layout
          items:
            type: integer
          type: array
        quality:
          description: Resolution to fetch on each sub-video
          type: integer
      type: object
    NotFoundResponse:
      properties:
        message:
          description: Message explaining not found error.
          type: string
      type: object
    NotifySpec:
      properties:
        message:
          description: Message to send to administrators.
          type: string
        send_as_file:
          description: Whether to send message as a file. (0 or 1)
          type: integer
      required:
        - message
      type: object
    Organization:
      description: Organization object.
      properties:
        default_membership_permission:
          description: >-
            Default user permission level for all projects in this organization.
            If specified, users in this organizaiton will be automatically added
            to all projects in this organization with at least this permission
            level.
          enum:
            - No Access
            - View Only
            - Can Edit
            - Can Transfer
            - Can Execute
            - Full Control
          type: string
        id:
          description: Unique integer identifying the organization.
          type: integer
        name:
          description: Name of the organization.
          type: string
        permission:
          description: Permission level of user making request.
          type: string
        thumb:
          description: S3 key of thumbnail used to represent the organization.
          type: string
      type: object
    OrganizationSpec:
      properties:
        default_membership_permission:
          description: >-
            Default user permission level for all projects in this organization.
            If specified, users in this organizaiton will be automatically added
            to all projects in this organization with at least this permission
            level.
          enum:
            - No Access
            - View Only
            - Can Edit
            - Can Transfer
            - Can Execute
            - Full Control
          type: string
        name:
          description: Name of the organization.
          type: string
        thumb:
          description: S3 key of thumbnail used to represent the organization.
          type: string
      required:
        - name
      type: object
    OrganizationUpdate:
      properties:
        default_membership_permission:
          description: >-
            Default user permission level for all projects in this organization.
            If specified, users in this organizaiton will be automatically added
            to all projects in this organization with at least this permission
            level.
          enum:
            - No Access
            - View Only
            - Can Edit
            - Can Transfer
            - Can Execute
            - Full Control
          type: string
        name:
          description: Name of the organization.
          type: string
        thumb:
          description: S3 key of thumbnail used to represent the organization.
          type: string
      type: object
    PasswordResetSpec:
      properties:
        email:
          description: Email address registered for user requesting reset.
          type: string
      required:
        - email
      type: object
    Project:
      description: Project object.
      properties:
        backup_bucket:
          description: Unique integer identifying a bucket for backups.
          minimum: 1
          type: integer
        bucket:
          description: Unique integer identifying a bucket.
          minimum: 1
          type: integer
        created:
          description: Datetime when this project was created.
          type: string
        duration:
          description: Total duration of all video in the project.
          type: integer
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        enable_downloads:
          default: true
          description: Whether the UI should allow downloads for this project.
          type: boolean
        id:
          description: Unique integer identifying the project.
          type: integer
        name:
          description: Name of the project.
          type: string
        num_files:
          description: Number of files in the project.
          type: integer
        organization:
          description: Unique integer identifying an organization.
          minimum: 1
          type: integer
        permission:
          description: Permission level of user making request.
          type: string
        size:
          description: Size of the project in bytes.
          type: integer
        summary:
          default: ''
          description: Summary of the project.
          type: string
        thumb:
          description: S3 key of thumbnail used to represent the project.
          type: string
        upload_bucket:
          description: Unique integer identifying a bucket for uploads.
          minimum: 1
          type: integer
        usernames:
          description: List of usernames of project members.
          items:
            type: string
          type: array
      type: object
    ProjectSpec:
      properties:
        backup_bucket:
          description: Unique integer identifying a bucket for backups.
          minimum: 1
          type: integer
        bucket:
          description: Unique integer identifying a bucket.
          minimum: 1
          type: integer
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        enable_downloads:
          default: true
          description: Whether the UI should allow downloads for this project.
          type: boolean
        name:
          description: Name of the project.
          type: string
        organization:
          description: Unique integer identifying an organization.
          minimum: 1
          type: integer
        summary:
          default: ''
          description: Summary of the project.
          type: string
        upload_bucket:
          description: Unique integer identifying a bucket for uploads.
          minimum: 1
          type: integer
      required:
        - name
        - organization
      type: object
    ProjectUpdate:
      properties:
        backup_bucket:
          description: Unique integer identifying a bucket for backups.
          minimum: 1
          type: integer
        bucket:
          description: Unique integer identifying a bucket.
          minimum: 1
          type: integer
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        enable_downloads:
          description: Whether the UI should allow downloads for this project.
          type: boolean
        name:
          description: Name of the project.
          type: string
        summary:
          description: Summary of the project.
          type: string
        thumb:
          description: S3 key of thumbnail used to represent the project.
          type: string
        upload_bucket:
          description: Unique integer identifying a bucket for uploads.
          minimum: 1
          type: integer
      type: object
    ResolutionConfig:
      additionalProperties: true
      description: >-
        Settings for streaming video encode. Any additional properties will be
        passed as command line arguments to ffmpeg. 
      properties:
        crf:
          default: 23
          description: Constant rate factor.
          maximum: 63
          minimum: 0
          type: integer
        pixel_format:
          default: yuv420p
          description: >-
            Pixel format selection. Of note, compatibility varies significantly
            from codec to codec based on encoder support.SW Encoders: h264 when
            using libx264 supports:               yuv420p yuvj420p yuv422p
            yuvj422p yuv444p yuvj444p nv12 nv16 nv21 yuv420p10le yuv422p10le
            yuv444p10le nv20leh265 when using libsvt_hevc supports:          
            yuv420p yuvj420p yuv422p yuvj422p yuv444p yuvj444p nv12 nv16 nv21
            yuv420p10le yuv422p10le yuv444p10le nv20leav1 when using libsvtav1
            supports:              yuv420p          yuv422p         
            yuv444p                         yuv420p10le yuv422p10le
            yuv444p10leGenerally hardware encoders like QSV only support
            nv12(yuv420p) or p010le(yuv420p10le). Tator converts to the
            appropriate hardware format based on the specified pixel format.
          enum:
            - yuv420p
            - yuvj420p
            - yuv422p
            - yuvj422p
            - yuv444p
            - yuvj444p
            - yuv420p10le
            - yuv422p10le
            - yuv444p10le
          type: string
        preset:
          default: ''
          description: Codec Specific Preset (e.g. fast, medium, or 0,1,2)
          type: string
        resolution:
          description: Vertical Resolution
          maximum: 8192
          minimum: 0
          type: integer
        vcodec:
          default: h264
          description: Video codec.
          enum:
            - h264
            - av1
          type: string
      type: object
    RgbColor:
      description: RGB three element array with values 0-255.
      items:
        maximum: 255
        minimum: 0
        type: integer
      maxItems: 3
      minItems: 3
      type: array
    RgbaColor:
      description: RGBA four element array with values 0-255.
      items:
        maximum: 255
        minimum: 0
        type: integer
      maxItems: 4
      minItems: 4
      type: array
    S3StorageConfig:
      description: >-
        Settings for AWS S3 archival storage. If not given, the archival video
        will be stored on the Tator website.
      properties:
        aws_access_key:
          description: AWS access key.
          type: string
        aws_secret_access_key:
          description: AWS secret access key.
          type: string
        bucket_name:
          description: Name of bucket.
          type: string
      type: object
    Section:
      properties:
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        id:
          description: Unique integer identifying the section.
          type: integer
        name:
          description: Unique name of the section.
          type: string
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/Section'
        path:
          description: >-
            A path to represent nested sections. If not supplied, defaults to
            `re.sub(r'[^A-Za-z0-9_-]',path)`
          nullable: true
          type: string
        project:
          description: Unique integer identifying the project associated with the section.
          type: integer
        related_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/Section'
        tator_user_sections:
          description: >-
            Attribute that is applied to media to identify membership to a
            section.
          type: string
        visible:
          description: Determines the visibility in the UI.
          type: boolean
      type: object
    SectionSpec:
      properties:
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        name:
          description: Unique name of the section.
          type: string
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/Section'
        path:
          description: >-
            A path to represent nested sections. If not supplied, defaults to
            `re.sub(r'[^A-Za-z0-9_-]',path)`
          nullable: true
          type: string
        related_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/Section'
        tator_user_sections:
          description: >-
            Attribute that is applied to media to identify membership to a
            section.
          type: string
        visible:
          description: Determines the visibility in the UI.
          type: boolean
      required:
        - name
      type: object
    SectionUpdate:
      properties:
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        name:
          description: Unique name of the section.
          type: string
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/Section'
        path:
          description: >-
            A path to represent nested sections. If not supplied, defaults to
            `re.sub(r'[^A-Za-z0-9_-]',path)`
          nullable: true
          type: string
        related_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/Section'
        tator_user_sections:
          description: >-
            Attribute that is applied to media to identify membership to a
            section.
          type: string
        visible:
          description: Determines the visibility in the UI.
          type: boolean
      type: object
    State:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/State'
          description: Object containing attribute values.
          type: object
        created_by:
          description: Unique integer identifying the user who created this state.
          type: integer
        created_datetime:
          description: Datetime this state was created.
          format: date-time
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        frame:
          description: Frame number this state applies to.
          type: integer
        id:
          description: Unique integer identifying the state.
          type: integer
        localizations:
          description: List of localization IDs that this state applies to.
          items:
            type: integer
          type: array
        media:
          description: List of media IDs that this state applies to.
          items:
            type: integer
          type: array
        modified_by:
          description: Unique integer identifying the user who last modified this state.
          type: integer
        modified_datetime:
          description: Datetime this state was last modified.
          format: date-time
          type: string
        parent:
          description: If a clone, the pk of the parent.
          nullable: true
          type: number
        segments:
          description: >-
            List of contiguous frame ranges where a localization associated
            state has localization data.
          items:
            items:
              minimum: 0
              type: integer
            maxItems: 2
            minItems: 2
            type: array
          type: array
        type:
          description: Unique integer identifying the entity type.
          type: integer
        variant_deleted:
          description: Unique integer identifying the user who created this localization.
          type: boolean
        version:
          description: Unique integer identifying the version.
          type: integer
      type: object
    StateBulkDelete:
      properties:
        float_array:
          description: Searches on `float_array` attributes.
          items:
            $ref: '#/components/schemas/FloatArrayQuery'
            x-scope:
              - ''
              - '#/components/schemas/StateIdQuery'
          type: array
        ids:
          description: Array of state IDs to retrieve.
          items:
            minimum: 1
            type: integer
          type: array
        localization_ids:
          description: >-
            Array of child localization IDs for which states should be
            retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        media_ids:
          description: Array of parent media IDs for which states should be retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        media_query:
          description: >-
            Query string used to filter media IDs. This can be used to avoid
            serialization and download of a media ID list.
          type: string
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/StateIdQuery'
        prune:
          default: 0
          description: >-
            If set to 1 will purge the object from the database entirely. This
            removes any record, change-log, that this metadatum ever existed.
          maximum: 1
          minimum: 0
          type: integer
      type: object
    StateBulkUpdate:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/StateBulkUpdate'
          description: Attribute values to bulk update an entity list.
          type: object
        float_array:
          description: Searches on `float_array` attributes.
          items:
            $ref: '#/components/schemas/FloatArrayQuery'
            x-scope:
              - ''
              - '#/components/schemas/StateIdQuery'
          type: array
        ids:
          description: Array of state IDs to retrieve.
          items:
            minimum: 1
            type: integer
          type: array
        localization_ids:
          description: >-
            Array of child localization IDs for which states should be
            retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        media_ids:
          description: Array of parent media IDs for which states should be retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        media_query:
          description: >-
            Query string used to filter media IDs. This can be used to avoid
            serialization and download of a media ID list.
          type: string
        new_elemental_id:
          description: The new elemental ID for these objects
          type: string
        new_version:
          description: Unique integer identifying a new version for these objects
          type: integer
        null_attributes:
          description: Null a value in the attributes body
          items:
            minimum: 1
            type: string
          type: array
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/StateIdQuery'
        reset_attributes:
          description: Reset an attribute to the default value specified in the Type object
          items:
            minimum: 1
            type: string
          type: array
        user_elemental_id:
          description: >-
            Unique ID of the original user who created this. If permissions
            allow, will change the creating user to the one referenced by this
            elemental_id
          type: string
      type: object
    StateDelete:
      properties:
        prune:
          default: 0
          description: >-
            If set to 1 will purge the object from the database entirely. This
            removes any record, change-log, that this metadatum ever existed.
          maximum: 1
          minimum: 0
          type: integer
      type: object
    StateIdQuery:
      properties:
        float_array:
          description: Searches on `float_array` attributes.
          items:
            $ref: '#/components/schemas/FloatArrayQuery'
            x-scope:
              - ''
              - '#/components/schemas/StateIdQuery'
          type: array
        ids:
          description: Array of state IDs to retrieve.
          items:
            minimum: 1
            type: integer
          type: array
        localization_ids:
          description: >-
            Array of child localization IDs for which states should be
            retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        media_ids:
          description: Array of parent media IDs for which states should be retrieved.
          items:
            minimum: 1
            type: integer
          type: array
        media_query:
          description: >-
            Query string used to filter media IDs. This can be used to avoid
            serialization and download of a media ID list.
          type: string
        object_search:
          $ref: '#/components/schemas/AttributeOperationSpec'
          x-scope:
            - ''
            - '#/components/schemas/StateIdQuery'
      type: object
    StateMergeUpdate:
      properties:
        merge_state_id:
          description: >-
            Unique integer identifying the state whose localizations will merge
            with this state.
          type: integer
      required:
        - merge_state_id
      type: object
    StateSpec:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/StateSpec'
          description: Object containing attribute values.
          type: object
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        frame:
          description: Frame number this state applies to.
          type: integer
        localization_ids:
          description: List of localization IDs that this state applies to.
          items:
            type: integer
          type: array
        media_ids:
          description: List of media IDs that this state applies to.
          items:
            type: integer
          type: array
        parent:
          description: If a clone, the pk of the parent.
          nullable: true
          type: number
        type:
          description: Unique integer identifying a state type.
          type: integer
        user_elemental_id:
          description: >-
            Unique ID of the original user who created this. If permissions
            allow, will change the creating user to the one referenced by this
            elemental_id
          type: string
        version:
          description: Unique integer identifying the version.
          type: integer
      required:
        - media_ids
        - type
      type: object
    StateTrimUpdate:
      properties:
        endpoint:
          description: End point to trim to using the provided frame number.
          enum:
            - start
            - end
          type: string
        frame:
          description: Frame number of new end point
          minimum: 0
          type: integer
      required:
        - frame
        - endpoint
      type: object
    StateType:
      description: State type.
      properties:
        association:
          description: Type of object this state type is associated with.
          enum:
            - Media
            - Frame
            - Localization
          type: string
        attribute_types:
          description: Attribute type definitions.
          items:
            $ref: '#/components/schemas/AttributeType'
            x-scope:
              - ''
              - '#/components/schemas/StateType'
          type: array
        default_localization:
          description: >-
            If this is a track type, this is a unique integer identifying the
            default localization type that is created when a track is created
            via the web interface.
          type: integer
        delete_child_localizations:
          default: false
          description: >-
            True if child localizations should be deleted when this state is
            deleted. Localizations will only be deleted if they are not
            associated with another state. 
          type: boolean
        description:
          description: Description of the state type.
          type: string
        dtype:
          description: String indicating data type. Always equal to "state".
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        grouping_default:
          default: true
          description: Whether to group elements in the UI by default.
          type: boolean
        id:
          description: Unique integer identifying a state type.
          type: integer
        interpolation:
          default: latest
          description: Interpolation method used by the web interface.
          enum:
            - none
            - latest
            - attr_style_range
          type: string
        media:
          description: >-
            List of integers identifying media types that this state type may
            apply to.
          items:
            minimum: 1
            type: integer
          type: array
        name:
          description: Name of the state type.
          type: string
        project:
          description: Unique integer identifying project for this state type.
          type: integer
        visible:
          description: Whether this state type should be displayed.
          type: boolean
      type: object
    StateTypeSpec:
      properties:
        association:
          description: Type of object this state type is associated with.
          enum:
            - Media
            - Frame
            - Localization
          type: string
        attribute_types:
          description: Attribute type definitions.
          items:
            $ref: '#/components/schemas/AttributeType'
            x-scope:
              - ''
              - '#/components/schemas/StateType'
          type: array
        default_localization:
          description: >-
            If this is a track type, this is a unique integer identifying the
            default localization type that is created when a track is created
            via the web interface.
          type: integer
        delete_child_localizations:
          default: false
          description: >-
            True if child localizations should be deleted when this state is
            deleted. Localizations will only be deleted if they are not
            associated with another state. 
          type: boolean
        description:
          description: Description of the state type.
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        grouping_default:
          default: true
          description: Whether to group elements in the UI by default.
          type: boolean
        interpolation:
          default: latest
          description: Interpolation method used by the web interface.
          enum:
            - none
            - latest
            - attr_style_range
          type: string
        media_types:
          description: >-
            List of integers identifying media types that this state type may
            apply to.
          items:
            minimum: 1
            type: integer
          minItems: 1
          type: array
        name:
          description: Name of the state type.
          type: string
        visible:
          description: Whether this state type should be displayed.
          type: boolean
      required:
        - name
        - association
        - media_types
      type: object
    StateTypeUpdate:
      properties:
        delete_child_localizations:
          description: >-
            True if child localizations should be deleted when this state is
            deleted. Localizations will only be deleted if they are not
            associated with another state. 
          type: boolean
        description:
          description: Description of the state type.
          type: string
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        grouping_default:
          description: Whether to group elements in the UI by default.
          type: boolean
        name:
          description: Name of the state type.
          type: string
        visible:
          description: Whether this state type should be displayed.
          type: boolean
      type: object
    StateUpdate:
      properties:
        attributes:
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
            x-scope:
              - ''
              - '#/components/schemas/StateUpdate'
          description: Object containing attribute values.
          type: object
        elemental_id:
          description: The elemental ID of the object.
          nullable: true
          type: string
        frame:
          description: Frame number this state applies to.
          type: integer
        localization_ids_add:
          description: List of new localization IDs that this state applies to.
          items:
            type: integer
          type: array
        localization_ids_remove:
          description: List of new localization IDs that this state applies to.
          items:
            type: integer
          type: array
        null_attributes:
          description: Null a value in the attributes body
          items:
            minimum: 1
            type: string
          type: array
        parent:
          description: If a clone, the pk of the parent.
          nullable: true
          type: number
        reset_attributes:
          description: Reset an attribute to the default value specified in the Type object
          items:
            minimum: 1
            type: string
          type: array
        user_elemental_id:
          description: >-
            Unique ID of the original user who created this. If permissions
            allow, will change the creating user to the one referenced by this
            elemental_id
          type: string
      type: object
    TemporaryFile:
      properties:
        created_datetime:
          description: Datetime when this temporary file was created.
          type: string
        eol_datetime:
          description: Datetime when this temporary file may be deleted.
          type: string
        id:
          description: Unique integer identifying a temporary file.
          type: integer
        lookup:
          description: md5hash of lookup parameters
          type: string
        name:
          description: Unique name for the temporary file
          type: string
        path:
          description: Full URL to the temporary file.
          type: string
        project:
          description: Unique integer identifying a project.
          type: integer
        user:
          description: Unique integer identifying user who created this file.
          type: integer
      type: object
    TemporaryFileSpec:
      properties:
        hours:
          default: 24
          description: Number of hours file is to be kept alive
          maximum: 24
          minimum: 1
          type: integer
        lookup:
          description: md5hash of lookup parameters
          type: string
        name:
          description: Unique name for the temporary file
          type: string
        url:
          description: URL for the temporary file
          type: string
      required:
        - name
        - url
        - lookup
      type: object
    Token:
      properties:
        token:
          description: API token.
          type: string
      type: object
    Transcode:
      properties:
        job:
          $ref: '#/components/schemas/Job'
          x-scope:
            - ''
            - '#/components/schemas/Transcode'
        spec:
          $ref: '#/components/schemas/TranscodeSpec'
          x-scope:
            - ''
            - '#/components/schemas/Transcode'
      type: object
    TranscodeSpec:
      properties:
        attributes:
          description: Attributes to apply upon upload
          nullable: true
          type: object
        email_spec:
          description: >-
            Send an email message to members of the project using the Tator
            configured AWS email service
          nullable: true
          properties:
            attachments:
              description: >-
                S3 object(s) to send as attachment(s). Ensure the attachment
                size does not exceed the corresponding email service limits
              items:
                $ref: '#/components/schemas/EmailAttachmentSpec'
                x-scope:
                  - ''
                  - '#/components/schemas/JobSpec'
              type: array
            recipients:
              description: >-
                Recipients of the email message. They must be members of this
                project. Entries are either in "Name <email@email.com>" or
                "email@email.com" format
              items:
                type: string
              type: array
            subject:
              description: Subject of the email message
              type: string
            text:
              description: Text body of the email message. HTML is currently not supported.
              type: string
          required:
            - recipients
            - subject
            - text
          type: object
        gid:
          description: >-
            UUID generated for the job group. This value may be associated with
            messages generated during upload via the `Progress` endpoint, or it
            may be newly generated. The transcode workflow will use this value
            to generate progress messages.
          format: uuid
          type: string
        md5:
          description: MD5 sum of the media file.
          type: string
        media_id:
          description: >-
            ID of an existing media. If given, this media will be used for the
            transcode operation rather than creating a new object.
          nullable: true
          type: integer
        name:
          description: Name of the file.
          type: string
        section:
          description: Media section name to upload to.
          type: string
        size:
          description: >-
            Size of the file in bytes. This parameter is required if the
            supplied URL is external (not produced by `DownloadInfo` and cannot
            accept HEAD requests.
          minimum: 0
          type: integer
        type:
          description: Unique integer identifying a video type.
          type: integer
        uid:
          description: >-
            UUID generated for the individual job. This value may be associated
            with messages generated during upload via the `Progress` endpoint,
            or it may be newly generated. The transcode workflow will use this
            value to generate progress messages.
          type: string
        url:
          description: Upload URL for the raw video.
          type: string
      required:
        - type
        - gid
        - uid
        - url
        - section
        - name
      type: object
    UploadCompletionSpec:
      properties:
        key:
          description: >-
            An object key that can be supplied to the `Transcode` or `Media`
            endpoint after the file has been uploaded.
          type: string
        parts:
          description: >-
            List of objects containing part number for each PUT request and ETag
            header from each response.
          items:
            $ref: '#/components/schemas/UploadPart'
            x-scope:
              - ''
              - '#/components/schemas/UploadCompletionSpec'
          maxItems: 10000
          minItems: 2
          type: array
        upload_id:
          description: An upload ID.
          type: string
      type: object
    UploadInfo:
      properties:
        key:
          description: >-
            An object key that can be supplied to the `Transcode` or `Media` or
            `File` endpoint after the file has been uploaded.
          type: string
        upload_id:
          description: >-
            An upload ID that can be supplied to the `UploadCompletion` endpoint
            after the file has been uploaded. Only contains a value if
            `num_parts` > 1.
          type: string
        urls:
          description: One or more URLs for upload via one PUT request per URL.
          items:
            type: string
          minItems: 1
          type: array
      type: object
    UploadPart:
      properties:
        ETag:
          description: >-
            Content of ETag header returned from PUT request for an upload part.
            NOTE: key is case-sensitive!
          type: string
        PartNumber:
          description: >-
            Part number for the given ETag response header. NOTE: key is
            case-sensitive!
          type: integer
      type: object
    User:
      properties:
        elemental_id:
          description: Unique ID for a user across clusters/deployments
          type: string
        email:
          description: Email address of user.
          type: string
        first_name:
          description: First name of user.
          type: string
        id:
          description: Unique integer identifying a user.
          type: integer
        is_staff:
          description: Whether this user is a system administrator.
          type: boolean
        last_name:
          description: Last name of user.
          type: string
        profile:
          description: User profile information
          type: object
        username:
          description: Username of user.
          type: string
      type: object
    UserSpec:
      properties:
        elemental_id:
          description: Unique ID for a user across clusters/deployments
          type: string
        email:
          description: Email address of user.
          type: string
        first_name:
          description: First name of user.
          type: string
        last_name:
          description: Last name of user.
          type: string
        new_avatar:
          description: b64 encoded image to use for the avatar of the user
          type: string
        password:
          description: Account password.
          type: string
        profile:
          description: User profile information
          type: object
        registration_token:
          description: Registration token generated by Invitation object.
          type: string
        username:
          description: Username of user.
          type: string
      required:
        - username
        - first_name
        - last_name
        - email
        - password
      type: object
    UserUpdate:
      properties:
        clear_avatar:
          default: 0
          description: Set to >0 to clear the current avatar of the user
          type: integer
        clear_profile_keys:
          description: Clear the given keys from the profile dictionary
          items:
            description: Name of key to remove
            type: string
          type: array
        elemental_id:
          description: Unique ID for a user across clusters/deployments
          type: string
        email:
          description: Email address of user.
          type: string
        first_name:
          description: First name of user.
          type: string
        last_name:
          description: Last name of user.
          type: string
        new_avatar:
          description: >-
            b64 encoded image to use for the avatar of the user.This file is
            verified to meet system constraints:    - Less than 1Mb     - a
            mimetype of image/png or image/jpg
          type: string
        password:
          description: Account password.
          type: string
        reset_token:
          description: Password reset token generated by PasswordReset object.
          type: string
        set_profile_keys:
          description: Key/Value Pairs to set atomically
          type: object
      type: object
    Version:
      description: Version object.
      properties:
        bases:
          description: Array of other version IDs that are dependencies of this version.
          items:
            type: integer
          minimum: 0
          type: array
        created_by:
          description: >-
            Name of user who created the last unmodified annotation in this
            version.
          type: string
        description:
          default: ''
          description: Description of the version.
          type: string
        elemental_id:
          description: Unique ID of an element
          type: string
        id:
          description: Unique integer identifying a membership.
          type: integer
        name:
          description: Name of the version.
          type: string
        number:
          description: Version number.
          type: integer
        project:
          description: Unique integer identifying a project.
          type: integer
        show_empty:
          default: true
          description: >-
            Whether to show this version on media for which no annotations
            exist.
          type: boolean
      type: object
    VersionSpec:
      properties:
        bases:
          description: Array of other version IDs that are dependencies of this version.
          items:
            type: integer
          minimum: 0
          type: array
        description:
          default: ''
          description: Description of the version.
          type: string
        elemental_id:
          description: Unique ID of an element
          type: string
        name:
          description: Name of the version.
          type: string
        show_empty:
          default: true
          description: >-
            Whether to show this version on media for which no annotations
            exist.
          type: boolean
      required:
        - name
      type: object
    VersionUpdate:
      properties:
        bases:
          description: Array of other version IDs that are dependencies of this version.
          items:
            type: integer
          minimum: 0
          type: array
        description:
          default: ''
          description: Description of the version.
          type: string
        elemental_id:
          description: Unique ID of an element
          type: string
        name:
          description: Name of the version.
          type: string
        show_empty:
          default: true
          description: >-
            Whether to show this version on media for which no annotations
            exist.
          type: boolean
      type: object
    VideoClip:
      properties:
        file:
          $ref: '#/components/schemas/TemporaryFile'
          x-scope:
            - ''
            - '#/components/schemas/VideoClip'
        segment_end_frames:
          description: >-
            List of end frames of segments that form the clip. Index associated
            with segment_start_frames.
          items:
            type: integer
          type: array
        segment_start_frames:
          description: >-
            List of start frames of segments that form the clip. Index
            associated with segment_end_frames.
          items:
            type: integer
          type: array
      type: object
    VideoDefinition:
      properties:
        bit_rate:
          description: Bit rate in bits per second
          type: integer
        codec:
          description: Human readable codec.
          type: string
        codec_description:
          description: Description other than codec.
          type: string
        codec_mime:
          description: >-
            Example mime: "video/mp4; codecs="avc1.64001e"". Only relevant for
            streaming files, will assume example above if not present.
          type: string
        host:
          description: >-
            If supplied will use this instead of currently connected host, e.g.
            https://example.com
          type: string
        http_auth:
          description: >-
            If specified will be used for HTTP authorization in request for
            media, i.e. "bearer TOKEN".
          type: string
        path:
          description: Relative URL to the file.
          type: string
        reference_only:
          default: 0
          description: >-
            Do not import the media resources into Tator. This causes the
            resources to be accessed at the supplied URL upon access in the UI.
          maximum: 1
          type: integer
        resolution:
          description: Resolution of the video in pixels (height, width).
          items:
            minimum: 1
            type: integer
          maxItems: 2
          minItems: 2
          type: array
        segment_info:
          description: >-
            Path to json file containing segment info. Required if media role is
            `streaming`.
          type: string
        size:
          description: File size in bytes.
          type: integer
      required:
        - path
        - codec
        - resolution
      type: object
  securitySchemes:
    SessionAuth:
      in: header
      name: X-CSRFToken
      type: apiKey
    TokenAuth:
      in: header
      name: Authorization
      type: apiKey
info:
  title: Tator REST API
  version: 1.2.4
openapi: 3.0.2
paths:
  /anonymous-gateway:
    get:
      description: |
        Allows for logging into Tator as an anonymous user.
      operationId: GetAnonymousGatewaySchema
      parameters:
        - description: >-
            URI to redirect to after logging in as anonymous user. Defaults to
            /projects.
          in: query
          name: redirect
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items: {}
                type: array
            text/plain:
              schema:
                items: {}
                type: array
          description: ''
      tags:
        - Tator
  /rest/Affiliation/{id}:
    delete:
      description: >
        Delete affiliation.


        Affiliations specify a permission level of a user to an organization.
        There are currently

        two cumulative permission levels. `Member` can only view an organization
        and not change

        any data. `Admin` can modify an organization, add members to an
        organization, and create

        new projects under the organization's account.
      operationId: DeleteAffiliation
      parameters:
        - description: A unique integer identifying a affiliation.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of affiliation.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get affiliation.


        Affiliations specify a permission level of a user to an organization.
        There are currently

        two cumulative permission levels. `Member` can only view an organization
        and not change

        any data. `Admin` can modify an organization, add members to an
        organization, and create

        new projects under the organization's account.
      operationId: GetAffiliation
      parameters:
        - description: A unique integer identifying a affiliation.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Affiliation'
          description: Successful retrieval of affiliation.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update affiliation.


        Affiliations specify a permission level of a user to an organization.
        There are currently

        two cumulative permission levels. `Member` can only view an organization
        and not change

        any data. `Admin` can modify an organization, add members to an
        organization, and create

        new projects under the organization's account.
      operationId: UpdateAffiliation
      parameters:
        - description: A unique integer identifying a affiliation.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              permission: View Only
            schema:
              $ref: '#/components/schemas/AffiliationUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of affiliation.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Affiliations/{organization}:
    get:
      description: >
        Get affiliation list.


        Affiliations specify a permission level of a user to an organization.
        There are currently

        two cumulative permission levels. `Member` can only view an organization
        and not change

        any data. `Admin` can modify an organization, add members to an
        organization, and create

        new projects under the organization's account.
      operationId: GetAffiliationList
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: organization
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Affiliation'
                type: array
          description: Successful retrieval of affiliation list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create affiliation.


        Affiliations specify a permission level of a user to an organization.
        There are currently

        two cumulative permission levels. `Member` can only view an organization
        and not change

        any data. `Admin` can modify an organization, add members to an
        organization, and create

        new projects under the organization's account.
      operationId: CreateAffiliation
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: organization
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              permission: Admin
              user: 1
            schema:
              $ref: '#/components/schemas/AffiliationSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of affiliation.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Algorithm/{id}:
    delete:
      description: Delete registered algorithm workflow
      operationId: DeleteAlgorithm
      parameters:
        - description: A unique integer identifying a registered algorithm workflow.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of registered algorithm.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: Get registered algorithm workflow
      operationId: GetAlgorithm
      parameters:
        - description: A unique integer identifying a registered algorithm workflow.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Algorithm'
          description: Successful retrieval of algorithm.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: Updated registered algorithm workflow
      operationId: UpdateAlgorithm
      parameters:
        - description: A unique integer identifying a registered algorithm workflow.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              manifest: Server path to new manifest file
              name: New unique name
            schema:
              $ref: '#/components/schemas/AlgorithmSpec'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of registered algorithm.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Algorithms/{project}:
    get:
      description: |
        Get registered algorithms.
      operationId: GetAlgorithmList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Algorithm'
                type: array
          description: Successful retrieval of registered algorithms.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Register an algorithm argo workflow.


        This endpoint replicates the algorithm registration through the admin
        portal.

        The provided manifest file must have been uploaded and saved by the

        SaveAlgorithmManifest endpoint. This endpoint will respond with an error
        if

        one of the following conditions occur:


        - Provided workflow name is not unique (across projects)

        - Not all the required fields are present

        - There are syntax errors with the given manifest file
      operationId: RegisterAlgorithm
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlgorithmSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of registered algorithm.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Announcement/{id}:
    delete:
      description: >
        Delete announcement.


        Announcements are system-wide messages sent to users. Users may delete
        individual

        announcements to acknowledge and stop displaying them.
      operationId: DeleteAnnouncement
      parameters:
        - description: A unique integer identifying a announcement.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of announcement.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Announcements:
    get:
      description: >
        Get announcement list.


        Announcements are system-wide messages sent to users. Users may delete
        individual

        announcements to acknowledge and stop displaying them.
      operationId: GetAnnouncementList
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Announcement'
                type: array
          description: Successful retrieval of announcement list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Applet/{id}:
    delete:
      description: Delete registered applet file
      operationId: DeleteApplet
      parameters:
        - description: A unique integer identifying a registered applet file.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of registered applet.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: Get registered applet file
      operationId: GetApplet
      parameters:
        - description: A unique integer identifying a registered applet file.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Applet'
          description: Successful retrieval of applet.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: Updated registered applet file
      operationId: UpdateApplet
      parameters:
        - description: A unique integer identifying a registered applet file.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              name: New applet name
            schema:
              $ref: '#/components/schemas/AppletSpec'
        required: true
      responses:
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Applets/{project}:
    get:
      description: >
        Get applet list.


        Applets are customized interfaces (i.e. html files) displayed within the
        Tator projects.
      operationId: GetAppletList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Applet'
                type: array
          description: Successful retrieval of applet list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create applet.


        Applets are customized interfaces (i.e. html files) displayed within the
        Tator projects.
      operationId: RegisterApplet
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppletSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of registered applet.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/AttributeType/{id}:
    delete:
      description: >
        Deletes an existing attribute on Type.


        A attribute type is the metadata definition object for a user-defined
        attribute. It includes

        name, type, and any other associated fields, depending on the type.
      operationId: DeleteAttributeType
      parameters:
        - description: A unique integer identifying a unique entity type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              entity_type: LocalizationType
              name: My Old Attribute
            schema:
              $ref: '#/components/schemas/AttributeTypeDelete'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of attribute.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Renames and/or changes the type of an existing attribute on Type.


        A attribute type is the metadata definition object for a user-defined
        attribute. It includes

        name, type, and any other associated fields, depending on the type.
      operationId: UpdateAttributeType
      parameters:
        - description: A unique integer identifying a unique entity type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              attribute_type_update:
                choices:
                  - a
                  - b
                  - c
                default: a
                dtype: enum
                labels:
                  - a
                  - b
                  - c
                name: My Enumeration
              current_name: My Old Attribute
              entity_type: LocalizationType
            schema:
              $ref: '#/components/schemas/AttributeTypeUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of attribute.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Adds an attribute to Type.


        A attribute type is the metadata definition object for a user-defined
        attribute. It includes

        name, type, and any other associated fields, depending on the type.
      operationId: CreateAttributeType
      parameters:
        - description: A unique integer identifying a unique entity type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              addition:
                default: 0
                dtype: int
                maximum: 1
                minimum: -1
                name: My Integer
              entity_type: LocalizationType
            schema:
              $ref: '#/components/schemas/AttributeTypeSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful creation of attribute.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    put:
      description: >

        Replaces the definition of an existing attribute on Type.


        WARNING This completely replaces the

        existing definition and will delete any existing fields that are not
        present in the

        `attribute_type_update` definition.
                    

        A attribute type is the metadata definition object for a user-defined
        attribute. It includes

        name, type, and any other associated fields, depending on the type.
      operationId: ReplaceAttributeType
      parameters:
        - description: A unique integer identifying a unique entity type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              attribute_type_update:
                choices:
                  - a
                  - b
                  - c
                default: a
                dtype: enum
                labels:
                  - a
                  - b
                  - c
                name: My Enumeration
              current_name: My Old Attribute
              entity_type: LocalizationType
            schema:
              $ref: '#/components/schemas/AttributeTypeUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful replacement of attribute.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/AudioFile/{id}:
    delete:
      description: >
        Delete audio file.


        Audio files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying audio. One or more audio files
        can be used to reference

        the audio role in a `Media` object. The file itself must first be
        uploaded to a URL retrieved

        from the `UploadInfo` endpoint, and the returned object key 

        should be specified in the audio file's `path` field.
      operationId: DeleteAudioFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: false
          schema:
            default: audio
            enum:
              - audio
            type: string
        - description: >-
            Index of object. Must be less than size of current list of audio
            files for the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of audio file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get audio file.


        Audio files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying audio. One or more audio files
        can be used to reference

        the audio role in a `Media` object. The file itself must first be
        uploaded to a URL retrieved

        from the `UploadInfo` endpoint, and the returned object key 

        should be specified in the audio file's `path` field.
      operationId: GetAudioFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: false
          schema:
            default: audio
            enum:
              - audio
            type: string
        - description: >-
            Index of object. Must be less than size of current list of audio
            files for the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AudioDefinition'
          description: Successful retrieval of audio file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update audio file.


        Audio files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying audio. One or more audio files
        can be used to reference

        the audio role in a `Media` object. The file itself must first be
        uploaded to a URL retrieved

        from the `UploadInfo` endpoint, and the returned object key 

        should be specified in the audio file's `path` field.
      operationId: UpdateAudioFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: false
          schema:
            default: audio
            enum:
              - audio
            type: string
        - description: >-
            Index of object. Must be less than size of current list of audio
            files for the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AudioDefinition'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of audio file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/AudioFiles/{id}:
    get:
      description: >
        Get audio file list.


        Audio files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying audio. One or more audio files
        can be used to reference

        the audio role in a `Media` object. The file itself must first be
        uploaded to a URL retrieved

        from the `UploadInfo` endpoint, and the returned object key 

        should be specified in the audio file's `path` field.
      operationId: GetAudioFileList
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: false
          schema:
            default: audio
            enum:
              - audio
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AudioDefinition'
                type: array
          description: Successful retrieval of audio file list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create audio file.


        Audio files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying audio. One or more audio files
        can be used to reference

        the audio role in a `Media` object. The file itself must first be
        uploaded to a URL retrieved

        from the `UploadInfo` endpoint, and the returned object key 

        should be specified in the audio file's `path` field.
      operationId: CreateAudioFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: false
          schema:
            default: audio
            enum:
              - audio
            type: string
        - description: >-
            Insertion index. Must be less than size of current list of audio
            files for the specified `role`. If omitted, the audio file will be
            appended to the end of the list.
          in: query
          name: index
          required: false
          schema:
            minimum: 0
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AudioDefinition'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful creation of audio file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/AuxiliaryFile/{id}:
    delete:
      description: >
        Delete auxiliary file.


        Auxiliary files are stored under the `media_files` field of `Media`
        objects. They are used to 

        relate media metadata to an underlying generic file. One or more files
        can be used to reference

        the attachment role in a `Media` object. The file itself must first be
        uploaded to a URL retrieved

        from the `UploadInfo` endpoint, and the returned object key 

        should be specified in the file's `path` field.
      operationId: DeleteAuxiliaryFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: false
          schema:
            default: attachment
            enum:
              - attachment
            type: string
        - description: >-
            Index of object. Must be less than size of current list of files for
            the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get auxiliary file.


        Auxiliary files are stored under the `media_files` field of `Media`
        objects. They are used to 

        relate media metadata to an underlying generic file. One or more files
        can be used to reference

        the attachment role in a `Media` object. The file itself must first be
        uploaded to a URL retrieved

        from the `UploadInfo` endpoint, and the returned object key 

        should be specified in the file's `path` field.
      operationId: GetAuxiliaryFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: false
          schema:
            default: attachment
            enum:
              - attachment
            type: string
        - description: >-
            Index of object. Must be less than size of current list of files for
            the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuxiliaryFileDefinition'
          description: Successful retrieval of file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update auxiliary file.


        Auxiliary files are stored under the `media_files` field of `Media`
        objects. They are used to 

        relate media metadata to an underlying generic file. One or more files
        can be used to reference

        the attachment role in a `Media` object. The file itself must first be
        uploaded to a URL retrieved

        from the `UploadInfo` endpoint, and the returned object key 

        should be specified in the file's `path` field.
      operationId: UpdateAuxiliaryFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: false
          schema:
            default: attachment
            enum:
              - attachment
            type: string
        - description: >-
            Index of object. Must be less than size of current list of files for
            the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuxiliaryFileDefinition'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/AuxiliaryFiles/{id}:
    get:
      description: >
        Get file list.


        Auxiliary files are stored under the `media_files` field of `Media`
        objects. They are used to 

        relate media metadata to an underlying generic file. One or more files
        can be used to reference

        the attachment role in a `Media` object. The file itself must first be
        uploaded to a URL retrieved

        from the `UploadInfo` endpoint, and the returned object key 

        should be specified in the file's `path` field.
      operationId: GetAuxiliaryFileList
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: false
          schema:
            default: attachment
            enum:
              - attachment
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AuxiliaryFileDefinition'
                type: array
          description: Successful retrieval of file list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create file.


        Auxiliary files are stored under the `media_files` field of `Media`
        objects. They are used to 

        relate media metadata to an underlying generic file. One or more files
        can be used to reference

        the attachment role in a `Media` object. The file itself must first be
        uploaded to a URL retrieved

        from the `UploadInfo` endpoint, and the returned object key 

        should be specified in the file's `path` field.
      operationId: CreateAuxiliaryFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: false
          schema:
            default: attachment
            enum:
              - attachment
            type: string
        - description: >-
            Insertion index. Must be less than size of current list of files for
            the specified `role`. If omitted, the file will be appended to the
            end of the list.
          in: query
          name: index
          required: false
          schema:
            minimum: 0
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuxiliaryFileDefinition'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful creation of file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Bookmark/{id}:
    delete:
      description: >
        Delete bookmark.


        Bookmarks are saved links that can be used to mark videos/frames of
        interest.

        They are scoped to a project and user, so if a user requests Bookmarks
        for a

        project they will only receive the Bookmarks created by them.
      operationId: DeleteBookmark
      parameters:
        - description: A unique integer identifying a bookmark.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of bookmark.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get bookmark.


        Bookmarks are saved links that can be used to mark videos/frames of
        interest.

        They are scoped to a project and user, so if a user requests Bookmarks
        for a

        project they will only receive the Bookmarks created by them.
      operationId: GetBookmark
      parameters:
        - description: A unique integer identifying a bookmark.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bookmark'
          description: Successful retrieval of bookmark.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update bookmark.


        Bookmarks are saved links that can be used to mark videos/frames of
        interest.

        They are scoped to a project and user, so if a user requests Bookmarks
        for a

        project they will only receive the Bookmarks created by them.
      operationId: UpdateBookmark
      parameters:
        - description: A unique integer identifying a bookmark.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookmarkUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of bookmark.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Bookmarks/{project}:
    get:
      description: >
        Get bookmark list.


        Bookmarks are saved links that can be used to mark videos/frames of
        interest.

        They are scoped to a project and user, so if a user requests Bookmarks
        for a

        project they will only receive the Bookmarks created by them.
      operationId: GetBookmarkList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Name of the bookmark to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Bookmark'
                type: array
          description: Successful retrieval of bookmark list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create bookmark.


        Bookmarks are saved links that can be used to mark videos/frames of
        interest.

        They are scoped to a project and user, so if a user requests Bookmarks
        for a

        project they will only receive the Bookmarks created by them.
      operationId: CreateBookmark
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Name of the bookmark to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookmarkSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of bookmark.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Bucket/{id}:
    delete:
      description: >
        Delete bucket.


        Buckets allow users to specify a project-specific S3 bucket to store
        media. Buckets are defined

        at the Organization level. Creating and setting a bucket on a project
        requires administrative

        access within the organization. Once a bucket is defined for a project,
        all media subsequently

        uploaded to that project will be stored in the bucket. Projects may have
        media in multiple

        buckets. For example, if a project is initially created without setting
        a separate bucket

        and media is uploaded, then the bucket field is updated and more media
        is uploaded, that 

        project would then contain some media in the default bucket and some in
        the newly defined bucket.
      operationId: DeleteBucket
      parameters:
        - description: A unique integer identifying a bucket.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of bucket.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get bucket.


        Buckets allow users to specify a project-specific S3 bucket to store
        media. Buckets are defined

        at the Organization level. Creating and setting a bucket on a project
        requires administrative

        access within the organization. Once a bucket is defined for a project,
        all media subsequently

        uploaded to that project will be stored in the bucket. Projects may have
        media in multiple

        buckets. For example, if a project is initially created without setting
        a separate bucket

        and media is uploaded, then the bucket field is updated and more media
        is uploaded, that 

        project would then contain some media in the default bucket and some in
        the newly defined bucket.
      operationId: GetBucket
      parameters:
        - description: A unique integer identifying a bucket.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bucket'
          description: Successful retrieval of bucket.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update bucket.


        Buckets allow users to specify a project-specific S3 bucket to store
        media. Buckets are defined

        at the Organization level. Creating and setting a bucket on a project
        requires administrative

        access within the organization. Once a bucket is defined for a project,
        all media subsequently

        uploaded to that project will be stored in the bucket. Projects may have
        media in multiple

        buckets. For example, if a project is initially created without setting
        a separate bucket

        and media is uploaded, then the bucket field is updated and more media
        is uploaded, that 

        project would then contain some media in the default bucket and some in
        the newly defined bucket.
      operationId: UpdateBucket
      parameters:
        - description: A unique integer identifying a bucket.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              name: my-other-bucket
            schema:
              $ref: '#/components/schemas/BucketUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of bucket.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Buckets/{organization}:
    get:
      description: >
        Get bucket list.


        Buckets allow users to specify a project-specific S3 bucket to store
        media. Buckets are defined

        at the Organization level. Creating and setting a bucket on a project
        requires administrative

        access within the organization. Once a bucket is defined for a project,
        all media subsequently

        uploaded to that project will be stored in the bucket. Projects may have
        media in multiple

        buckets. For example, if a project is initially created without setting
        a separate bucket

        and media is uploaded, then the bucket field is updated and more media
        is uploaded, that 

        project would then contain some media in the default bucket and some in
        the newly defined bucket.
      operationId: GetBucketList
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: organization
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Bucket'
                type: array
          description: Successful retrieval of bucket list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create bucket.


        Buckets allow users to specify a project-specific S3 bucket to store
        media. Buckets are defined

        at the Organization level. Creating and setting a bucket on a project
        requires administrative

        access within the organization. Once a bucket is defined for a project,
        all media subsequently

        uploaded to that project will be stored in the bucket. Projects may have
        media in multiple

        buckets. For example, if a project is initially created without setting
        a separate bucket

        and media is uploaded, then the bucket field is updated and more media
        is uploaded, that 

        project would then contain some media in the default bucket and some in
        the newly defined bucket.
      operationId: CreateBucket
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: organization
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              config:
                aws_access_key_id: ALSDKFOIWEFMLKASDFKJK
                aws_secret_access_key: LSKDJjksldjfwieoJOASDlkalkdk48+JKF7SDLFIh
                endpoint_url: https://s3.us-east-2.amazonaws.com
                region_name: us-east-2
              name: my-bucket
              store_type: AWS
            schema:
              $ref: '#/components/schemas/BucketSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of bucket.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/ChangeLog/{project}:
    get:
      description: >
        Get a list of change logs.



        A ChangeLog is the object containing information about a change applied
        to an object. It includes

        the time, user, and description of the change.
      operationId: GetChangeLogList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Filters ChangeLogs for the given user.
          in: query
          name: user_id
          required: false
          schema:
            type: integer
        - description: Filters ChangeLogs for the given entity.
          in: query
          name: entity_id
          required: false
          schema:
            type: integer
        - description: Filters ChangeLogs for the given entity type.
          in: query
          name: entity_type
          required: false
          schema:
            enum:
              - media
              - localization
              - state
              - leaf
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ChangeLog'
                type: array
          description: Successful retrieval of change log list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/CloneMedia/{project}:
    post:
      description: >
        Clone media list.


        This method copies media to a different project without copying the 

        underlying files. It accepts the same query parameters as a `Media`
        `GET`

        request. All media matching the query will be copied to the project,

        media type, and section in the given request body. Section is passed as

        a section name; if the given section does not exist, it will be created.


        This endpoint will only clone up to 500 media per request. Use the
        `start`,

        `stop`, or `after` parameters to paginate a request.
      operationId: CloneMediaList
      parameters:
        - description: A unique integer identifying the source project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
      requestBody:
        content:
          application/json:
            examples:
              section:
                summary: Clone to section
                value:
                  dest_project: 1
                  dest_section: My section
                  dest_type: 1
            schema:
              $ref: '#/components/schemas/CloneMediaSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateListResponse'
          description: Successful creation of cloned media list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/DownloadInfo/{project}:
    post:
      description: |
        Retrieve URL for one or more file downloads from a given project.
      operationId: GetDownloadInfo
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Number of seconds until URL expires and becomes invalid.
          in: query
          name: expiration
          required: false
          schema:
            default: 86400
            maximum: 86400
            minimum: 1
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DownloadInfoSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/DownloadInfo'
                type: array
          description: Information required for download.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Email/{project}:
    post:
      description: |
        Send an email message using the Tator AWS SES configured credentials.'

        Messages can only be sent to members of the same project.
      operationId: SendEmail
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful completion of email sent.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Favorite/{id}:
    delete:
      description: >
        Delete favorite.


        Favorites are saved annotation values to help speed up annotation. They
        are 

        scoped to a project and user, so if a user requests Favorites for a
        project

        they will only receive the Favorites created by them.
      operationId: DeleteFavorite
      parameters:
        - description: A unique integer identifying a favorite.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of favorite.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get favorite.


        Favorites are saved annotation values to help speed up annotation. They
        are 

        scoped to a project and user, so if a user requests Favorites for a
        project

        they will only receive the Favorites created by them.
      operationId: GetFavorite
      parameters:
        - description: A unique integer identifying a favorite.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Favorite'
          description: Successful retrieval of favorite.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update favorite.


        Favorites are saved annotation values to help speed up annotation. They
        are 

        scoped to a project and user, so if a user requests Favorites for a
        project

        they will only receive the Favorites created by them.
      operationId: UpdateFavorite
      parameters:
        - description: A unique integer identifying a favorite.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FavoriteUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of favorite.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Favorites/{project}:
    get:
      description: >
        Get favorite list.


        Favorites are saved annotation values to help speed up annotation. They
        are 

        scoped to a project and user, so if a user requests Favorites for a
        project

        they will only receive the Favorites created by them.
      operationId: GetFavoriteList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Favorite'
                type: array
          description: Successful retrieval of favorite list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create favorite.


        Favorites are saved annotation values to help speed up annotation. They
        are 

        scoped to a project and user, so if a user requests Favorites for a
        project

        they will only receive the Favorites created by them.
      operationId: CreateFavorite
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FavoriteSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of favorite.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/File/{id}:
    delete:
      description: Delete registered non-media File object
      operationId: DeleteFile
      parameters:
        - description: A unique integer identifying a registered File object.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of registered file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: Get registered non-media File object
      operationId: GetFile
      parameters:
        - description: A unique integer identifying a registered File object.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/File'
          description: Successful retrieval of file object.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: Updated registered non-media File object
      operationId: UpdateFile
      parameters:
        - description: A unique integer identifying a registered File object.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              name: New file name
            schema:
              $ref: '#/components/schemas/FileUpdate'
        required: true
      responses:
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/FileType/{id}:
    delete:
      description: >
        Delete file type.


        A file type is the metadata definition object for non-media FIle
        objects.

        It includes the name, description, and any associated user defined
        attributes.



        Note that this will also delete any files associated with the file type.
      operationId: DeleteFileType
      parameters:
        - description: A unique integer identifying an file type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of file type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >+
        Get file type.


        A file type is the metadata definition object for non-media FIle
        objects.

        It includes the name, description, and any associated user defined
        attributes.


      operationId: GetFileType
      parameters:
        - description: A unique integer identifying an file type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileType'
          description: Successful retrieval of file type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >+
        Update file type.


        A file type is the metadata definition object for non-media FIle
        objects.

        It includes the name, description, and any associated user defined
        attributes.


      operationId: UpdateFileType
      parameters:
        - description: A unique integer identifying an file type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              description: New description
              name: New name
            schema:
              $ref: '#/components/schemas/FileTypeUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of file type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/FileTypes/{project}:
    get:
      description: >
        Get file type list.


        A file type is the metadata definition object for non-media FIle
        objects.

        It includes the name, description, and any associated user defined
        attributes.
      operationId: GetFileTypeList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/FileType'
                type: array
          description: Successful retrieval of file type list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create file type.


        A file type is the metadata definition object for non-media FIle
        objects.

        It includes the name, description, and any associated user defined
        attributes.
      operationId: CreateFileType
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              attribute_types:
                - default: false
                  dtype: bool
                  name: My Boolean
                - default: 0
                  dtype: int
                  maximum: 1
                  minimum: -1
                  name: My Integer
                - default: 0
                  dtype: float
                  maximum: 1
                  minimum: -1
                  name: My Float
                - choices:
                    - a
                    - b
                    - c
                  default: a
                  dtype: enum
                  labels:
                    - a
                    - b
                    - c
                  name: My Enumeration
                - autocomplete:
                    serviceUrl: https://www.example.com/suggestion
                  default: '---'
                  dtype: string
                  name: My String
                - default: '---'
                  dtype: string
                  name: My String (Text Area)
                  style: long_string
                - dtype: datetime
                  name: My Datetime
                  use_current: true
                - default:
                    - -179
                    - 90
                  dtype: geopos
                  name: My Geoposition
              name: My file type
            schema:
              $ref: '#/components/schemas/FileTypeSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of file type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Files/{project}:
    get:
      description: >
        Get non-media associated File object list.


        Non-media assocaited files can be stored within the project along with
        user-defined attributes.

        Unlike temporary files, these are permanent. These do not include applet
        files and algorithm

        workflow files.
      operationId: GetFileList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Unique integer identifying a FileType.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the file.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the File object with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/File'
                type: array
          description: Successful retrieval of list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create generic, non-media associated File object.


        Non-media assocaited files can be stored within the project along with
        user-defined attributes.

        Unlike temporary files, these are permanent. These do not include applet
        files and algorithm

        workflow files.
      operationId: CreateFile
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of registered file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/GetClip/{id}:
    get:
      description: >
        Get video clip.


        Facility to get a clip from the server. Returns a temporary file object
        that expires in 24 hours.
      operationId: GetClip
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Comma-seperated list of frame ranges to capture.
          example:
            - '0:30'
            - '50:90'
          explode: false
          in: query
          name: frame_ranges
          required: true
          schema:
            items:
              type: string
            type: array
        - description: Source resolution to use (default to highest quality)
          in: query
          name: quality
          required: false
          schema:
            minimum: 0
            type: integer
        - description: >-
            Re-encode to a h264 codec (assumes veryfast) profile (>0 = true, 0
            == false)
          in: query
          name: reencode
          required: false
          schema:
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoClip'
          description: Successful retrieval of video clip.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/GetClonedMedia/{id}:
    get:
      description: >

        Get cloned media.


        This method finds and returns the list of media ids that are clones of
        the

        given id.
      operationId: GetClonedMedia
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetClonedMediaResponse'
          description: List of clones' ids of given media id.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/GetFrame/{id}:
    get:
      description: >
        Get frame(s) from a video.


        Facility to get a frame(jpg/png) of a given video frame, returns a
        square tile of

        frames based on the input parameter.
      operationId: GetFrame
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Comma-seperated list of frames to capture.
          example:
            - 0
            - 100
            - 200
          explode: false
          in: query
          name: frames
          required: false
          schema:
            default:
              - 0
            items:
              minimum: 0
              type: integer
            maxLength: 32
            type: array
        - description: wxh, if not supplied is made as squarish as possible.
          in: query
          name: tile
          required: false
          schema:
            type: string
        - description: >-
            w:h:x:y, optionally crop each frame to a given roi in relative
            coordinates.
          in: query
          name: roi
          required: false
          schema:
            type: string
        - description: >-
            Size of each frame image to return in format wxh. This forces
            scaling the image. Applied after ROI crop if any.Default is the size
            of the frame for highest streaming resolution. Example: 1024x768
          in: query
          name: force_scale
          required: false
          schema:
            type: string
        - description: If not tiling, animate each frame at a given fps in a gif.
          in: query
          name: animate
          required: false
          schema:
            maximum: 15
            minimum: 0
            type: integer
        - description: Source resolution to use (default to highest quality)
          in: query
          name: quality
          required: false
          schema:
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            image/*:
              schema:
                format: binary
                type: string
          description: Successful retrieval of frame image.
        '400':
          content:
            image/*:
              schema:
                format: binary
                type: string
          description: Bad request.
        '404':
          content:
            image/*:
              schema:
                format: binary
                type: string
          description: Not found.
      tags:
        - Tator
      x-codeSamples:
        - lang: Python
          source: |-
            # Downloads a graphic and puts it in a persistent path
            tmp_path = api.get_localization_graphic(id)
            os.move(tmp_path, persistent_path)
  /rest/ImageFile/{id}:
    delete:
      description: >
        Delete image file.


        Image files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying image. One or more image files
        can be used to reference

        thumbnails, thumbnail GIFs, or images in a `Media` object. The file
        itself must first be 

        uploaded to a URL retrieved from the `UploadInfo` endpoint, and the
        returned object key 

        should be specified in the image file's `path` field.
      operationId: DeleteImageFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: true
          schema:
            enum:
              - image
              - thumbnail
              - thumbnail_gif
            type: string
        - description: >-
            Index of object. Must be less than size of current list of images
            for the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of image file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get image file.


        Image files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying image. One or more image files
        can be used to reference

        thumbnails, thumbnail GIFs, or images in a `Media` object. The file
        itself must first be 

        uploaded to a URL retrieved from the `UploadInfo` endpoint, and the
        returned object key 

        should be specified in the image file's `path` field.
      operationId: GetImageFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: true
          schema:
            enum:
              - image
              - thumbnail
              - thumbnail_gif
            type: string
        - description: >-
            Index of object. Must be less than size of current list of images
            for the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageDefinition'
          description: Successful retrieval of image file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update image file.


        Image files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying image. One or more image files
        can be used to reference

        thumbnails, thumbnail GIFs, or images in a `Media` object. The file
        itself must first be 

        uploaded to a URL retrieved from the `UploadInfo` endpoint, and the
        returned object key 

        should be specified in the image file's `path` field.
      operationId: UpdateImageFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: true
          schema:
            enum:
              - image
              - thumbnail
              - thumbnail_gif
            type: string
        - description: >-
            Index of object. Must be less than size of current list of images
            for the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageDefinition'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of image file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/ImageFiles/{id}:
    get:
      description: >
        Get image file list.


        Image files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying image. One or more image files
        can be used to reference

        thumbnails, thumbnail GIFs, or images in a `Media` object. The file
        itself must first be 

        uploaded to a URL retrieved from the `UploadInfo` endpoint, and the
        returned object key 

        should be specified in the image file's `path` field.
      operationId: GetImageFileList
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: true
          schema:
            enum:
              - image
              - thumbnail
              - thumbnail_gif
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ImageDefinition'
                type: array
          description: Successful retrieval of image file list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create image file.


        Image files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying image. One or more image files
        can be used to reference

        thumbnails, thumbnail GIFs, or images in a `Media` object. The file
        itself must first be 

        uploaded to a URL retrieved from the `UploadInfo` endpoint, and the
        returned object key 

        should be specified in the image file's `path` field.
      operationId: CreateImageFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: true
          schema:
            enum:
              - image
              - thumbnail
              - thumbnail_gif
            type: string
        - description: >-
            Insertion index. Must be less than size of current list of images
            for the specified `role`. If omitted, the image file will be
            appended to the end of the list.
          in: query
          name: index
          required: false
          schema:
            minimum: 0
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageDefinition'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful creation of image file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Invitation/{id}:
    delete:
      description: >
        Delete invitation.


        Invitations allow users with administrative privileges for an
        organization to

        invite a user to join their organization using their email address. Upon
        creation,

        if automatic emails are configured an email will be sent to the
        specified email

        address. If the user has not yet registered, the email will contain a
        link to

        register using a registration token. If the user has registered, the
        email

        will send a link to accept the invitation. The link is also returned in
        the 

        response of the create method.
      operationId: DeleteInvitation
      parameters:
        - description: A unique integer identifying a invitation.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of invitation.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get invitation.


        Invitations allow users with administrative privileges for an
        organization to

        invite a user to join their organization using their email address. Upon
        creation,

        if automatic emails are configured an email will be sent to the
        specified email

        address. If the user has not yet registered, the email will contain a
        link to

        register using a registration token. If the user has registered, the
        email

        will send a link to accept the invitation. The link is also returned in
        the 

        response of the create method.
      operationId: GetInvitation
      parameters:
        - description: A unique integer identifying a invitation.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invitation'
          description: Successful retrieval of invitation.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update invitation.


        Invitations allow users with administrative privileges for an
        organization to

        invite a user to join their organization using their email address. Upon
        creation,

        if automatic emails are configured an email will be sent to the
        specified email

        address. If the user has not yet registered, the email will contain a
        link to

        register using a registration token. If the user has registered, the
        email

        will send a link to accept the invitation. The link is also returned in
        the 

        response of the create method.
      operationId: UpdateInvitation
      parameters:
        - description: A unique integer identifying a invitation.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvitationUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of invitation.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Invitations/{organization}:
    get:
      description: >
        Get invitation list.


        Invitations allow users with administrative privileges for an
        organization to

        invite a user to join their organization using their email address. Upon
        creation,

        if automatic emails are configured an email will be sent to the
        specified email

        address. If the user has not yet registered, the email will contain a
        link to

        register using a registration token. If the user has registered, the
        email

        will send a link to accept the invitation. The link is also returned in
        the 

        response of the create method.
      operationId: GetInvitationList
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: organization
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Invitation'
                type: array
          description: Successful retrieval of invitation list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create invitation.


        Invitations allow users with administrative privileges for an
        organization to

        invite a user to join their organization using their email address. Upon
        creation,

        if automatic emails are configured an email will be sent to the
        specified email

        address. If the user has not yet registered, the email will contain a
        link to

        register using a registration token. If the user has registered, the
        email

        will send a link to accept the invitation. The link is also returned in
        the 

        response of the create method.
      operationId: CreateInvitation
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: organization
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvitationSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of invitation.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Job/{uid}:
    delete:
      description: >
        Delete background job.


        Algorithms create argo workflows that are annotated with two

        uuid1 strings, one identifying the run and the other identifying the
        group.

        Jobs that are submitted together have the same group id, but each
        workflow

        has a unique run id.



        This method allows the user to cancel a job using the `uid` returned

        by `Job` create method.
      operationId: DeleteJob
      parameters:
        - description: A uuid1 string identifying to single Job.
          in: path
          name: uid
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of job.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get background job.


        Algorithms create argo workflows that are annotated with two

        uuid1 strings, one identifying the run and the other identifying the
        group.

        Jobs that are submitted together have the same group id, but each
        workflow

        has a unique run id.



        This method allows the user to get a job's status using the `uid`
        returned

        by `Job` create method.
      operationId: GetJob
      parameters:
        - description: A uuid1 string identifying to single Job.
          in: path
          name: uid
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Job'
          description: Successful retrieval of job.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/JobCluster/{id}:
    delete:
      description: Delete registered job cluster
      operationId: DeleteJobCluster
      parameters:
        - description: A unique integer identifying a registered job cluster.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of registered job cluster.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: Get registered job cluster
      operationId: GetJobCluster
      parameters:
        - description: A unique integer identifying a registered job cluster.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobCluster'
          description: Successful retrieval of job cluster.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: Updated registered job cluster
      operationId: UpdateJobCluster
      parameters:
        - description: A unique integer identifying a registered job cluster.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              host: New hostname
              name: New unique name
            schema:
              $ref: '#/components/schemas/JobClusterSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of job cluster.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/JobClusters/{id}:
    get:
      description: |

        Get job clusters.
      operationId: GetJobClusterList
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/JobCluster'
                type: array
          description: Successful retrieval of registered job clusters.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >

        Create a job cluster.


        This endpoint replicates the job cluster creation through the admin
        portal.
      operationId: CreateJobCluster
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobClusterSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of registered job cluster.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Jobs/{project}:
    delete:
      description: >
        Delete background job list.


        Algorithms create argo workflows that are annotated with two

        uuid1 strings, one identifying the run and the other identifying the
        group.

        Jobs that are submitted together have the same group id, but each
        workflow

        has a unique run id.



        This method allows the user to batch delete a list of jobs.
      operationId: DeleteJobList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: A UUID string identifying a group of jobs.
          in: query
          name: gid
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of job list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get background job list.


        Algorithms create argo workflows that are annotated with two

        uuid1 strings, one identifying the run and the other identifying the
        group.

        Jobs that are submitted together have the same group id, but each
        workflow

        has a unique run id.



        This method allows the user to status for a list of jobs in a project.
      operationId: GetJobList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: A UUID string identifying a group of jobs.
          in: query
          name: gid
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Job'
                type: array
          description: Successful retrieval of job list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Launch a registered algorithm.


        This will create one or more Argo workflows that execute the named
        algorithm

        registration. To get a list of available algorithms, use the
        `Algorithms` endpoint.

        A media list will be submitted for processing using either a query
        string or 

        a list of media IDs. If neither are included, the algorithm will be
        launched on

        all media in the project. 


        Media is divided into batches based on the `files_per_job` field of the 

        `Algorithm` object. One batch is submitted to each Argo workflow.


        Submitted algorithm jobs may be cancelled via the `Job` or `JobGroup`
        endpoints.
      operationId: CreateJobList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            examples:
              by_ids:
                summary: Launch by media ids
                value:
                  algorithm_name: My Algorithm
                  media_ids:
                    - 1
                    - 5
                    - 10
              by_query:
                summary: Launch by query
                value:
                  algorithm_name: My Algorithm
                  media_query: '?project=1&type=2'
            schema:
              $ref: '#/components/schemas/JobSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateListResponse'
          description: Successful launch of algorithm.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Leaf/{id}:
    delete:
      description: >
        Delete leaf.


        Leaves are used to define label hierarchies that can be used for
        autocompletion

        of string attribute types. Leaves are a type of entity in Tator, meaning
        they

        can be described by user-defined attributes.
      operationId: DeleteLeaf
      parameters:
        - description: A unique integer identifying a leaf.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Successful deletion of leaf.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get leaf.


        Leaves are used to define label hierarchies that can be used for
        autocompletion

        of string attribute types. Leaves are a type of entity in Tator, meaning
        they

        can be described by user-defined attributes.
      operationId: GetLeaf
      parameters:
        - description: A unique integer identifying a leaf.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Leaf'
          description: Successful retrieval of leaf.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update leaf.


        Leaves are used to define label hierarchies that can be used for
        autocompletion

        of string attribute types. Leaves are a type of entity in Tator, meaning
        they

        can be described by user-defined attributes.
      operationId: UpdateLeaf
      parameters:
        - description: A unique integer identifying a leaf.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeafUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of leaf.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/LeafCount/{project}:
    get:
      description: >
        Get leaf list count.


        This endpoint accepts the same query parameters as a GET or PUT request
        to the `Leaves`

        endpoint, but only returns the number of leaves.
      operationId: GetLeafCount
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Unique integer identifying a leaf type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the leaf element.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Get a specific tree depth. Root node depth is 0.
          in: query
          name: depth
          required: false
          schema:
            type: integer
        - description: Comma-separated list of leaf IDs.
          in: query
          name: leaf_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                minimum: 0
                type: integer
          description: Number of leaves in the list corresponding to query.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    put:
      description: >
        Get leaf list count by ID.


        This endpoint accepts the same query parameters as a GET or PUT request
        to the `Leaves`

        endpoint, but only returns the number of leaves.
      operationId: GetLeafCountById
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Unique integer identifying a leaf type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the leaf element.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Get a specific tree depth. Root node depth is 0.
          in: query
          name: depth
          required: false
          schema:
            type: integer
        - description: Comma-separated list of leaf IDs.
          in: query
          name: leaf_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeafIdQuery'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                minimum: 0
                type: integer
          description: Number of leaves in the list corresponding to query.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/LeafType/{id}:
    delete:
      description: |
        Delete leaf type.

        A leaf type is the metadata definition object for a leaf. It includes
        name, description, and may have any number of user-defined attribute
        types associated with it.
      operationId: DeleteLeafType
      parameters:
        - description: A unique integer identifying an leaf type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of leaf type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: |
        Get leaf type.

        A leaf type is the metadata definition object for a leaf. It includes
        name, description, and may have any number of user-defined attribute
        types associated with it.
      operationId: GetLeafType
      parameters:
        - description: A unique integer identifying an leaf type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeafType'
          description: Successful retrieval of leaf type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: |
        Update leaf type.

        A leaf type is the metadata definition object for a leaf. It includes
        name, description, and may have any number of user-defined attribute
        types associated with it.
      operationId: UpdateLeafType
      parameters:
        - description: A unique integer identifying an leaf type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              description: New description
              name: New name
            schema:
              $ref: '#/components/schemas/LeafTypeUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of leaf type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/LeafTypes/{project}:
    get:
      description: |
        Get leaf type list.

        A leaf type is the metadata definition object for a leaf. It includes
        name, description, and may have any number of user-defined attribute
        types associated with it.
      operationId: GetLeafTypeList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/LeafType'
                type: array
          description: Successful retrieval of leaf type list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: |
        Create leaf type.

        A leaf type is the metadata definition object for a leaf. It includes
        name, description, and may have any number of user-defined attribute
        types associated with it.
      operationId: CreateLeafType
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              attribute_types:
                - default: false
                  dtype: bool
                  name: My Boolean
                - default: 0
                  dtype: int
                  maximum: 1
                  minimum: -1
                  name: My Integer
                - default: 0
                  dtype: float
                  maximum: 1
                  minimum: -1
                  name: My Float
                - choices:
                    - a
                    - b
                    - c
                  default: a
                  dtype: enum
                  labels:
                    - a
                    - b
                    - c
                  name: My Enumeration
                - autocomplete:
                    serviceUrl: https://www.example.com/suggestion
                  default: '---'
                  dtype: string
                  name: My String
                - default: '---'
                  dtype: string
                  name: My String (Text Area)
                  style: long_string
                - dtype: datetime
                  name: My Datetime
                  use_current: true
                - default:
                    - -179
                    - 90
                  dtype: geopos
                  name: My Geoposition
              name: My leaf type
            schema:
              $ref: '#/components/schemas/LeafTypeSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of leaf type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Leaves/Suggestion/{ancestor}/{project}:
    get:
      description: >
        Get list of autocomplete suggestions.


        This endpoint is compatible with [devbridge suggestion
        format](https://github.com/kraaden/autocomplete)

        . It performs a glob search on leaf objects in the project.
      operationId: LeafSuggestion
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: >-
            Get descendents of a leaf element (inclusive), by path (i.e.
            ITIS.Animalia).
          in: path
          name: ancestor
          required: true
          schema:
            type: string
        - description: >-
            Integer specifying level of results that may be returned. For
            example, 2 refers to grandchildren of the level specified by the
            `ancestor` parameter.
          in: query
          name: min_level
          required: false
          schema:
            type: integer
        - description: String to search for matching names.
          in: query
          name: query
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/LeafSuggestion'
                type: array
          description: Successful retrieval of suggestions.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Leaves/{project}:
    delete:
      description: >
        Delete leaf list.


        Leaves are used to define label hierarchies that can be used for
        autocompletion

        of string attribute types. Leaves are a type of entity in Tator, meaning
        they

        can be described by user-defined attributes.



        This method performs a bulk delete on all leaves matching a query. It
        is 

        recommended to use a GET request first to check what is being deleted.
      operationId: DeleteLeafList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Unique integer identifying a leaf type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the leaf element.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Get a specific tree depth. Root node depth is 0.
          in: query
          name: depth
          required: false
          schema:
            type: integer
        - description: Comma-separated list of leaf IDs.
          in: query
          name: leaf_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeafIdQuery'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of leaf list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >+
        Get leaf list.


        Leaves are used to define label hierarchies that can be used for
        autocompletion

        of string attribute types. Leaves are a type of entity in Tator, meaning
        they

        can be described by user-defined attributes.


      operationId: GetLeafList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Unique integer identifying a leaf type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the leaf element.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Get a specific tree depth. Root node depth is 0.
          in: query
          name: depth
          required: false
          schema:
            type: integer
        - description: Comma-separated list of leaf IDs.
          in: query
          name: leaf_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Leaf'
                type: array
          description: Successful retrieval of leaf list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update leaf list.


        Leaves are used to define label hierarchies that can be used for
        autocompletion

        of string attribute types. Leaves are a type of entity in Tator, meaning
        they

        can be described by user-defined attributes.



        This method does a bulk update on all leaves matching a query. Only 

        user-defined attributes may be bulk updated.
      operationId: UpdateLeafList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Unique integer identifying a leaf type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the leaf element.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Get a specific tree depth. Root node depth is 0.
          in: query
          name: depth
          required: false
          schema:
            type: integer
        - description: Comma-separated list of leaf IDs.
          in: query
          name: leaf_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeafBulkUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of leaf list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create leaf list.


        Leaves are used to define label hierarchies that can be used for
        autocompletion

        of string attribute types. Leaves are a type of entity in Tator, meaning
        they

        can be described by user-defined attributes.



        This method does a bulk create on a list of
        :class:`tator.models.LeafSpec` objects; it

        also accepts a single instance. A maximum of 500 leaves may be created
        in one request.
      operationId: CreateLeafList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - items:
                    $ref: '#/components/schemas/LeafSpec'
                  maxItems: 500
                  type: array
                - $ref: '#/components/schemas/LeafSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateListResponse'
          description: Successful creation of leaf.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    put:
      description: >+
        Get leaf list by ID.


        Leaves are used to define label hierarchies that can be used for
        autocompletion

        of string attribute types. Leaves are a type of entity in Tator, meaning
        they

        can be described by user-defined attributes.


      operationId: GetLeafListById
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Unique integer identifying a leaf type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the leaf element.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Get a specific tree depth. Root node depth is 0.
          in: query
          name: depth
          required: false
          schema:
            type: integer
        - description: Comma-separated list of leaf IDs.
          in: query
          name: leaf_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeafIdQuery'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Leaf'
                type: array
          description: Successful retrieval of leaf list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Localization/{id}:
    delete:
      description: >
        Delete localization.


        Localizations are shape annotations drawn on a video or image. Available
        shapes (`dtype`) are 

        box, line, or dot. Each shape is parameterized by a different subset of
        data members:

        - `box` uses `x`, `y`, `width`, `height`.

        - `line` uses `x`, `y`, `u`, `v`.

        - `dot` uses `x` and `y`.

        - `poly` uses `points`.


        Geometry members may be left null when creating a localization, in which
        case the shapes may be 

        drawn later using the redraw capability in the web UI. Localizations are
        a type of entity in Tator,

        meaning they can be described by user defined attributes.
      operationId: DeleteLocalization
      parameters:
        - description: A unique integer identifying a localization.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocalizationDelete'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of localization.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get localization.


        Localizations are shape annotations drawn on a video or image. Available
        shapes (`dtype`) are 

        box, line, or dot. Each shape is parameterized by a different subset of
        data members:

        - `box` uses `x`, `y`, `width`, `height`.

        - `line` uses `x`, `y`, `u`, `v`.

        - `dot` uses `x` and `y`.

        - `poly` uses `points`.


        Geometry members may be left null when creating a localization, in which
        case the shapes may be 

        drawn later using the redraw capability in the web UI. Localizations are
        a type of entity in Tator,

        meaning they can be described by user defined attributes.
      operationId: GetLocalization
      parameters:
        - description: A unique integer identifying a localization.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Localization'
          description: Successful retrieval of localization.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update localization.


        Localizations are shape annotations drawn on a video or image. Available
        shapes (`dtype`) are 

        box, line, or dot. Each shape is parameterized by a different subset of
        data members:

        - `box` uses `x`, `y`, `width`, `height`.

        - `line` uses `x`, `y`, `u`, `v`.

        - `dot` uses `x` and `y`.

        - `poly` uses `points`.


        Geometry members may be left null when creating a localization, in which
        case the shapes may be 

        drawn later using the redraw capability in the web UI. Localizations are
        a type of entity in Tator,

        meaning they can be described by user defined attributes.
      operationId: UpdateLocalization
      parameters:
        - description: A unique integer identifying a localization.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              height: 0.25
              width: 0.25
              x: 0.25
              'y': 0.25
            schema:
              $ref: '#/components/schemas/LocalizationUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of localization.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/LocalizationCount/{project}:
    get:
      description: >
        Get localization list count.


        This endpoint accepts the same query parameters as a GET or PUT request
        to the `Localizations`

        endpoint, but only returns the number of localizations.
      operationId: GetLocalizationCount
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: Frame number of this localization if it is in a video.
          in: query
          name: frame
          required: false
          schema:
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                minimum: 0
                type: integer
          description: Number of localizations in the list corresponding to query.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    put:
      description: >
        Get localization list count by ID.


        This endpoint accepts the same query parameters as a GET or PUT request
        to the `Localizations`

        endpoint, but only returns the number of localizations.
      operationId: GetLocalizationCountById
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: Frame number of this localization if it is in a video.
          in: query
          name: frame
          required: false
          schema:
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocalizationIdQuery'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                minimum: 0
                type: integer
          description: Number of localizations in the list corresponding to query.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/LocalizationGraphic/{id}:
    get:
      description: |
        Get localization graphic from a media object.
      operationId: GetLocalizationGraphic
      parameters:
        - description: A unique integer identifying a localization.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: >-
            Size of final image to return. This forces scaling the image.
            Default is the localization size and margins define the image size.
            Example: 100x100 
          in: query
          name: force_scale
          required: false
          schema:
            type: string
        - description: >-
            Use default margins for localization types.  Default margins (x,y
            pixels) - dot: (10,10) line:  (10,10) box: (0,0) 
          in: query
          name: use_default_margins
          required: false
          schema:
            default: true
            type: boolean
        - description: >-
            Pixel margin to apply to the height of the localization when
            generating the image. Valid only if use_default_margins is false. 
          in: query
          name: margin_x
          required: false
          schema:
            type: integer
        - description: >-
            Pixel margin to apply to the width of the localization when
            generating the image. Valid only if use_default_margins is false. 
          in: query
          name: margin_y
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            image/*:
              schema:
                format: binary
                type: string
          description: Successful retrieval of localization graphic.
        '400':
          content:
            image/*:
              schema:
                format: binary
                type: string
          description: Bad request.
        '404':
          content:
            image/*:
              schema:
                format: binary
                type: string
          description: Not found.
      tags:
        - Tator
  /rest/LocalizationType/{id}:
    delete:
      description: >
        Delete localization type.


        A localization type is the metadata definition object for a
        localization. It includes

        shape, name, description, and may have any number of user-defined
        attribute

        types associated with it.



        Note that this will also delete any localizations associated with

        the localization type.
      operationId: DeleteLocalizationType
      parameters:
        - description: A unique integer identifying a localization type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of localization type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >+
        Get localization type.


        A localization type is the metadata definition object for a
        localization. It includes

        shape, name, description, and may have any number of user-defined
        attribute

        types associated with it.


      operationId: GetLocalizationType
      parameters:
        - description: A unique integer identifying a localization type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalizationType'
          description: Successful retrieval of localization type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >+
        Update localization type.


        A localization type is the metadata definition object for a
        localization. It includes

        shape, name, description, and may have any number of user-defined
        attribute

        types associated with it.


      operationId: UpdateLocalizationType
      parameters:
        - description: A unique integer identifying a localization type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              description: New description
              name: New name
            schema:
              $ref: '#/components/schemas/LocalizationTypeUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of localization type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/LocalizationTypes/{project}:
    get:
      description: >
        Get localization type list.


        A localization type is the metadata definition object for a
        localization. It includes

        shape, name, description, and may have any number of user-defined
        attribute

        types associated with it.
      operationId: GetLocalizationTypeList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of unique integers identifying a media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Deprecated. Use `LocalizationType` endpoint to retrieve individual
            localization type by ID.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/LocalizationType'
                type: array
          description: Successful retrieval of localization type list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create localization type.


        A localization type is the metadata definition object for a
        localization. It includes

        shape, name, description, and may have any number of user-defined
        attribute

        types associated with it.
      operationId: CreateLocalizationType
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              attribute_types:
                - default: false
                  dtype: bool
                  name: My Boolean
                - default: 0
                  dtype: int
                  maximum: 1
                  minimum: -1
                  name: My Integer
                - default: 0
                  dtype: float
                  maximum: 1
                  minimum: -1
                  name: My Float
                - choices:
                    - a
                    - b
                    - c
                  default: a
                  dtype: enum
                  labels:
                    - a
                    - b
                    - c
                  name: My Enumeration
                - autocomplete:
                    serviceUrl: https://www.example.com/suggestion
                  default: '---'
                  dtype: string
                  name: My String
                - default: '---'
                  dtype: string
                  name: My String (Text Area)
                  style: long_string
                - dtype: datetime
                  name: My Datetime
                  use_current: true
                - default:
                    - -179
                    - 90
                  dtype: geopos
                  name: My Geoposition
              dtype: box
              media_types:
                - 1
              name: My localization type
            schema:
              $ref: '#/components/schemas/LocalizationTypeSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of localization type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Localizations/{project}:
    delete:
      description: >
        Delete localiazation list.


        Localizations are shape annotations drawn on a video or image. Available
        shapes (`dtype`) are 

        box, line, or dot. Each shape is parameterized by a different subset of
        data members:

        - `box` uses `x`, `y`, `width`, `height`.

        - `line` uses `x`, `y`, `u`, `v`.

        - `dot` uses `x` and `y`.

        - `poly` uses `points`.


        Geometry members may be left null when creating a localization, in which
        case the shapes may be 

        drawn later using the redraw capability in the web UI. Localizations are
        a type of entity in Tator,

        meaning they can be described by user defined attributes.



        This method performs a bulk delete on all localizations matching a
        query. It is 

        recommended to use a GET request first to check what is being deleted.
      operationId: DeleteLocalizationList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: Frame number of this localization if it is in a video.
          in: query
          name: frame
          required: false
          schema:
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocalizationBulkDelete'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of localization list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >+
        Get localization list.


        Localizations are shape annotations drawn on a video or image. Available
        shapes (`dtype`) are 

        box, line, or dot. Each shape is parameterized by a different subset of
        data members:

        - `box` uses `x`, `y`, `width`, `height`.

        - `line` uses `x`, `y`, `u`, `v`.

        - `dot` uses `x` and `y`.

        - `poly` uses `points`.


        Geometry members may be left null when creating a localization, in which
        case the shapes may be 

        drawn later using the redraw capability in the web UI. Localizations are
        a type of entity in Tator,

        meaning they can be described by user defined attributes.


      operationId: GetLocalizationList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: Frame number of this localization if it is in a video.
          in: query
          name: frame
          required: false
          schema:
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Localization'
                type: array
          description: Successful retrieval of localization list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update localiazation list.


        Localizations are shape annotations drawn on a video or image. Available
        shapes (`dtype`) are 

        box, line, or dot. Each shape is parameterized by a different subset of
        data members:

        - `box` uses `x`, `y`, `width`, `height`.

        - `line` uses `x`, `y`, `u`, `v`.

        - `dot` uses `x` and `y`.

        - `poly` uses `points`.


        Geometry members may be left null when creating a localization, in which
        case the shapes may be 

        drawn later using the redraw capability in the web UI. Localizations are
        a type of entity in Tator,

        meaning they can be described by user defined attributes.



        This method does a bulk update on all localizations matching a query.
        Only 

        user-defined attributes may be bulk updated.
      operationId: UpdateLocalizationList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: Frame number of this localization if it is in a video.
          in: query
          name: frame
          required: false
          schema:
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            examples:
              single:
                summary: Update Species attribute of many localizations
                value:
                  attributes:
                    Species: Tuna
            schema:
              $ref: '#/components/schemas/LocalizationBulkUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of localization list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create localiazation list.


        Localizations are shape annotations drawn on a video or image. Available
        shapes (`dtype`) are 

        box, line, or dot. Each shape is parameterized by a different subset of
        data members:

        - `box` uses `x`, `y`, `width`, `height`.

        - `line` uses `x`, `y`, `u`, `v`.

        - `dot` uses `x` and `y`.

        - `poly` uses `points`.


        Geometry members may be left null when creating a localization, in which
        case the shapes may be 

        drawn later using the redraw capability in the web UI. Localizations are
        a type of entity in Tator,

        meaning they can be described by user defined attributes.



        This method does a bulk create on a list of
        :class:`tator.models.LocalizationSpec`

        objects; it also accepts a single instance. A maximum of 500
        localizations may be

        created in one request.
      operationId: CreateLocalizationList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            examples:
              box:
                summary: Single box localization
                value:
                  My First Attribute: value1
                  My Second Attribute: value2
                  frame: 1000
                  height: 0.4
                  media_id: 1
                  type: 1
                  width: 0.3
                  x: 0.1
                  'y': 0.2
              boxes:
                summary: Many box localizations
                value:
                  - My First Attribute: value1
                    My Second Attribute: value2
                    frame: 100
                    height: 0.4
                    media_id: 1
                    type: 1
                    width: 0.3
                    x: 0.1
                    'y': 0.2
                  - My First Attribute: value1
                    My Second Attribute: value2
                    frame: 1000
                    height: 0.4
                    media_id: 1
                    type: 1
                    width: 0.3
                    x: 0.1
                    'y': 0.2
              dot:
                summary: Single dot localization
                value:
                  - My First Attribute: value1
                    My Second Attribute: value2
                    frame: 1000
                    media_id: 1
                    type: 1
                    x: 0.1
                    'y': 0.2
              dots:
                summary: Many dot localizations
                value:
                  - My First Attribute: value1
                    My Second Attribute: value2
                    frame: 100
                    media_id: 1
                    type: 1
                    x: 0.1
                    'y': 0.2
                  - My First Attribute: value1
                    My Second Attribute: value2
                    frame: 1000
                    x: 0.1
                    'y': 0.2
              line:
                summary: Single line localization
                value:
                  - My First Attribute: value1
                    My Second Attribute: value2
                    frame: 1000
                    media_id: 1
                    type: 2
                    u: 0.3
                    v: 0.4
                    x: 0.1
                    'y': 0.2
              lines:
                summary: Many line localizations
                value:
                  - My First Attribute: value1
                    My Second Attribute: value2
                    frame: 100
                    media_id: 1
                    type: 2
                    u: 0.3
                    v: 0.4
                    x: 0.1
                    'y': 0.2
                  - My First Attribute: value1
                    My Second Attribute: value2
                    frame: 1000
                    u: 0.3
                    v: 0.4
                    x: 0.1
                    'y': 0.2
              poly:
                summary: Single poly localization
                value:
                  - My First Attribute: value1
                    My Second Attribute: value2
                    frame: 1000
                    media_id: 1
                    points:
                      - - 0.1
                        - 0.1
                      - - 0.2
                        - 0.1
                      - - 0.2
                        - 0.2
                      - - 0.1
                        - 0.1
                    type: 1
              polys:
                summary: Many poly localizations
                value:
                  - My First Attribute: value1
                    My Second Attribute: value2
                    frame: 100
                    media_id: 1
                    points:
                      - - 0.1
                        - 0.1
                      - - 0.2
                        - 0.1
                      - - 0.2
                        - 0.2
                      - - 0.1
                        - 0.1
                    type: 1
                  - My First Attribute: value1
                    My Second Attribute: value2
                    frame: 1000
                    points:
                      - - 0.1
                        - 0.1
                      - - 0.2
                        - 0.1
                      - - 0.2
                        - 0.2
                      - - 0.1
                        - 0.1
            schema:
              oneOf:
                - items:
                    $ref: '#/components/schemas/LocalizationSpec'
                  maxItems: 500
                  type: array
                - $ref: '#/components/schemas/LocalizationSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateListResponse'
          description: Successful creation of localization(s).
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    put:
      description: >+
        Get localization list by ID.


        Localizations are shape annotations drawn on a video or image. Available
        shapes (`dtype`) are 

        box, line, or dot. Each shape is parameterized by a different subset of
        data members:

        - `box` uses `x`, `y`, `width`, `height`.

        - `line` uses `x`, `y`, `u`, `v`.

        - `dot` uses `x` and `y`.

        - `poly` uses `points`.


        Geometry members may be left null when creating a localization, in which
        case the shapes may be 

        drawn later using the redraw capability in the web UI. Localizations are
        a type of entity in Tator,

        meaning they can be described by user defined attributes.


      operationId: GetLocalizationListById
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: Frame number of this localization if it is in a video.
          in: query
          name: frame
          required: false
          schema:
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocalizationIdQuery'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Localization'
                type: array
          description: Successful retrieval of localization list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Media/{id}:
    delete:
      description: |+
        Delete media.

        A media may be an image or a video. Media are a type of entity in Tator,
        meaning they can be described by user defined attributes.


      operationId: DeleteMedia
      parameters:
        - description: A unique integer identifying a media.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of media.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: |+
        Get media.

        A media may be an image or a video. Media are a type of entity in Tator,
        meaning they can be described by user defined attributes.


      operationId: GetMedia
      parameters:
        - description: A unique integer identifying a media.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: >-
            If given, all `path` fields in `media_files` will be replaced with
            presigned URLs that can be downloaded without authentication. The
            value is the expiration time of the URLs in seconds.
          in: query
          name: presigned
          required: false
          schema:
            maximum: 86400
            minimum: 1
            type: integer
        - description: >-
            If `True`, and `presigned` is specified, a new presigned url will be
            generated.
          in: query
          name: no_cache
          required: false
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Media'
          description: Successful retrieval of media.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: |+
        Update media.

        A media may be an image or a video. Media are a type of entity in Tator,
        meaning they can be described by user defined attributes.


      operationId: UpdateMedia
      parameters:
        - description: A unique integer identifying a media.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of media.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/MediaCount/{project}:
    get:
      description: >
        Get media list count.


        This endpoint accepts the same query parameters as a GET or PUT request
        to the 

        `Medias` endpoint, but only returns the number of media.
      operationId: GetMediaCount
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                minimum: 0
                type: integer
          description: Number of media in the list corresponding to query.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    put:
      description: >
        Get media list count by ID.


        This endpoint accepts the same query parameters as a GET or PUT request
        to the 

        `Medias` endpoint, but only returns the number of media.
      operationId: GetMediaCountById
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaIdQuery'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                minimum: 0
                type: integer
          description: Number of media in the list corresponding to query.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/MediaNext/{id}:
    get:
      description: >
        Retrieve ID of next media in a media list.


        This endpoint accepts the same query parameters as a GET request to the
        `Medias` endpoint,

        but only returns the next media ID from the media passed as a path
        parameter. This allows

        iteration through a media list without serializing the entire list,
        which may be large.
      operationId: GetMediaNext
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaNext'
          description: ID of next media in the list corresponding to query.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/MediaPrev/{id}:
    get:
      description: >
        Retrieve ID of previous media in a media list.


        This endpoint accepts the same query parameters as a GET request to the
        `Medias` endpoint,

        but only returns the previous media ID from the media passed as a path
        parameter. This 

        allows iteration through a media list without serializing the entire
        list, which may be 

        large.
      operationId: GetMediaPrev
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaPrev'
          description: ID of previous media in the list corresponding to query.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/MediaStats/{project}:
    get:
      description: >
        Retrieve count, download size, total size, and duration of a media list.


        This endpoint accepts the same query parameters as a GET request to the
        `Medias` endpoint,

        but only returns statistics about the media.
      operationId: GetMediaStats
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaStats'
          description: Statistics corresponding to media list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/MediaType/{id}:
    delete:
      description: >
        Delete media type.


        A media type is the metadata definition object for media. It includes
        file format,

        name, description, and may have any number of user defined attribute

        types associated with it.



        Note that this will also delete any media associated with the media
        type.
      operationId: DeleteMediaType
      parameters:
        - description: A unique integer identifying an media type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of media type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >+
        Get media type.


        A media type is the metadata definition object for media. It includes
        file format,

        name, description, and may have any number of user defined attribute

        types associated with it.


      operationId: GetMediaType
      parameters:
        - description: A unique integer identifying an media type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaType'
          description: Successful retrieval of media type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >+
        Update media type.


        A media type is the metadata definition object for media. It includes
        file format,

        name, description, and may have any number of user defined attribute

        types associated with it.


      operationId: UpdateMediaType
      parameters:
        - description: A unique integer identifying an media type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              description: New description
              name: New name
            schema:
              $ref: '#/components/schemas/MediaTypeUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of media type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/MediaTypes/{project}:
    get:
      description: >
        Get media type list.


        A media type is the metadata definition object for media. It includes
        file format,

        name, description, and may have any number of user defined attribute

        types associated with it.
      operationId: GetMediaTypeList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MediaType'
                type: array
          description: Successful retrieval of media type list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create media type.


        A media type is the metadata definition object for media. It includes
        file format,

        name, description, and may have any number of user defined attribute

        types associated with it.
      operationId: CreateMediaType
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              attribute_types:
                - default: false
                  dtype: bool
                  name: My Boolean
                - default: 0
                  dtype: int
                  maximum: 1
                  minimum: -1
                  name: My Integer
                - default: 0
                  dtype: float
                  maximum: 1
                  minimum: -1
                  name: My Float
                - choices:
                    - a
                    - b
                    - c
                  default: a
                  dtype: enum
                  labels:
                    - a
                    - b
                    - c
                  name: My Enumeration
                - autocomplete:
                    serviceUrl: https://www.example.com/suggestion
                  default: '---'
                  dtype: string
                  name: My String
                - default: '---'
                  dtype: string
                  name: My String (Text Area)
                  style: long_string
                - dtype: datetime
                  name: My Datetime
                  use_current: true
                - default:
                    - -179
                    - 90
                  dtype: geopos
                  name: My Geoposition
              dtype: video
              name: My media type
            schema:
              $ref: '#/components/schemas/MediaTypeSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of media type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Medias/{project}:
    delete:
      description: |
        Delete media list.

        A media may be an image or a video. Media are a type of entity in Tator,
        meaning they can be described by user defined attributes.


        This method performs a bulk delete on all media matching a query. It is 
        recommended to use a GET request first to check what is being deleted.
      operationId: DeleteMediaList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaIdQuery'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of media list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: |+
        Get media list.

        A media may be an image or a video. Media are a type of entity in Tator,
        meaning they can be described by user defined attributes.


      operationId: GetMediaList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
        - description: >-
            If given, all `path` fields in `media_files` will be replaced with
            presigned URLs that can be downloaded without authentication. The
            value is the expiration time of the URLs in seconds.
          in: query
          name: presigned
          required: false
          schema:
            maximum: 86400
            minimum: 1
            type: integer
        - description: >-
            If `True`, and `presigned` is specified, a new presigned url will be
            generated.
          in: query
          name: no_cache
          required: false
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Media'
                type: array
          description: Successful retrieval of media list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: |
        Update media list.

        A media may be an image or a video. Media are a type of entity in Tator,
        meaning they can be described by user defined attributes.


        This method does a bulk update on all media matching a query. Only 
        user-defined attributes may be bulk updated.
      operationId: UpdateMediaList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            examples:
              single:
                summary: Update Species attribute of many images
                value:
                  attributes:
                    Species: Tuna
            schema:
              $ref: '#/components/schemas/MediaBulkUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of media list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create media list.


        A media may be an image or a video. Media are a type of entity in Tator,

        meaning they can be described by user defined attributes.



        This method creates a `Media` object in the database for each

        :class:`tator.models.MediaSpec` in `body`. `body` must be a list or
        single instance of

        :class:`tator.models.MediaSpec`. For images, the media must already be
        uploaded and an

        upload URL must be provided, as well as the group and job IDs associated
        with the

        upload. For videos, it is recommended to use the `Transcode` endpoint,
        which will create

        the media object itself. This method is only needed for local
        transcodes. In that case,

        it will create an empty Media object; thumbnails, streaming, and
        archival videos must be

        subsequently uploaded and saved via the `Media` PATCH method.
      operationId: CreateMediaList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - items:
                    $ref: '#/components/schemas/MediaSpec'
                  maxItems: 500
                  type: array
                - $ref: '#/components/schemas/MediaSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CreateListResponse'
                  - $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of media
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    put:
      description: |+
        Get media list by ID.

        A media may be an image or a video. Media are a type of entity in Tator,
        meaning they can be described by user defined attributes.


      operationId: GetMediaListById
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
        - description: >-
            If given, all `path` fields in `media_files` will be replaced with
            presigned URLs that can be downloaded without authentication. The
            value is the expiration time of the URLs in seconds.
          in: query
          name: presigned
          required: false
          schema:
            maximum: 86400
            minimum: 1
            type: integer
        - description: >-
            If `True`, and `presigned` is specified, a new presigned url will be
            generated.
          in: query
          name: no_cache
          required: false
          schema:
            type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaIdQuery'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Media'
                type: array
          description: Successful retrieval of media list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Membership/{id}:
    delete:
      description: >
        Delete membership.


        Memberships specify a permission level of a user to a project. There are
        currently

        five cumulative permission levels:

        - `View Only` can only view a project and not change any data.

        - `Can Edit` can create, modify, and delete annotations.

        - `Can Transfer` can upload and download media.

        - `Can Execute` can launch algorithm workflows.

        - `Full Control` can change project settings, including inviting new
        members, project name, and
           project metadata schema.
      operationId: DeleteMembership
      parameters:
        - description: A unique integer identifying a membership.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of membership.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get membership.


        Memberships specify a permission level of a user to a project. There are
        currently

        five cumulative permission levels:

        - `View Only` can only view a project and not change any data.

        - `Can Edit` can create, modify, and delete annotations.

        - `Can Transfer` can upload and download media.

        - `Can Execute` can launch algorithm workflows.

        - `Full Control` can change project settings, including inviting new
        members, project name, and
           project metadata schema.
      operationId: GetMembership
      parameters:
        - description: A unique integer identifying a membership.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Membership'
          description: Successful retrieval of membership.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update membership.


        Memberships specify a permission level of a user to a project. There are
        currently

        five cumulative permission levels:

        - `View Only` can only view a project and not change any data.

        - `Can Edit` can create, modify, and delete annotations.

        - `Can Transfer` can upload and download media.

        - `Can Execute` can launch algorithm workflows.

        - `Full Control` can change project settings, including inviting new
        members, project name, and
           project metadata schema.
      operationId: UpdateMembership
      parameters:
        - description: A unique integer identifying a membership.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              permission: View Only
            schema:
              $ref: '#/components/schemas/MembershipUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of membership.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Memberships/{project}:
    get:
      description: >
        Get membership list.


        Memberships specify a permission level of a user to a project. There are
        currently

        five cumulative permission levels:

        - `View Only` can only view a project and not change any data.

        - `Can Edit` can create, modify, and delete annotations.

        - `Can Transfer` can upload and download media.

        - `Can Execute` can launch algorithm workflows.

        - `Full Control` can change project settings, including inviting new
        members, project name, and
           project metadata schema.
      operationId: GetMembershipList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Membership'
                type: array
          description: Successful retrieval of membership list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create membership.


        Memberships specify a permission level of a user to a project. There are
        currently

        five cumulative permission levels:

        - `View Only` can only view a project and not change any data.

        - `Can Edit` can create, modify, and delete annotations.

        - `Can Transfer` can upload and download media.

        - `Can Execute` can launch algorithm workflows.

        - `Full Control` can change project settings, including inviting new
        members, project name, and
           project metadata schema.
      operationId: CreateMembership
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              permission: Full Control
              user: 1
            schema:
              $ref: '#/components/schemas/MembershipSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of membership.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/MergeStates/{id}:
    patch:
      description: >
        Merges the source state into the target state. 

        The target state will inherit the the source's localizations and will be
        deleted.
      operationId: MergeStates
      parameters:
        - description: A unique integer identifying the target state to accept the merge.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StateMergeUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of state.
      tags:
        - Tator
  /rest/Notify:
    post:
      description: >
        Send a notification to administrators.


        Uses the Slack API to send a notification to system administrators. This

        endpoint can only be used by system administrators and must be
        configured

        in a Tator deployment's settings.
      operationId: Notify
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotifySpec'
        required: true
      responses:
        '201':
          description: Message sent successfully.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
        '503':
          description: Service not available.
      tags:
        - Tator
  /rest/Organization/{id}:
    delete:
      description: >
        Delete organization.


        Organizations are used to represent groups of users. Multiple projects
        may be owned by

        an organization, and users may be members of multiple organizations.



        Only organization owners may delete an organization.
      operationId: DeleteOrganization
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of organization.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >+
        Get organization.


        Organizations are used to represent groups of users. Multiple projects
        may be owned by

        an organization, and users may be members of multiple organizations.


      operationId: GetOrganization
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
          description: Successful retrieval of organization.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >+
        Update organization.


        Organizations are used to represent groups of users. Multiple projects
        may be owned by

        an organization, and users may be members of multiple organizations.


      operationId: UpdateOrganization
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              name: New name
            schema:
              $ref: '#/components/schemas/OrganizationUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of organization.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/OrganizationUploadInfo/{organization}:
    get:
      description: |
        Retrieve URL for file upload to a given organization.
      operationId: GetOrganizationUploadInfo
      parameters:
        - description: A unique integer identifying an organization.
          in: path
          name: organization
          required: true
          schema:
            type: integer
        - description: Number of seconds until URL expires and becomes invalid.
          in: query
          name: expiration
          required: false
          schema:
            default: 86400
            maximum: 86400
            minimum: 1
            type: integer
        - description: Number of upload parts. Maximum part size is 5GB.
          in: query
          name: num_parts
          required: false
          schema:
            default: 1
            maximum: 10000
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadInfo'
          description: Information required for upload via HTTP PUT.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Organizations:
    get:
      description: >-
        Get organization list.


        Organizations are used to represent groups of users. Multiple projects
        may be owned by

        an organization, and users may be members of multiple organizations.



        Returns all organizations that a user is affiliated with.
      operationId: GetOrganizationList
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Organization'
                type: array
          description: Successful retrieval of organization list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >+
        Create organization.


        Organizations are used to represent groups of users. Multiple projects
        may be owned by

        an organization, and users may be members of multiple organizations.


      operationId: CreateOrganization
      parameters: []
      requestBody:
        content:
          application/json:
            example:
              name: My Organization
            schema:
              $ref: '#/components/schemas/OrganizationSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of organization.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/PasswordReset:
    post:
      description: >
        Create password reset.


        This endpoint will send an email to a registered user with the email
        address provided.

        The email will contain a link that will allow the user to reset their
        password. If the

        email address is registered for multiple users or no users an exception
        will be raised

        and an email will not be sent. If the email fails to be sent, either due
        to a bad

        response or system configuration that does not allow sending emails, an
        exception

        will be raised.
      operationId: CreatePasswordReset
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasswordResetSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful creation of password reset.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Permalink/{id}:
    get:
      description: >+
        Get permalink


        A Permalink allows persistant access to an underlying media resource via
        a persistent URL.


      operationId: GetPermalink
      parameters:
        - description: A unique integer identifying a media.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Object to redirect to via 301.
          in: query
          name: element
          required: false
          schema:
            default: auto
            enum:
              - auto
              - streaming
              - archival
              - audio
              - image
              - thumbnail
              - thumbnail_gif
            type: string
        - description: Find the object with the closest quality (ignored for audio)
          in: query
          name: quality
          required: false
          schema:
            default: 720
            minimum: 0
            type: integer
      responses:
        '301':
          description: Redirect to requested Entity
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Project/{id}:
    delete:
      description: >
        Delete project.


        Projects are the object under which all data in Tator is grouped,
        including user

        access, metadata definitions, media, and annotations. Data does not
        cross boundaries

        between projects.



        Only project owners may delete a project. Note that deleting a project

        will also delete all media and annotations within a project.
      operationId: DeleteProject
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of project.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >+
        Get project.


        Projects are the object under which all data in Tator is grouped,
        including user

        access, metadata definitions, media, and annotations. Data does not
        cross boundaries

        between projects.


      operationId: GetProject
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
          description: Successful retrieval of project.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >+
        Update project.


        Projects are the object under which all data in Tator is grouped,
        including user

        access, metadata definitions, media, and annotations. Data does not
        cross boundaries

        between projects.


      operationId: UpdateProject
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              name: New name
              summary: New summary
            schema:
              $ref: '#/components/schemas/ProjectUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of project.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Projects:
    get:
      description: >-
        Get project list.


        Projects are the object under which all data in Tator is grouped,
        including user

        access, metadata definitions, media, and annotations. Data does not
        cross boundaries

        between projects.



        Returns all projects that a user has access to.
      operationId: GetProjectList
      parameters:
        - description: Unique integer identifying an organization.
          in: query
          name: organization
          required: false
          schema:
            minimum: 1
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Project'
                type: array
          description: Successful retrieval of project list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >+
        Create project.


        Projects are the object under which all data in Tator is grouped,
        including user

        access, metadata definitions, media, and annotations. Data does not
        cross boundaries

        between projects.


      operationId: CreateProject
      parameters:
        - description: Unique integer identifying an organization.
          in: query
          name: organization
          required: false
          schema:
            minimum: 1
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            example:
              name: My Project
              summary: First project
            schema:
              $ref: '#/components/schemas/ProjectSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of project.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/SaveAlgorithmManifest/{project}:
    post:
      description: >
        Saves an uploaded algorithm manifest to the desired project. It is
        expected this manifest

        corresponds with an algorithm workflow to be registered by another
        endpoint.


        Manifest is uploaded via tus, a separate mechanism from the REST API.
        Once a manifest

        upload is complete (a .yaml file), the file must be saved to the
        database using

        this endpoint.
      operationId: SaveAlgorithmManifest
      parameters:
        - description: A unique integer identifying a project
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlgorithmManifestSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlgorithmManifest'
          description: Successful save of algortihm manifest.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/SaveGenericFile/{project}:
    post:
      description: >
        Saves an uploaded non-media file to the desired project's permanent
        storage.

        It is expected that this file will be used in conjunction with an
        applet.
      operationId: SaveGenericFile
      parameters:
        - description: A unique integer identifying a project
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenericFileSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericFile'
          description: Successful save of non-media file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Section/{id}:
    delete:
      description: |
        Delete section.

        Sections represent groups of media using saved queries.
      operationId: DeleteSection
      parameters:
        - description: A unique integer identifying a section.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of section.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: |
        Get section.

        Sections represent groups of media using saved queries.
      operationId: GetSection
      parameters:
        - description: A unique integer identifying a section.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Section'
          description: Successful retrieval of section.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: |
        Update section.

        Sections represent groups of media using saved queries.
      operationId: UpdateSection
      parameters:
        - description: A unique integer identifying a section.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SectionUpdate'
        required: true
      responses:
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Sections/{project}:
    get:
      description: |+
        Get section list.

        Sections represent groups of media using saved queries.


      operationId: GetSectionList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Name of the section.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: |
            Find any sections matching using an lquery. 


                        - foo         Match the exact label path foo
                        - *.foo.*     Match any label path containing the label foo
                        - *.foo       Match any label path whose last label is foo

                        Modifiers:
                        - @           Match case-insensitively, for example a@ matches A
                        - *           Match any label with this prefix, for example foo* matches foobar
                        - %           Match initial underscore-separated words

                        American@.Foot@*

                        would match both
                        america.Football and America.footwear
                    
                    For more information: https://www.postgresql.org/docs/current/ltree.html
          in: query
          name: match
          required: false
          schema:
            type: string
        - description: |
            Find ancestors using using an lquery. 


                        - foo         Match the exact label path foo
                        - *.foo.*     Match any label path containing the label foo
                        - *.foo       Match any label path whose last label is foo

                        Modifiers:
                        - @           Match case-insensitively, for example a@ matches A
                        - *           Match any label with this prefix, for example foo* matches foobar
                        - %           Match initial underscore-separated words

                        American@.Foot@*

                        would match both
                        america.Football and America.footwear
                    
                    For more information: https://www.postgresql.org/docs/current/ltree.html
          in: query
          name: ancestors
          required: false
          schema:
            type: string
        - description: |
            Find descendants using using an lquery. 


                        - foo         Match the exact label path foo
                        - *.foo.*     Match any label path containing the label foo
                        - *.foo       Match any label path whose last label is foo

                        Modifiers:
                        - @           Match case-insensitively, for example a@ matches A
                        - *           Match any label with this prefix, for example foo* matches foobar
                        - %           Match initial underscore-separated words

                        American@.Foot@*

                        would match both
                        america.Football and America.footwear
                    
                    For more information: https://www.postgresql.org/docs/current/ltree.html
          in: query
          name: descendants
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Section'
                type: array
          description: Successful retrieval of sections.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >-
        Create section.


        Sections represent groups of media using saved queries.



        Note: In order for a section to be interpreted properly, the
        tator_user_sections attribute of the SectionSpec cannot be None. The
        front end assigns a uuid1 string for this attribute, but it is not
        required to follow this pattern.
      operationId: CreateSection
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SectionSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of section.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/State/{id}:
    delete:
      description: >
        Delete state.


        A state is a description of a collection of other objects. The objects a
        state describes

        could be media (image or video), video frames, or localizations. A state
        referring

        to a collection of localizations is often referred to as a track. States
        are

        a type of entity in Tator, meaning they can be described by user defined
        attributes.
      operationId: DeleteState
      parameters:
        - description: A unique integer identifying a state.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StateDelete'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of state.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get state.


        A state is a description of a collection of other objects. The objects a
        state describes

        could be media (image or video), video frames, or localizations. A state
        referring

        to a collection of localizations is often referred to as a track. States
        are

        a type of entity in Tator, meaning they can be described by user defined
        attributes.
      operationId: GetState
      parameters:
        - description: A unique integer identifying a state.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/State'
          description: Successful retrieval of state.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update state.


        A state is a description of a collection of other objects. The objects a
        state describes

        could be media (image or video), video frames, or localizations. A state
        referring

        to a collection of localizations is often referred to as a track. States
        are

        a type of entity in Tator, meaning they can be described by user defined
        attributes.
      operationId: UpdateState
      parameters:
        - description: A unique integer identifying a state.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              frame: 1001
            schema:
              $ref: '#/components/schemas/StateUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of state.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/StateCount/{project}:
    get:
      description: >
        Get state list count.


        This endpoint accepts the same query parameters as a GET or PUT request
        to the `States`

        endpoint, but only returns the number of states.
      operationId: GetStateCount
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                minimum: 0
                type: integer
          description: Number of states in the list corresponding to query.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    put:
      description: >
        Get state list count by ID.


        This endpoint accepts the same query parameters as a GET or PUT request
        to the `States`

        endpoint, but only returns the number of states.
      operationId: GetStateCountById
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StateIdQuery'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                minimum: 0
                type: integer
          description: Number of states in the list corresponding to query.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/StateGraphic/{id}:
    get:
      description: >2
         Get frame(s) of a given localization-associated state.

        Use the mode argument to control whether it is an animated gif or a
        tiled jpg. A maximum

        of 100 detections may be retrieved at once. Use the length and offset
        parameters to 

        control which section of a state is retrieved.
      operationId: GetStateGraphic
      parameters:
        - description: A unique integer identifying a state.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Whether to animate or tile.
          in: query
          name: mode
          required: false
          schema:
            default: animate
            enum:
              - animate
              - tile
            type: string
        - description: Frame rate if `mode` is `animate`.
          in: query
          name: fps
          required: false
          schema:
            default: 2
            type: number
        - description: wxh to force each tile prior to stich
          in: query
          name: force_scale
          required: false
          schema:
            default: 224x224
            example: 512x512
            nullable: true
            type: string
        - description: Number of detections to extract.
          in: query
          name: length
          required: false
          schema:
            default: 100
            example: 100
            maximum: 100
            type: integer
        - description: Index offset of detections to extract.
          in: query
          name: offset
          required: false
          schema:
            default: 0
            example: 0
            type: integer
      responses:
        '200':
          content:
            image/*:
              schema:
                format: binary
                type: string
          description: Successful retrieval of state graphic.
        '400':
          content:
            image/*:
              schema:
                format: binary
                type: string
          description: Bad request.
        '404':
          content:
            image/*:
              schema:
                format: binary
                type: string
          description: Not found.
      tags:
        - Tator
  /rest/StateType/{id}:
    delete:
      description: >
        Delete state type.


        A state type is the metadata definition object for a state. It includes
        association

        type, name, description, and may have any number of user-defined
        attribute

        types associated with it.



        Note that this will also delete any states associated with the state
        type.
      operationId: DeleteStateType
      parameters:
        - description: A unique integer identifying a state type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of state type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >+
        Get state type.


        A state type is the metadata definition object for a state. It includes
        association

        type, name, description, and may have any number of user-defined
        attribute

        types associated with it.


      operationId: GetStateType
      parameters:
        - description: A unique integer identifying a state type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StateType'
          description: Successful retrieval of state type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >+
        Update state type.


        A state type is the metadata definition object for a state. It includes
        association

        type, name, description, and may have any number of user-defined
        attribute

        types associated with it.


      operationId: UpdateStateType
      parameters:
        - description: A unique integer identifying a state type.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              description: New description
              name: New name
            schema:
              $ref: '#/components/schemas/StateTypeUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of state type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/StateTypes/{project}:
    get:
      description: >
        Get state type list.


        A state type is the metadata definition object for a state. It includes
        association

        type, name, description, and may have any number of user-defined
        attribute

        types associated with it.
      operationId: GetStateTypeList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of unique integers identifying a media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Deprecated. Use `LocalizationType` endpoint to retrieve individual
            localization type by ID.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/StateType'
                type: array
          description: Successful retrieval of state type list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create state type.


        A state type is the metadata definition object for a state. It includes
        association

        type, name, description, and may have any number of user-defined
        attribute

        types associated with it.
      operationId: CreateStateType
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              association: Frame
              attribute_types:
                - default: false
                  dtype: bool
                  name: My Boolean
                - default: 0
                  dtype: int
                  maximum: 1
                  minimum: -1
                  name: My Integer
                - default: 0
                  dtype: float
                  maximum: 1
                  minimum: -1
                  name: My Float
                - choices:
                    - a
                    - b
                    - c
                  default: a
                  dtype: enum
                  labels:
                    - a
                    - b
                    - c
                  name: My Enumeration
                - autocomplete:
                    serviceUrl: https://www.example.com/suggestion
                  default: '---'
                  dtype: string
                  name: My String
                - default: '---'
                  dtype: string
                  name: My String (Text Area)
                  style: long_string
                - dtype: datetime
                  name: My Datetime
                  use_current: true
                - default:
                    - -179
                    - 90
                  dtype: geopos
                  name: My Geoposition
              media_types:
                - 1
              name: My state type
            schema:
              $ref: '#/components/schemas/StateTypeSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of state type.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/States/{project}:
    delete:
      description: >
        Delete state list.


        A state is a description of a collection of other objects. The objects a
        state describes

        could be media (image or video), video frames, or localizations. A state
        referring

        to a collection of localizations is often referred to as a track. States
        are

        a type of entity in Tator, meaning they can be described by user defined
        attributes.



        This method performs a bulk delete on all states matching a query. It
        is 

        recommended to use a GET request first to check what is being deleted.
      operationId: DeleteStateList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StateBulkDelete'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of state list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >+
        Get state list.


        A state is a description of a collection of other objects. The objects a
        state describes

        could be media (image or video), video frames, or localizations. A state
        referring

        to a collection of localizations is often referred to as a track. States
        are

        a type of entity in Tator, meaning they can be described by user defined
        attributes.


      operationId: GetStateList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/State'
                type: array
          description: Successful retrieval of state list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update state list.


        A state is a description of a collection of other objects. The objects a
        state describes

        could be media (image or video), video frames, or localizations. A state
        referring

        to a collection of localizations is often referred to as a track. States
        are

        a type of entity in Tator, meaning they can be described by user defined
        attributes.



        This method does a bulk update on all states matching a query. Only 

        user-defined attributes may be bulk updated.
      operationId: UpdateStateList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            examples:
              single:
                summary: Update Species attribute of many states
                value:
                  attributes:
                    Species: Tuna
            schema:
              $ref: '#/components/schemas/StateBulkUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of state list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create state list.


        A state is a description of a collection of other objects. The objects a
        state describes

        could be media (image or video), video frames, or localizations. A state
        referring

        to a collection of localizations is often referred to as a track. States
        are

        a type of entity in Tator, meaning they can be described by user defined
        attributes.



        This method does a bulk create on a list of
        :class:`tator.models.StateSpec` objects; it

        also accepts a single instance. A maximum of 500 states may be created
        in one request.
      operationId: CreateStateList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            examples:
              frame:
                summary: Frame associated state
                value:
                  My First Attribute: value1
                  My Second Attribute: value2
                  frame: 1000
                  media_ids:
                    - 1
                  type: 1
              localization:
                summary: Localization associated state
                value:
                  My First Attribute: value1
                  My Second Attribute: value2
                  localization_ids:
                    - 1
                    - 5
                    - 10
                  media_ids:
                    - 1
                  type: 1
              media:
                summary: Media associated state
                value:
                  My First Attribute: value1
                  My Second Attribute: value2
                  media_ids:
                    - 1
                    - 5
                    - 10
                  type: 1
            schema:
              oneOf:
                - items:
                    $ref: '#/components/schemas/StateSpec'
                  maxItems: 500
                  type: array
                - $ref: '#/components/schemas/StateSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateListResponse'
          description: Successful creation of state(s).
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    put:
      description: >+
        Get state list by ID.


        A state is a description of a collection of other objects. The objects a
        state describes

        could be media (image or video), video frames, or localizations. A state
        referring

        to a collection of localizations is often referred to as a track. States
        are

        a type of entity in Tator, meaning they can be described by user defined
        attributes.


      operationId: GetStateListById
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Comma-separated list of media IDs.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            Comma-separated list of related IDs. If querying States, one can
            supply a list of related localization ids to filter on.If querying
            Localizations, one can supply a list of related state ids to filter
            on.
          explode: false
          in: query
          name: related_id
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Unique integer identifying a annotation type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: List of integers representing versions to fetch
          explode: false
          in: query
          name: version
          required: false
          schema:
            items:
              type: integer
            type: array
        - description: >-
            If given, all results returned will be after the localization with
            this ID. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Reduce result set based on a server side merge. If multiple versions
            are selected and a variant of the object exists in both versions,
            the merge logic will return 1 or 0 objects. Example: 

            Version B derives off Version A. An object, with the same elemental
            id "foo" exists on both.

            If Version B over A is selected and merge is turned on: + The "foo"
            present on Version B is returned  + If the "foo" on version B is
            deleted, no "foo" is returned.
          in: query
          name: merge
          required: false
          schema:
            default: 1
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Include in the return set objects that have `variant_deleted` set to
            True.
          in: query
          name: show_deleted
          required: false
          schema:
            default: 0
            maximum: 1
            minimum: 0
            type: integer
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StateIdQuery'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/State'
                type: array
          description: Successful retrieval of state list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/TemporaryFile/{id}:
    delete:
      description: |
        Delete temporary file.

        Temporary files are files stored server side for a defined duration.
      operationId: DeleteTemporaryFile
      parameters:
        - description: A unique integer identifying a temporary file.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of temporary file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: |
        Get temporary file.

        Temporary files are files stored server side for a defined duration.
      operationId: GetTemporaryFile
      parameters:
        - description: A unique integer identifying a temporary file.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemporaryFile'
          description: Successful retrieval of temporary file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/TemporaryFiles/{project}:
    delete:
      description: |+
        Delete temporary file list.

        Temporary files are files stored server side for a defined duration.


      operationId: DeleteTemporaryFileList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: If greater than 0 will return only expired files
          explode: false
          in: query
          name: expired
          required: false
          schema:
            default: 0
            type: integer
      responses:
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: |+
        Get temporary file list.

        Temporary files are files stored server side for a defined duration.


      operationId: GetTemporaryFileList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: If greater than 0 will return only expired files
          explode: false
          in: query
          name: expired
          required: false
          schema:
            default: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/TemporaryFile'
                type: array
          description: Successful retrieval of temporary file list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >-
        Create temporary file.


        Temporary files are files stored server side for a defined duration.



        The file must first be uploaded via tus, and can subsequently be saved
        using

        this endpoint.
      operationId: CreateTemporaryFile
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TemporaryFileSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of temporary file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Token:
    post:
      description: |
        Get API token.

        This method accepts login credentials and returns an API token that
        can be used with the Tator REST API, tator-py, or tator-r. 
      operationId: CreateObtainAuthToken
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Credentials'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Token'
          description: Successful retrieval of token.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Transcode/{uid}:
    delete:
      description: >
        Delete transcode job.


        This method allows the user to cancel a transcode using the `uid`
        returned

        by `Transcode` create method.
      operationId: DeleteTranscode
      parameters:
        - description: A uuid1 string identifying to single Job.
          in: path
          name: uid
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of transcode.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get transcode job.


        This method allows the user to get a transcode's status using the `uid`
        returned

        by `Transcode` create method.
      operationId: GetTranscode
      parameters:
        - description: A uuid1 string identifying to single Job.
          in: path
          name: uid
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transcode'
          description: Successful retrieval of transcode job.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Transcodes/{project}:
    delete:
      description: >
        Delete transcode list.


        This method performs a bulk delete on all transcodes matching a query.
        It is 

        recommended to use a GET request first to check what is being deleted.
      operationId: DeleteTranscodeList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaIdQuery'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of transcode list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get transcode list.


        Get a list of active transcodes. This method accepts parameters that
        filter on 

        `Media` in which case only transcodes on the filtered media list will be
        returned.
      operationId: GetTranscodeList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Transcode'
                type: array
          description: Successful retrieval of transcode list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Start a transcode.


        Videos in Tator must be transcoded to a multi-resolution streaming
        format before they

        can be viewed or annotated. This endpoint launches a transcode on raw
        uploaded video by

        creating an Argo workflow. The workflow will download the uploaded raw
        video, transcode

        it to the proper format, upload the transcoded video, and save the video
        using the 

        `VideoFile`, `AudioFile`, and `ImageFile` endpoints. The transcode can
        be launched on an

        existing media object, or a media object will be created.
      operationId: Transcode
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TranscodeSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of transcode.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    put:
      description: >
        Get transcode list by ID.


        Get a list of active transcodes. This method accepts parameters that
        filter on 

        `Media` in which case only transcodes on the filtered media list will be
        returned.

        This method allows a request body containing additional query
        parameters.
      operationId: GetTranscodeListById
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: List of integers identifying media.
          explode: false
          in: query
          name: media_id
          required: false
          schema:
            items:
              minimum: 1
              type: integer
            type: array
        - description: Unique integer identifying media type.
          in: query
          name: type
          required: false
          schema:
            type: integer
        - description: Name of the media to filter on.
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: Unique integer identifying a media section.
          in: query
          name: section
          required: false
          schema:
            type: integer
        - description: Data type of the files, either image or video.
          in: query
          name: dtype
          required: false
          schema:
            enum:
              - image
              - video
              - multi
            type: string
        - description: MD5 sum of the media file.
          in: query
          name: md5
          required: false
          schema:
            type: string
        - description: Upload group ID of the media file.
          in: query
          name: gid
          required: false
          schema:
            type: string
        - description: Upload unique ID of the media file.
          in: query
          name: uid
          required: false
          schema:
            type: string
        - description: >-
            If given, all results returned will be after the media with this ID.
            The `start` and `stop` parameters are relative to this modified
            range.
          in: query
          name: after
          required: false
          schema:
            type: integer
        - description: >-
            If given, all results returned will be after the media with this
            name. The `start` and `stop` parameters are relative to this
            modified range.
          in: query
          name: after_name
          required: false
          schema:
            type: string
        - description: >-
            Archive lifecycle of the files, one of live (live only), archived
            (to_archive, archived, or to_live), or all. Defaults to 'live'
          in: query
          name: archive_lifecycle
          required: false
          schema:
            enum:
              - live
              - archived
              - all
            type: string
        - description: Elemental ID to search for
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].
          explode: false
          in: query
          name: attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].
          explode: false
          in: query
          name: attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.
          explode: false
          in: query
          name: attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Pagination start index. Index of the first item in a larger list to
            return.
          in: query
          name: start
          required: false
          schema:
            type: integer
        - description: >-
            Pagination stop index. Non-inclusive index of the last item in a
            larger list to return.
          in: query
          name: stop
          required: false
          schema:
            type: integer
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec
          in: query
          name: encoded_search
          required: false
          schema:
            type: string
        - description: >
            Field names to sort results by. Built-in names should be prefixed
            with '$', attributes must not be. 
                    
                    Because the schema supports sorting by a list of attributes (effectively grouping), we have to utilize a special character to inform direction.
                    Uses the common convention of '-'; thus `["$name", "-$id"]` would sort by name ascending and break tie-breakers(grouping) by descending by id.

                    An example REST query will sort all localizations in project 1, by label descending and sort any ties by ascending x.

                    `rest/Localizations/1?sort_by=-Label&sort_by=$x`


                    A table of built-ins available for a given type:
                                
                | Name              | Description                            | Localizations | States | Medias | Leaves | Files | 
                |-------------------|----------------------------------------|---------------|--------|--------|--------|-------|
                | section           | Media section                          |       X       |   X    |   X    |        |       |
                | created_datetime  | The time of creation for this datum    |       X       |   X    |   X    |    X   |   X   |
                | created_by        | The user id who created this datum     |       X       |   X    |   X    |    X   |   X   |
                | modified_datetime | The last modification time             |       X       |   X    |   X    |    X   |   X   |
                | modified_by       | The last modification user             |       X       |   X    |   X    |    X   |   X   |
                | name              | The name of the element                |               |        |   X    |    X   |   X   |
                | fps               | The frames per second                  |               |        |   X    |        |       |
                | deleted           | Whether the media is marked deleted    |               |        |   X    |    X   |   X   |
                | variant_deleted   | Whether the metadata is marked deleted |       X       |   X    |        |        |       |
                | archive_state     | The current archive state of the media |               |        |   X    |        |       |
                | x, y, u, or v     | Geometric coordinates                  |               |        |        |        |       |
                | width or height   | Geometric sizes                        |               |        |        |        |       |
                | incident          | Available when doing a related search  |               |        |   X    |        |       |   
          in: query
          name: sort_by
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute equality filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute less than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_lte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gt
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute greater than or equal filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_gte
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute contains filter. Format is
            attribute1::value1,[attribute2::value2].This filter is applied to
            related data of the primary object.On the Media endpoint, this
            searches on related metadata(States/Localizations).On metadata
            endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_contains
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Range filter for geoposition attributes. Format is
            attribute1::distance_km2::lat2::lon2,[attribute2::distancekm2::lat2::lon2].This
            filter is applied to related data of the primary object.On the Media
            endpoint, this searches on related metadata(States/Localizations).On
            metadata endpoints, this searches on related media.
          explode: false
          in: query
          name: related_attribute_distance
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Attribute null filter. Returns elements for which a given attribute
            is not defined.This filter is applied to related data of the primary
            object.On the Media endpoint, this searches on related
            metadata(States/Localizations).On metadata endpoints, this searches
            on related media.
          explode: false
          in: query
          name: related_attribute_null
          required: false
          schema:
            items:
              type: string
            type: array
        - description: >-
            Base64 encoded string representing an `Object_Search` defined in
            /components/AttributeOperationSpec applied against related objects
          in: query
          name: encoded_related_search
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaIdQuery'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Transcode'
                type: array
          description: Successful retrieval of transcode list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/TrimStateEnd/{id}:
    patch:
      description: |
        Trims the state's start or end point by deleting the localizations 
        before the new start point or after the new end point.
      operationId: TrimStateEnd
      parameters:
        - description: A unique integer identifying the state to trim
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StateTrimUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of state.
      tags:
        - Tator
  /rest/UploadCompletion/{project}:
    post:
      description: |
        Complete multipart upload.
      operationId: CompleteUpload
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadCompletionSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful completion of upload.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/UploadInfo/{project}:
    get:
      description: |
        Retrieve URL for file upload to a given project.
      operationId: GetUploadInfo
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Number of seconds until URL expires and becomes invalid.
          in: query
          name: expiration
          required: false
          schema:
            default: 86400
            maximum: 86400
            minimum: 1
            type: integer
        - description: Number of upload parts. Maximum part size is 5GB.
          in: query
          name: num_parts
          required: false
          schema:
            default: 1
            maximum: 10000
            minimum: 1
            type: integer
        - description: Media ID if this is an upload for existing media.
          in: query
          name: media_id
          required: false
          schema:
            minimum: 1
            type: integer
        - description: File ID if this is an upload for existing file.
          in: query
          name: file_id
          required: false
          schema:
            minimum: 1
            type: integer
        - description: >-
            Filename to use if `media_id` is given. If a file with the same name
            already exists under the given media ID prefix, the new upload will
            replace it. Ignored if `media_id` is not given.
          in: query
          name: filename
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadInfo'
          description: Information required for upload via HTTP PUT.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/User/Exists:
    get:
      description: Returns whether a user exists.
      operationId: UserExists
      parameters:
        - description: >-
            Username associated with user. Either this or email must be
            supplied.
          in: query
          name: username
          required: false
          schema:
            type: string
        - description: >-
            Email address associated with user. Either this or email must be
            supplied.
          in: query
          name: email
          required: false
          schema:
            type: string
        - description: Elemental_id of user
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                type: boolean
          description: Successful retrieval of user list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/User/GetCurrent:
    get:
      description: |
        Get current user.

        Retrieves user making the request.
      operationId: Whoami
      parameters:
        - description: >-
            If given, all object key fields in `profile` will be replaced with
            presigned URLs that can be downloaded without authentication. The
            value is the expiration time of the URLs in seconds.
          in: query
          name: presigned
          required: false
          schema:
            maximum: 86400
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: Successful retrieval of user who sent request.
      tags:
        - Tator
  /rest/User/{id}:
    get:
      description: Get user.
      operationId: GetUser
      parameters:
        - description: A unique integer identifying a user.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: >-
            If given, all object key fields in `profile` will be replaced with
            presigned URLs that can be downloaded without authentication. The
            value is the expiration time of the URLs in seconds.
          in: query
          name: presigned
          required: false
          schema:
            maximum: 86400
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: Successful retrieval of user.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: Update user.
      operationId: UpdateUser
      parameters:
        - description: A unique integer identifying a user.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: >-
            If given, all object key fields in `profile` will be replaced with
            presigned URLs that can be downloaded without authentication. The
            value is the expiration time of the URLs in seconds.
          in: query
          name: presigned
          required: false
          schema:
            maximum: 86400
            minimum: 1
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserUpdate'
        required: true
      responses:
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Users:
    get:
      description: Get list of users.
      operationId: GetUserList
      parameters:
        - description: >-
            Username associated with user. Either this or email must be
            supplied.
          in: query
          name: username
          required: false
          schema:
            type: string
        - description: >-
            Email address associated with user. Either this or email must be
            supplied.
          in: query
          name: email
          required: false
          schema:
            type: string
        - description: Elemental_id of user
          in: query
          name: elemental_id
          required: false
          schema:
            type: string
        - description: >-
            If given, all object key fields in `profile` will be replaced with
            presigned URLs that can be downloaded without authentication. The
            value is the expiration time of the URLs in seconds.
          in: query
          name: presigned
          required: false
          schema:
            maximum: 86400
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/User'
                type: array
          description: Successful retrieval of user list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create user.


        This method accepts a registration token that is provided by creating a

        Invitation object. It is optional if anonymous registration is enabled,
        but

        otherwise required. If anonymous registration is enabled and email
        confirmation

        is also enabled, the method will create an inactive user with a
        confirmation

        token. The user can be activated by visiting a link that is
        automatically sent

        to the user. If anonymous registration without confirmation is enabled,
        any

        user can be created with this method.
      operationId: CreateUser
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserSpec'
        required: true
      responses:
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Version/{id}:
    delete:
      description: >
        Delete version.


        Versions allow for multiple "layers" of annotations on the same media.
        Versions

        are created at the project level, but are only displayed for a given
        media

        if that media contains annotations in that version. The version of an
        annotation

        can be set by providing it in a POST operation. Currently only
        localizations

        and states can have versions.



        Note that this will also delete any localizations or states associated

        with the deleted version.
      operationId: DeleteVersion
      parameters:
        - description: A unique integer identifying a version.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of version.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >+
        Get version.


        Versions allow for multiple "layers" of annotations on the same media.
        Versions

        are created at the project level, but are only displayed for a given
        media

        if that media contains annotations in that version. The version of an
        annotation

        can be set by providing it in a POST operation. Currently only
        localizations

        and states can have versions.


      operationId: GetVersion
      parameters:
        - description: A unique integer identifying a version.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Version'
          description: Successful retrieval of version.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >+
        Update version.


        Versions allow for multiple "layers" of annotations on the same media.
        Versions

        are created at the project level, but are only displayed for a given
        media

        if that media contains annotations in that version. The version of an
        annotation

        can be set by providing it in a POST operation. Currently only
        localizations

        and states can have versions.


      operationId: UpdateVersion
      parameters:
        - description: A unique integer identifying a version.
          in: path
          name: id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              bases:
                - 1
              description: New description
              name: New name
              show_empty: true
            schema:
              $ref: '#/components/schemas/VersionUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of version.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/Versions/{project}:
    get:
      description: >
        Get version list.


        Versions allow for multiple "layers" of annotations on the same media.
        Versions

        are created at the project level, but are only displayed for a given
        media

        if that media contains annotations in that version. The version of an
        annotation

        can be set by providing it in a POST operation. Currently only
        localizations

        and states can have versions.
      operationId: GetVersionList
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
        - description: Unique integer identifying a media.
          in: query
          name: media_id
          required: false
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Version'
                type: array
          description: Successful retrieval of version list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create version.


        Versions allow for multiple "layers" of annotations on the same media.
        Versions

        are created at the project level, but are only displayed for a given
        media

        if that media contains annotations in that version. The version of an
        annotation

        can be set by providing it in a POST operation. Currently only
        localizations

        and states can have versions.
      operationId: CreateVersion
      parameters:
        - description: A unique integer identifying a project.
          in: path
          name: project
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            example:
              bases:
                - 1
              description: New description
              name: My new version
              show_empty: true
            schema:
              $ref: '#/components/schemas/VersionSpec'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateResponse'
          description: Successful creation of version.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/VideoFile/{id}:
    delete:
      description: >
        Delete video file.


        Video files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying video. One or more video files
        can be used to reference

        streaming or archival roles in a `Media` object. The file itself must
        first be 

        uploaded to a URL retrieved from the `UploadInfo` endpoint, and the
        returned object key 

        should be specified in the video file's `path` field.
      operationId: DeleteVideoFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: true
          schema:
            enum:
              - streaming
              - archival
            type: string
        - description: >-
            Index of object. Must be less than size of current list of videos
            for the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful deletion of video file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    get:
      description: >
        Get video file.


        Video files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying video. One or more video files
        can be used to reference

        streaming or archival roles in a `Media` object. The file itself must
        first be 

        uploaded to a URL retrieved from the `UploadInfo` endpoint, and the
        returned object key 

        should be specified in the video file's `path` field.
      operationId: GetVideoFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: true
          schema:
            enum:
              - streaming
              - archival
            type: string
        - description: >-
            Index of object. Must be less than size of current list of videos
            for the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoDefinition'
          description: Successful retrieval of video file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    patch:
      description: >
        Update video file.


        Video files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying video. One or more video files
        can be used to reference

        streaming or archival roles in a `Media` object. The file itself must
        first be 

        uploaded to a URL retrieved from the `UploadInfo` endpoint, and the
        returned object key 

        should be specified in the video file's `path` field.
      operationId: UpdateVideoFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: true
          schema:
            enum:
              - streaming
              - archival
            type: string
        - description: >-
            Index of object. Must be less than size of current list of videos
            for the specified `role`.
          in: query
          name: index
          required: true
          schema:
            minimum: 0
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VideoDefinition'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful update of video file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
  /rest/VideoFiles/{id}:
    get:
      description: >
        Get video file list.


        Video files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying video. One or more video files
        can be used to reference

        streaming or archival roles in a `Media` object. The file itself must
        first be 

        uploaded to a URL retrieved from the `UploadInfo` endpoint, and the
        returned object key 

        should be specified in the video file's `path` field.
      operationId: GetVideoFileList
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: true
          schema:
            enum:
              - streaming
              - archival
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/VideoDefinition'
                type: array
          description: Successful retrieval of video file list.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
    post:
      description: >
        Create video file.


        Video files are stored under the `media_files` field of `Media` objects.
        They are used to 

        relate media metadata to an underlying video. One or more video files
        can be used to reference

        streaming or archival roles in a `Media` object. The file itself must
        first be 

        uploaded to a URL retrieved from the `UploadInfo` endpoint, and the
        returned object key 

        should be specified in the video file's `path` field.
      operationId: CreateVideoFile
      parameters:
        - description: A unique integer identifying a media object.
          in: path
          name: id
          required: true
          schema:
            type: integer
        - description: Role of media file being referenced.
          in: query
          name: role
          required: true
          schema:
            enum:
              - streaming
              - archival
            type: string
        - description: >-
            Insertion index. Must be less than size of current list of videos
            for the specified `role`. If omitted, the video file will be
            appended to the end of the list.
          in: query
          name: index
          required: false
          schema:
            minimum: 0
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VideoDefinition'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageResponse'
          description: Successful creation of video file.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not found.
      tags:
        - Tator
security:
  - TokenAuth: []
  - SessionAuth: []
servers:
  - url: https://cloud.tator.io
