<?php

// 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.

namespace Algolia\AlgoliaSearch\Model\Search;

/**
 * Action Class Doc Comment.
 *
 * @category Class
 *
 * @description 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\".
 */
class Action
{
    /**
     * Possible values of this enum.
     */
    public const ADD_OBJECT = 'addObject';

    public const UPDATE_OBJECT = 'updateObject';

    public const PARTIAL_UPDATE_OBJECT = 'partialUpdateObject';

    public const PARTIAL_UPDATE_OBJECT_NO_CREATE = 'partialUpdateObjectNoCreate';

    public const DELETE_OBJECT = 'deleteObject';

    public const DELETE = 'delete';

    public const CLEAR = 'clear';

    /**
     * Gets allowable values of the enum.
     *
     * @return string[]
     */
    public static function getAllowableEnumValues()
    {
        return [
            self::ADD_OBJECT,
            self::UPDATE_OBJECT,
            self::PARTIAL_UPDATE_OBJECT,
            self::PARTIAL_UPDATE_OBJECT_NO_CREATE,
            self::DELETE_OBJECT,
            self::DELETE,
            self::CLEAR,
        ];
    }
}
