# coding: utf-8

"""
Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
"""

from __future__ import annotations

from enum import Enum
from json import loads
from sys import version_info

if version_info >= (3, 11):
    from typing import Self
else:
    from typing_extensions import Self


class Action(str, Enum):
    """
    Which indexing operation to perform:  - `addObject`: adds records to an index.    Equivalent to the \"Add a new record (with auto-generated object ID)\" operation. - `updateObject`: adds or replaces records in an index.    Equivalent to the \"Add or replace a record\" operation. - `partialUpdateObject`: adds or updates attributes within records.    Equivalent to the \"Add or update attributes\" operation with the `createIfNoExists` parameter set to true.    (If a record with the specified `objectID` doesn't exist in the specified index, this action creates adds the record to the index) - `partialUpdateObjectNoCreate`: same as `partialUpdateObject`, but with `createIfNoExists` set to false.    (A record isn't added to the index if its `objectID` doesn't exist) - `deleteObject`: delete records from an index.   Equivalent to the \"Delete a record\" operation. - `delete`. Delete an index. Equivalent to the \"Delete an index\" operation. - `clear`: delete all records from an index. Equivalent to the \"Delete all records from an index operation\".
    """

    """
    allowed enum values
    """
    ADDOBJECT = "addObject"

    UPDATEOBJECT = "updateObject"

    PARTIALUPDATEOBJECT = "partialUpdateObject"

    PARTIALUPDATEOBJECTNOCREATE = "partialUpdateObjectNoCreate"

    DELETEOBJECT = "deleteObject"

    DELETE = "delete"

    CLEAR = "clear"

    @classmethod
    def from_json(cls, json_str: str) -> Self:
        """Create an instance of Action from a JSON string"""
        return cls(loads(json_str))
