/**
 * OpenAPI Generated Petstore Client
 *
 * This is a sample of Petstore application.
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

#ifndef PETAPI_H
#define PETAPI_H

#include "qoaibaseapi.h"
#include "cmakegeneratedclientexports.h"
#include <QtNetwork/qrestreply.h>

#include "apiresponse.h"
#include "pet.h"
#include "qoaihttpfileelement.h"
#include <QString>

namespace QtOpenAPI {

using namespace QtOpenApiCommon;

class CMAKEGENERATEDCLIENT_EXPORT PetApi : public QtOpenApiCommon::QOAIBaseApi {
    Q_OBJECT
public:
    PetApi() : PetApi(nullptr) {}
    explicit PetApi(QObject *parent);
    ~PetApi() override;

    void initializeServerConfigs();

    /**
    * \internal
    * The auto-generated API:
    * void addPet(const Pet &pet);
    * void addPet(const Pet &pet, QObject *object, [&](const QRestReply &reply, const Pet &summary){});
    * \endinternal
    */
    QOAI_ADD_OPERATION_IMPL(addPet, (const Pet &pet), (pet), (const Pet &), /* non-deprecated */)

    /**
    * \internal
    * The auto-generated API:
    * void deletePet(const qint64 &petId, const QtOpenApiCommon::OptionalParameter<QString> &apiKey);
    * void deletePet(const qint64 &petId, const QtOpenApiCommon::OptionalParameter<QString> &apiKey, QObject *object, [&](const QRestReply &reply){});
    * \endinternal
    */
    QOAI_ADD_OPERATION_WITH_NO_RESPONSE_IMPL(deletePet, (const qint64 &petId, const QtOpenApiCommon::OptionalParameter<QString> &apiKey = QtOpenApiCommon::OptionalParameter<QString>()), (petId, apiKey), /* non-deprecated */)

    /**
    * \internal
    * The auto-generated API:
    * void findPetsByAgeAndPatience(const QList<qint32> &petData);
    * void findPetsByAgeAndPatience(const QList<qint32> &petData, QObject *object, [&](const QRestReply &reply, const QList<Pet> &summary){});
    * \endinternal
    */
    QOAI_ADD_OPERATION_IMPL(findPetsByAgeAndPatience, (const QList<qint32> &petData), (petData), (const QList<Pet> &), /* non-deprecated */)

    /**
    * \internal
    * The auto-generated API:
    * void findPetsByStatus(const QList<QString> &status);
    * void findPetsByStatus(const QList<QString> &status, QObject *object, [&](const QRestReply &reply, const QList<Pet> &summary){});
    * \endinternal
    */
    QOAI_ADD_OPERATION_IMPL(findPetsByStatus, (const QList<QString> &status), (status), (const QList<Pet> &), /* non-deprecated */)

    /**
    * \internal
    * The auto-generated API:
    * void findPetsByTags(const QList<QString> &tags);
    * void findPetsByTags(const QList<QString> &tags, QObject *object, [&](const QRestReply &reply, const QList<Pet> &summary){});
    * \endinternal
    */
    QOAI_ADD_OPERATION_IMPL(findPetsByTags, (const QList<QString> &tags), (tags), (const QList<Pet> &), Q_DECL_DEPRECATED)

    /**
    * \internal
    * The auto-generated API:
    * void findPetsImageById(const qint64 &petId);
    * void findPetsImageById(const qint64 &petId, QObject *object, [&](const QRestReply &reply, const QString &summary){});
    * \endinternal
    */
    QOAI_ADD_OPERATION_IMPL(findPetsImageById, (const qint64 &petId), (petId), (const QString &), /* non-deprecated */)

    /**
    * \internal
    * The auto-generated API:
    * void getJsonFile(const qint64 &petId);
    * void getJsonFile(const qint64 &petId, QObject *object, [&](const QRestReply &reply, const QOAIHttpFileElement &summary){});
    * \endinternal
    */
    QOAI_ADD_OPERATION_IMPL(getJsonFile, (const qint64 &petId), (petId), (const QOAIHttpFileElement &), /* non-deprecated */)

    /**
    * \internal
    * The auto-generated API:
    * void getPetById(const qint64 &petId);
    * void getPetById(const qint64 &petId, QObject *object, [&](const QRestReply &reply, const Pet &summary){});
    * \endinternal
    */
    QOAI_ADD_OPERATION_IMPL(getPetById, (const qint64 &petId), (petId), (const Pet &), /* non-deprecated */)

    /**
    * \internal
    * The auto-generated API:
    * void updatePet(const Pet &pet);
    * void updatePet(const Pet &pet, QObject *object, [&](const QRestReply &reply, const Pet &summary){});
    * \endinternal
    */
    QOAI_ADD_OPERATION_IMPL(updatePet, (const Pet &pet), (pet), (const Pet &), /* non-deprecated */)

    /**
    * \internal
    * The auto-generated API:
    * void updatePetWithForm(const qint64 &petId, const QtOpenApiCommon::OptionalParameter<QString> &name, const QtOpenApiCommon::OptionalParameter<QString> &status);
    * void updatePetWithForm(const qint64 &petId, const QtOpenApiCommon::OptionalParameter<QString> &name, const QtOpenApiCommon::OptionalParameter<QString> &status, QObject *object, [&](const QRestReply &reply){});
    * \endinternal
    */
    QOAI_ADD_OPERATION_WITH_NO_RESPONSE_IMPL(updatePetWithForm, (const qint64 &petId, const QtOpenApiCommon::OptionalParameter<QString> &name = QtOpenApiCommon::OptionalParameter<QString>(), const QtOpenApiCommon::OptionalParameter<QString> &status = QtOpenApiCommon::OptionalParameter<QString>()), (petId, name, status), /* non-deprecated */)

    /**
    * \internal
    * The auto-generated API:
    * void uploadFile(const qint64 &petId, const QtOpenApiCommon::OptionalParameter<QString> &additionalMetadata, const QtOpenApiCommon::OptionalParameter<QOAIHttpFileElement> &file);
    * void uploadFile(const qint64 &petId, const QtOpenApiCommon::OptionalParameter<QString> &additionalMetadata, const QtOpenApiCommon::OptionalParameter<QOAIHttpFileElement> &file, QObject *object, [&](const QRestReply &reply, const ApiResponse &summary){});
    * \endinternal
    */
    QOAI_ADD_OPERATION_IMPL(uploadFile, (const qint64 &petId, const QtOpenApiCommon::OptionalParameter<QString> &additionalMetadata = QtOpenApiCommon::OptionalParameter<QString>(), const QtOpenApiCommon::OptionalParameter<QOAIHttpFileElement> &file = QtOpenApiCommon::OptionalParameter<QOAIHttpFileElement>()), (petId, additionalMetadata, file), (const ApiResponse &), /* non-deprecated */)

Q_SIGNALS:
    /** Signal is emitted, if addPet() request completed successfully. The \a summary contains a serialized server response. */
    void addPetFinished(const Pet &summary);
    /** Signal is emitted, if addPet() request completed with an error. \a errorType and \a errorStr contain an information about the error. */
    void addPetErrorOccurred(QNetworkReply::NetworkError errorType, const QString &errorStr);
    /** Signal is emitted, if deletePet() request completed successfully. */
    void deletePetFinished();
    /** Signal is emitted, if deletePet() request completed with an error. \a errorType and \a errorStr contain an information about the error. */
    void deletePetErrorOccurred(QNetworkReply::NetworkError errorType, const QString &errorStr);
    /** Signal is emitted, if findPetsByAgeAndPatience() request completed successfully. The \a summary contains a serialized server response. */
    void findPetsByAgeAndPatienceFinished(const QList<Pet> &summary);
    /** Signal is emitted, if findPetsByAgeAndPatience() request completed with an error. \a errorType and \a errorStr contain an information about the error. */
    void findPetsByAgeAndPatienceErrorOccurred(QNetworkReply::NetworkError errorType, const QString &errorStr);
    /** Signal is emitted, if findPetsByStatus() request completed successfully. The \a summary contains a serialized server response. */
    void findPetsByStatusFinished(const QList<Pet> &summary);
    /** Signal is emitted, if findPetsByStatus() request completed with an error. \a errorType and \a errorStr contain an information about the error. */
    void findPetsByStatusErrorOccurred(QNetworkReply::NetworkError errorType, const QString &errorStr);
    /** Signal is emitted, if findPetsByTags() request completed successfully. The \a summary contains a serialized server response. */
    void findPetsByTagsFinished(const QList<Pet> &summary);
    /** Signal is emitted, if findPetsByTags() request completed with an error. \a errorType and \a errorStr contain an information about the error. */
    void findPetsByTagsErrorOccurred(QNetworkReply::NetworkError errorType, const QString &errorStr);
    /** Signal is emitted, if findPetsImageById() request completed successfully. The \a summary contains a serialized server response. */
    void findPetsImageByIdFinished(const QString &summary);
    /** Signal is emitted, if findPetsImageById() request completed with an error. \a errorType and \a errorStr contain an information about the error. */
    void findPetsImageByIdErrorOccurred(QNetworkReply::NetworkError errorType, const QString &errorStr);
    /** Signal is emitted, if getJsonFile() request completed successfully. The \a summary contains a serialized server response. */
    void getJsonFileFinished(const QOAIHttpFileElement &summary);
    /** Signal is emitted, if getJsonFile() request completed with an error. \a errorType and \a errorStr contain an information about the error. */
    void getJsonFileErrorOccurred(QNetworkReply::NetworkError errorType, const QString &errorStr);
    /** Signal is emitted, if getPetById() request completed successfully. The \a summary contains a serialized server response. */
    void getPetByIdFinished(const Pet &summary);
    /** Signal is emitted, if getPetById() request completed with an error. \a errorType and \a errorStr contain an information about the error. */
    void getPetByIdErrorOccurred(QNetworkReply::NetworkError errorType, const QString &errorStr);
    /** Signal is emitted, if updatePet() request completed successfully. The \a summary contains a serialized server response. */
    void updatePetFinished(const Pet &summary);
    /** Signal is emitted, if updatePet() request completed with an error. \a errorType and \a errorStr contain an information about the error. */
    void updatePetErrorOccurred(QNetworkReply::NetworkError errorType, const QString &errorStr);
    /** Signal is emitted, if updatePetWithForm() request completed successfully. */
    void updatePetWithFormFinished();
    /** Signal is emitted, if updatePetWithForm() request completed with an error. \a errorType and \a errorStr contain an information about the error. */
    void updatePetWithFormErrorOccurred(QNetworkReply::NetworkError errorType, const QString &errorStr);
    /** Signal is emitted, if uploadFile() request completed successfully. The \a summary contains a serialized server response. */
    void uploadFileFinished(const ApiResponse &summary);
    /** Signal is emitted, if uploadFile() request completed with an error. \a errorType and \a errorStr contain an information about the error. */
    void uploadFileErrorOccurred(QNetworkReply::NetworkError errorType, const QString &errorStr);

};

} // namespace QtOpenAPI

#endif // PETAPI_H
