/**
 * Brevo API
 * Brevo provide a RESTFul API that can be used with any languages. With this API, you will be able to :   - Manage your campaigns and get the statistics   - Manage your contacts   - Send transactional Emails and SMS   - and much more...  You can download our wrappers at https://github.com/orgs/brevo  **Possible responses**   | Code | Message |   | :-------------: | ------------- |   | 200  | OK. Successful Request  |   | 201  | OK. Successful Creation |   | 202  | OK. Request accepted |   | 204  | OK. Successful Update/Deletion  |   | 400  | Error. Bad Request  |   | 401  | Error. Authentication Needed  |   | 402  | Error. Not enough credit, plan upgrade needed  |   | 403  | Error. Permission denied  |   | 404  | Error. Object does not exist |   | 405  | Error. Method not allowed  |   | 406  | Error. Not Acceptable  |   | 422  | Error. Unprocessable Entity | 
 *
 * The version of the OpenAPI document: 3.0.0
 * Contact: contact@brevo.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { RequestFile } from './models';

export class CreateUpdateProduct {
    /**
    * Product ID for which you requested the details
    */
    'id': string;
    /**
    * Mandatory in case of creation**. Name of the product for which you requested the details
    */
    'name': string;
    /**
    * URL to the product
    */
    'url'?: string;
    /**
    * Absolute URL to the cover image of the product
    */
    'imageUrl'?: string;
    /**
    * Product identifier from the shop
    */
    'sku'?: string;
    /**
    * Price of the product
    */
    'price'?: number;
    /**
    * Category ID-s of the product
    */
    'categories'?: Array<string>;
    /**
    * Parent product id of the product
    */
    'parentId'?: string;
    /**
    * Meta data of product such as description, vendor, producer, stock level. The size of cumulative metaInfo shall not exceed **1000 KB**. Maximum length of metaInfo object can be 10.
    */
    'metaInfo'?: { [key: string]: string; };
    /**
    * Facilitate to update the existing category in the same request (updateEnabled = true)
    */
    'updateEnabled'?: boolean = false;
    /**
    * UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) of the product deleted from the shop\'s database
    */
    'deletedAt'?: string;
    /**
    * product deleted from the shop\'s database
    */
    'isDeleted'?: boolean;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "id",
            "baseName": "id",
            "type": "string"
        },
        {
            "name": "name",
            "baseName": "name",
            "type": "string"
        },
        {
            "name": "url",
            "baseName": "url",
            "type": "string"
        },
        {
            "name": "imageUrl",
            "baseName": "imageUrl",
            "type": "string"
        },
        {
            "name": "sku",
            "baseName": "sku",
            "type": "string"
        },
        {
            "name": "price",
            "baseName": "price",
            "type": "number"
        },
        {
            "name": "categories",
            "baseName": "categories",
            "type": "Array<string>"
        },
        {
            "name": "parentId",
            "baseName": "parentId",
            "type": "string"
        },
        {
            "name": "metaInfo",
            "baseName": "metaInfo",
            "type": "{ [key: string]: string; }"
        },
        {
            "name": "updateEnabled",
            "baseName": "updateEnabled",
            "type": "boolean"
        },
        {
            "name": "deletedAt",
            "baseName": "deletedAt",
            "type": "string"
        },
        {
            "name": "isDeleted",
            "baseName": "isDeleted",
            "type": "boolean"
        }    ];

    static getAttributeTypeMap() {
        return CreateUpdateProduct.attributeTypeMap;
    }
}

