NHCPS G4 Assistant

NHCPS G4 Assistant · GPT 작업

GPT Marketing Assistant APIs

This is the GPT Marketing Assistant API documentation.

  • POST /v1/google_analytics_4google_analytics_4

    Call this function to retrieve data from Google Analytics 4 (GA4). You can query single, multiple or all accounts at once. If user didn't specify any account name, assume they want to query all accounts and don't specify the 'accounts' argument.

  • POST /v1/chartscharts

    Call this function to create charts. Don't call this function except if user says 'chart' or 'graph'.Supported chart types: 'line', 'bar', 'scatter', 'pie', 'hist'

원본 API 스키마
{
  "openapi": "3.1.0",
  "info": {
    "title": "GPT Marketing Assistant APIs",
    "description": "This is the GPT Marketing Assistant API documentation.",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://gpt.sphinxmind.com"
    }
  ],
  "paths": {
    "/v1/google_analytics_4": {
      "post": {
        "description": "Call this function to retrieve data from Google Analytics 4 (GA4). You can query single, multiple or all accounts at once. If user didn't specify any account name, assume they want to query all accounts and don't specify the 'accounts' argument.",
        "operationId": "google_analytics_4",
        "parameters": [],
        "deprecated": false,
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BaseGa4Input"
              }
            }
          },
          "required": true
        }
      }
    },
    "/v1/charts": {
      "post": {
        "description": "Call this function to create charts. Don't call this function except if user says 'chart' or 'graph'.Supported chart types: 'line', 'bar', 'scatter', 'pie', 'hist'",
        "operationId": "charts",
        "parameters": [],
        "deprecated": false,
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChartInput"
              }
            }
          },
          "required": true
        }
      }
    }
  },
  "components": {
    "schemas": {
      "BaseGa4Input": {
        "title": "BaseGa4Input",
        "type": "object",
        "properties": {
          "fields": {
            "title": "Fields",
            "description": "The fields to query. Adhere to the following guidelines:\n- Remain flexible. Users might request fields outside of this list below. Accept any field formatted in camel case or format it yourself.\n- Select just one field if a user doesn't specify multiple options. Don't add \"date\" in fields unless user asks for it.\n- Consider the following commonly used fields, but note again this list isn't exhaustive, and users might request fields outside of it:\nactiveUsers,addToCarts,advertiserAdClicks,advertiserAdCost,advertiserAdCostPerClick,advertiserAdCostPerConversion,advertiserAdImpressions,advertiserAdCtr,averagePurchaseRevenue,averageRevenuePerUser,averageSessionDuration,bounceRate,cartToViewRate,checkouts,conversions,purchases,engagedSessions,engagementRate,eventCount,eventCountPerUser,eventsPerSession,eventValue,firstTimePurchasers,itemListClickEvents,itemListViewEvents,itemRevenue,itemsAddedToCart,itemsCheckedOut,itemsClickedInList,itemsPurchased,itemsViewed,itemsViewedInList,itemViewEvents,newUsers,purchaseRevenue,purchaseToViewRate,roas,pageViews,pageViewsPerSession,pageViewsPerUser,scrolledUsers,conversionRate,sessions,sessionsPerUser,purchasers,revenue,totalUsers,returningUsers,transactions,transactionsPerPurchaser,userEngagementDuration,purchaseConversionRate,audienceName,brandingInterest,browser,city,contentGroup,continent,country,date,dateHour,dateHourMinute,day,dayOfWeek,dayOfWeekName,deviceCategory,deviceModel,eventName,firstSessionDate,firstUserCampaignName,fullPageUrl,hostName,hour,isConversionEvent,isoWeek,isoYear,isoYearIsoWeek,itemBrand,itemCategory,itemCategory2,itemCategory3,itemId,itemListName,itemName,landingPage,landingPagePlusQueryString,language,linkText,linkUrl,mobileDeviceBranding,mobileDeviceModel,month,newVsReturning,operatingSystem,pageLocation,pagePath,pagePathPlusQueryString,pageReferrer,pageTitle,percentScrolled,platform,platformDeviceCategory,region,screenResolution,searchTerm,campaignId,campaignName,channel,googleAdsAccountName,googleAdsAdGroupName,googleAdsAdNetworkType,googleAdsCampaignId,googleAdsCampaignType,googleAdsCustomerId,googleAdsKeyword,manualAdContent,manualTerm,medium,source,sourceMedium,sessionSourcePlatform,userId,streamName,transactionId,age,gender,videoTitle,videoUrl,currency,week,year,yearMonth,yearWeek,accountId,accountName\n",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "date_range": {
            "title": "Date Range",
            "description": "An object that should contain either \"date_preset\" or both \"start_date\" and \"end_date\".\n- For example: {\"date_preset\": \"last_7_days\"} or {\"start_date\": \"2020-01-01\", \"end_date\": \"2020-01-31\"} or {\"date_preset\": \"last_week\"}.\n- \"date_preset\": A predefined date range; must be one of these values: today,yesterday,this_week_sun_today,this_week_mon_today,last_week,last_3_weeks,last_week_sun_sat,last_week_mon_sun,this_month,last_month,last_3_months,last_6_months,this_quarter,last_7_days,last_14_days,last_30_days,last_60_days,last_90_days,this_year,last_year.\n- \"start_date\": The start date of the date range to query, format: YYYY-MM-DD. Optional if \"date_preset\" is provided.\n- \"end_date\": The end date of the date range to query, format: YYYY-MM-DD. Optional if \"date_preset\" is provided.\n- Here are some examples of how users might ask for date ranges:\n    - \"past 7 days\" should be {\"date_preset\": \"last_7_days\"}.\n    - \"last week\" should be {\"date_preset\": \"last_week\"}.\n    - \"last 3 weeks\" should be {\"date_preset\": \"last_3_weeks\"}.\n    - \"this month\" should be {\"date_preset\": \"this_month\"}.\n    - \"last 6 month\" should be {\"date_preset\": \"last_6_months\"}.\n    - \"June 2023\" should be {\"start_date\": \"2023-06-01\", \"end_date\": \"2023-06-30\"}.\n    - \"from Jan 2023 to June 2023\" should be {\"start_date\": \"2023-01-01\", \"end_date\": \"2023-06-30\"}.\n    - \"from 2023/01/01 to 2023/06/30\" should be {\"start_date\": \"2023-01-01\", \"end_date\": \"2023-06-30\"}.\n",
            "allOf": [
              {
                "title": "DateRange",
                "type": "object",
                "properties": {
                  "start_date": {
                    "title": "Start Date",
                    "description": "The start date of the date range to query, format: YYYY-MM-DD. Optional if date_preset is provided.",
                    "type": "string"
                  },
                  "end_date": {
                    "title": "End Date",
                    "description": "The end date of the date range to query, format: YYYY-MM-DD. Optional if date_preset is provided",
                    "type": "string"
                  },
                  "date_preset": {
                    "title": "Date Preset",
                    "description": "Predefined date ranges",
                    "enum": [
                      "today",
                      "yesterday",
                      "this_week_sun_today",
                      "this_week_mon_today",
                      "last_week",
                      "last_3_weeks",
                      "last_week_sun_sat",
                      "last_week_mon_sun",
                      "this_month",
                      "last_month",
                      "last_3_months",
                      "last_6_months",
                      "this_quarter",
                      "last_7_days",
                      "last_14_days",
                      "last_30_days",
                      "last_60_days",
                      "last_90_days",
                      "this_year",
                      "last_year"
                    ],
                    "type": "string"
                  }
                }
              }
            ]
          },
          "filters": {
            "title": "Filters",
            "description": "A list of filters to apply to the query.\n- Format: [{\"field\": \"campaignName\", \"operator\": \"CONTAINS\", \"value\": \"summer\"}].\n- \"field\": The field to filter on. Must match schema.\n- \"operator\": Must be one of these supported values: EQUALS,NOT_EQUALS,IN,NOT_IN,REGEXP_MATCH,NOT_REGEXP_MATCH,CONTAINS,NOT_CONTAINS,GREATER_THAN,GREATER_THAN_EQUALS,LESS_THAN,LESS_THAN_EQUALS.\n- \"value\": Can be a string, number, regex, or a list of strings.\n- Special Case: When a user specifies multiple string values for the CONTAINS operator, use the REGEX_MATCHES operator to combine them. Note that this should be a full regex match, not partial. For example, if the user says \"campaignName that contains 'summer' or 'spring'\", then use a REGEX_MATCHES operator with the pattern \".*(summer|spring).*\".\n",
            "type": "array",
            "items": {
              "title": "FilterItem",
              "type": "object",
              "properties": {
                "field": {
                  "title": "Field",
                  "description": "The field to filter on.",
                  "type": "string"
                },
                "operator": {
                  "title": "Operator",
                  "description": "The operator to use for filtering.",
                  "enum": [
                    "EQUALS",
                    "NOT_EQUALS",
                    "IN",
                    "NOT_IN",
                    "REGEXP_MATCH",
                    "NOT_REGEXP_MATCH",
                    "CONTAINS",
                    "NOT_CONTAINS",
                    "GREATER_THAN",
                    "GREATER_THAN_EQUALS",
                    "LESS_THAN",
                    "LESS_THAN_EQUALS"
                  ],
                  "type": "string"
                },
                "value": {
                  "title": "Value",
                  "description": "The value to compare against. Can be a string, number, boolean, or an array.",
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "integer"
                    },
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  ]
                }
              },
              "required": [
                "field",
                "operator",
                "value"
              ]
            }
          },
          "order_by": {
            "title": "Order By",
            "description": "A list of objects containing \"field\" and \"order\".\n- for example: [{\"field\": \"session\", \"order\": \"DESC\"},\"{\"field\": \"country\", \"order\": \"ASC\"}].\n- \"field\": The field to sort by. Must match schema.\n- \"order\": The order to sort by, must be one of \"ASC\", \"DESC\"\n- Order by is optional. Should be specified by the user if sorting is desired. For example, if the user says \"top 10 campaigns sorted by sessions,\" then sorting by \"sessions\" is required.\n",
            "type": "array",
            "items": {
              "title": "OrderByItem",
              "type": "object",
              "properties": {
                "field": {
                  "title": "Field",
                  "description": "The field to sort by.",
                  "type": "string"
                },
                "order": {
                  "title": "Order",
                  "description": "The order to sort by.",
                  "enum": [
                    "ASC",
                    "DESC"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "field",
                "order"
              ]
            }
          },
          "limit": {
            "title": "Limit",
            "description": "The maximum number of rows to return.\n- Defaults to 100.\n- Use only if specified by the user. For example, if the user says 'top 10'.\n- Do not use for aggregate results like 'total clicks'.\n",
            "type": "integer"
          },
          "compared_to": {
            "title": "Compared To",
            "description": "The date period to compare to. Must be one of 2 values: \"previous_period\" or \"previous_year\".\n- This is optional, user must say \"compared to\" to use this. Don't ever assume this.\n- Here are some how users might ask for this:\n    - \"this week compared to last week\" should be \"previous_period\".\n    - \"last week compared to previous week\" should be \"previous_period\".\n    - \"this month compared to last month\" should be \"previous_period\".     \n    - \"compared to same month last year\" should be \"previous_year\".\n",
            "enum": [
              "previous_period",
              "previous_year"
            ],
            "type": "string"
          }
        },
        "required": [
          "fields",
          "date_range"
        ]
      },
      "ChartInput": {
        "title": "ChartInput",
        "type": "object",
        "properties": {
          "chart_types": {
            "title": "Chart Types",
            "description": "The types of charts to create. Options: 'line', 'bar', 'scatter', 'pie', 'hist'.",
            "type": "array",
            "items": {}
          },
          "x_axis_data": {
            "title": "X Axis Data",
            "description": "The data for the x-axis.",
            "type": "array",
            "items": {}
          },
          "y_axis_data": {
            "title": "Y Axis Data",
            "description": "The data for the y-axis.",
            "type": "array",
            "items": {}
          },
          "x_title": {
            "title": "X Title",
            "description": "Optional: The title for the x-axis.",
            "type": "string"
          },
          "y_title": {
            "title": "Y Title",
            "description": "Optional: The title for the y-axis.",
            "type": "string"
          },
          "labels": {
            "title": "Labels",
            "description": "Optional: The labels for the legend. Each item is a label for a particular set of y-values. If not provided, the chart type is used as the label.",
            "type": "array",
            "items": {}
          },
          "chart_title": {
            "title": "Chart Title",
            "description": "Optional: The title for the chart.",
            "type": "string"
          }
        },
        "required": [
          "chart_types",
          "x_axis_data",
          "y_axis_data"
        ]
      }
    }
  }
}

GPT Marketing Assistant APIs

This is the GPT Marketing Assistant API documentation.

  • POST /v1/google_analytics_4google_analytics_4

    Call this function to retrieve data from Google Analytics 4 (GA4). You can query single, multiple or all accounts at once. If user didn't specify any account name, assume they want to query all accounts and don't specify the 'accounts' argument.

  • POST /v1/chartscharts

    Call this function to create charts. Don't call this function except if user says 'chart' or 'graph'.Supported chart types: 'line', 'bar', 'scatter', 'pie', 'hist'

원본 API 스키마
{
  "openapi": "3.1.0",
  "info": {
    "title": "GPT Marketing Assistant APIs",
    "description": "This is the GPT Marketing Assistant API documentation.",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://gpt.sphinxmind.com"
    }
  ],
  "paths": {
    "/v1/google_analytics_4": {
      "post": {
        "description": "Call this function to retrieve data from Google Analytics 4 (GA4). You can query single, multiple or all accounts at once. If user didn't specify any account name, assume they want to query all accounts and don't specify the 'accounts' argument.",
        "operationId": "google_analytics_4",
        "parameters": [],
        "deprecated": false,
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BaseGa4Input"
              }
            }
          },
          "required": true
        }
      }
    },
    "/v1/charts": {
      "post": {
        "description": "Call this function to create charts. Don't call this function except if user says 'chart' or 'graph'.Supported chart types: 'line', 'bar', 'scatter', 'pie', 'hist'",
        "operationId": "charts",
        "parameters": [],
        "deprecated": false,
        "x-openai-isConsequential": false,
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChartInput"
              }
            }
          },
          "required": true
        }
      }
    }
  },
  "components": {
    "schemas": {
      "BaseGa4Input": {
        "title": "BaseGa4Input",
        "type": "object",
        "properties": {
          "fields": {
            "title": "Fields",
            "description": "The fields to query. Adhere to the following guidelines:\n- Remain flexible. Users might request fields outside of this list below. Accept any field formatted in camel case or format it yourself.\n- Select just one field if a user doesn't specify multiple options. Don't add \"date\" in fields unless user asks for it.\n- Consider the following commonly used fields, but note again this list isn't exhaustive, and users might request fields outside of it:\nactiveUsers,addToCarts,advertiserAdClicks,advertiserAdCost,advertiserAdCostPerClick,advertiserAdCostPerConversion,advertiserAdImpressions,advertiserAdCtr,averagePurchaseRevenue,averageRevenuePerUser,averageSessionDuration,bounceRate,cartToViewRate,checkouts,conversions,purchases,engagedSessions,engagementRate,eventCount,eventCountPerUser,eventsPerSession,eventValue,firstTimePurchasers,itemListClickEvents,itemListViewEvents,itemRevenue,itemsAddedToCart,itemsCheckedOut,itemsClickedInList,itemsPurchased,itemsViewed,itemsViewedInList,itemViewEvents,newUsers,purchaseRevenue,purchaseToViewRate,roas,pageViews,pageViewsPerSession,pageViewsPerUser,scrolledUsers,conversionRate,sessions,sessionsPerUser,purchasers,revenue,totalUsers,returningUsers,transactions,transactionsPerPurchaser,userEngagementDuration,purchaseConversionRate,audienceName,brandingInterest,browser,city,contentGroup,continent,country,date,dateHour,dateHourMinute,day,dayOfWeek,dayOfWeekName,deviceCategory,deviceModel,eventName,firstSessionDate,firstUserCampaignName,fullPageUrl,hostName,hour,isConversionEvent,isoWeek,isoYear,isoYearIsoWeek,itemBrand,itemCategory,itemCategory2,itemCategory3,itemId,itemListName,itemName,landingPage,landingPagePlusQueryString,language,linkText,linkUrl,mobileDeviceBranding,mobileDeviceModel,month,newVsReturning,operatingSystem,pageLocation,pagePath,pagePathPlusQueryString,pageReferrer,pageTitle,percentScrolled,platform,platformDeviceCategory,region,screenResolution,searchTerm,campaignId,campaignName,channel,googleAdsAccountName,googleAdsAdGroupName,googleAdsAdNetworkType,googleAdsCampaignId,googleAdsCampaignType,googleAdsCustomerId,googleAdsKeyword,manualAdContent,manualTerm,medium,source,sourceMedium,sessionSourcePlatform,userId,streamName,transactionId,age,gender,videoTitle,videoUrl,currency,week,year,yearMonth,yearWeek,accountId,accountName\n",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "date_range": {
            "title": "Date Range",
            "description": "An object that should contain either \"date_preset\" or both \"start_date\" and \"end_date\".\n- For example: {\"date_preset\": \"last_7_days\"} or {\"start_date\": \"2020-01-01\", \"end_date\": \"2020-01-31\"} or {\"date_preset\": \"last_week\"}.\n- \"date_preset\": A predefined date range; must be one of these values: today,yesterday,this_week_sun_today,this_week_mon_today,last_week,last_3_weeks,last_week_sun_sat,last_week_mon_sun,this_month,last_month,last_3_months,last_6_months,this_quarter,last_7_days,last_14_days,last_30_days,last_60_days,last_90_days,this_year,last_year.\n- \"start_date\": The start date of the date range to query, format: YYYY-MM-DD. Optional if \"date_preset\" is provided.\n- \"end_date\": The end date of the date range to query, format: YYYY-MM-DD. Optional if \"date_preset\" is provided.\n- Here are some examples of how users might ask for date ranges:\n    - \"past 7 days\" should be {\"date_preset\": \"last_7_days\"}.\n    - \"last week\" should be {\"date_preset\": \"last_week\"}.\n    - \"last 3 weeks\" should be {\"date_preset\": \"last_3_weeks\"}.\n    - \"this month\" should be {\"date_preset\": \"this_month\"}.\n    - \"last 6 month\" should be {\"date_preset\": \"last_6_months\"}.\n    - \"June 2023\" should be {\"start_date\": \"2023-06-01\", \"end_date\": \"2023-06-30\"}.\n    - \"from Jan 2023 to June 2023\" should be {\"start_date\": \"2023-01-01\", \"end_date\": \"2023-06-30\"}.\n    - \"from 2023/01/01 to 2023/06/30\" should be {\"start_date\": \"2023-01-01\", \"end_date\": \"2023-06-30\"}.\n",
            "allOf": [
              {
                "title": "DateRange",
                "type": "object",
                "properties": {
                  "start_date": {
                    "title": "Start Date",
                    "description": "The start date of the date range to query, format: YYYY-MM-DD. Optional if date_preset is provided.",
                    "type": "string"
                  },
                  "end_date": {
                    "title": "End Date",
                    "description": "The end date of the date range to query, format: YYYY-MM-DD. Optional if date_preset is provided",
                    "type": "string"
                  },
                  "date_preset": {
                    "title": "Date Preset",
                    "description": "Predefined date ranges",
                    "enum": [
                      "today",
                      "yesterday",
                      "this_week_sun_today",
                      "this_week_mon_today",
                      "last_week",
                      "last_3_weeks",
                      "last_week_sun_sat",
                      "last_week_mon_sun",
                      "this_month",
                      "last_month",
                      "last_3_months",
                      "last_6_months",
                      "this_quarter",
                      "last_7_days",
                      "last_14_days",
                      "last_30_days",
                      "last_60_days",
                      "last_90_days",
                      "this_year",
                      "last_year"
                    ],
                    "type": "string"
                  }
                }
              }
            ]
          },
          "filters": {
            "title": "Filters",
            "description": "A list of filters to apply to the query.\n- Format: [{\"field\": \"campaignName\", \"operator\": \"CONTAINS\", \"value\": \"summer\"}].\n- \"field\": The field to filter on. Must match schema.\n- \"operator\": Must be one of these supported values: EQUALS,NOT_EQUALS,IN,NOT_IN,REGEXP_MATCH,NOT_REGEXP_MATCH,CONTAINS,NOT_CONTAINS,GREATER_THAN,GREATER_THAN_EQUALS,LESS_THAN,LESS_THAN_EQUALS.\n- \"value\": Can be a string, number, regex, or a list of strings.\n- Special Case: When a user specifies multiple string values for the CONTAINS operator, use the REGEX_MATCHES operator to combine them. Note that this should be a full regex match, not partial. For example, if the user says \"campaignName that contains 'summer' or 'spring'\", then use a REGEX_MATCHES operator with the pattern \".*(summer|spring).*\".\n",
            "type": "array",
            "items": {
              "title": "FilterItem",
              "type": "object",
              "properties": {
                "field": {
                  "title": "Field",
                  "description": "The field to filter on.",
                  "type": "string"
                },
                "operator": {
                  "title": "Operator",
                  "description": "The operator to use for filtering.",
                  "enum": [
                    "EQUALS",
                    "NOT_EQUALS",
                    "IN",
                    "NOT_IN",
                    "REGEXP_MATCH",
                    "NOT_REGEXP_MATCH",
                    "CONTAINS",
                    "NOT_CONTAINS",
                    "GREATER_THAN",
                    "GREATER_THAN_EQUALS",
                    "LESS_THAN",
                    "LESS_THAN_EQUALS"
                  ],
                  "type": "string"
                },
                "value": {
                  "title": "Value",
                  "description": "The value to compare against. Can be a string, number, boolean, or an array.",
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "integer"
                    },
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  ]
                }
              },
              "required": [
                "field",
                "operator",
                "value"
              ]
            }
          },
          "order_by": {
            "title": "Order By",
            "description": "A list of objects containing \"field\" and \"order\".\n- for example: [{\"field\": \"session\", \"order\": \"DESC\"},\"{\"field\": \"country\", \"order\": \"ASC\"}].\n- \"field\": The field to sort by. Must match schema.\n- \"order\": The order to sort by, must be one of \"ASC\", \"DESC\"\n- Order by is optional. Should be specified by the user if sorting is desired. For example, if the user says \"top 10 campaigns sorted by sessions,\" then sorting by \"sessions\" is required.\n",
            "type": "array",
            "items": {
              "title": "OrderByItem",
              "type": "object",
              "properties": {
                "field": {
                  "title": "Field",
                  "description": "The field to sort by.",
                  "type": "string"
                },
                "order": {
                  "title": "Order",
                  "description": "The order to sort by.",
                  "enum": [
                    "ASC",
                    "DESC"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "field",
                "order"
              ]
            }
          },
          "limit": {
            "title": "Limit",
            "description": "The maximum number of rows to return.\n- Defaults to 100.\n- Use only if specified by the user. For example, if the user says 'top 10'.\n- Do not use for aggregate results like 'total clicks'.\n",
            "type": "integer"
          },
          "compared_to": {
            "title": "Compared To",
            "description": "The date period to compare to. Must be one of 2 values: \"previous_period\" or \"previous_year\".\n- This is optional, user must say \"compared to\" to use this. Don't ever assume this.\n- Here are some how users might ask for this:\n    - \"this week compared to last week\" should be \"previous_period\".\n    - \"last week compared to previous week\" should be \"previous_period\".\n    - \"this month compared to last month\" should be \"previous_period\".     \n    - \"compared to same month last year\" should be \"previous_year\".\n",
            "enum": [
              "previous_period",
              "previous_year"
            ],
            "type": "string"
          }
        },
        "required": [
          "fields",
          "date_range"
        ]
      },
      "ChartInput": {
        "title": "ChartInput",
        "type": "object",
        "properties": {
          "chart_types": {
            "title": "Chart Types",
            "description": "The types of charts to create. Options: 'line', 'bar', 'scatter', 'pie', 'hist'.",
            "type": "array",
            "items": {}
          },
          "x_axis_data": {
            "title": "X Axis Data",
            "description": "The data for the x-axis.",
            "type": "array",
            "items": {}
          },
          "y_axis_data": {
            "title": "Y Axis Data",
            "description": "The data for the y-axis.",
            "type": "array",
            "items": {}
          },
          "x_title": {
            "title": "X Title",
            "description": "Optional: The title for the x-axis.",
            "type": "string"
          },
          "y_title": {
            "title": "Y Title",
            "description": "Optional: The title for the y-axis.",
            "type": "string"
          },
          "labels": {
            "title": "Labels",
            "description": "Optional: The labels for the legend. Each item is a label for a particular set of y-values. If not provided, the chart type is used as the label.",
            "type": "array",
            "items": {}
          },
          "chart_title": {
            "title": "Chart Title",
            "description": "Optional: The title for the chart.",
            "type": "string"
          }
        },
        "required": [
          "chart_types",
          "x_axis_data",
          "y_axis_data"
        ]
      }
    }
  }
}