{"openapi":"3.1.0","info":{"title":"Apitally API","version":"1.0.0"},"servers":[{"url":"https://api.apitally.io"}],"paths":{"/v1/apps":{"get":{"tags":["Apps"],"summary":"List Apps","description":"List apps and their environments.","operationId":"list_apps_v1_apps_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAppsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/apps/{app_id}/consumers":{"get":{"tags":["Consumers"],"summary":"List Consumers","description":"List API consumers for an app. Ordered by ID (descending). With pagination.","operationId":"list_consumers_v1_apps__app_id__consumers_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"App ID","title":"App Id"},"description":"App ID"},{"name":"requests_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter to consumers that have made requests since the given date and time in ISO 8601 format, if given.","examples":["2025-05-14T00:00:00Z"],"title":"Requests Since"},"description":"Filter to consumers that have made requests since the given date and time in ISO 8601 format, if given."},{"name":"next_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"description":"Token to fetch the next page of consumers, as returned by a previous request.","title":"Next Token"},"description":"Token to fetch the next page of consumers, as returned by a previous request."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Maximum number of consumers to return.","default":100,"title":"Limit"},"description":"Maximum number of consumers to return."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListConsumersResponse"}}}},"404":{"description":"App Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/apps/{app_id}/endpoints":{"get":{"tags":["Endpoints"],"summary":"List Endpoints","description":"List API endpoints for an app. Ordered by path and method.","operationId":"list_endpoints_v1_apps__app_id__endpoints_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"App ID","title":"App Id"},"description":"App ID"},{"name":"app_env_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Filter to environment ID, if provided.","title":"App Env Id"},"description":"Filter to environment ID, if provided."},{"name":"method","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Filter to HTTP method(s), comma-separated.","examples":["GET,POST"],"title":"Method"},"description":"Filter to HTTP method(s), comma-separated."},{"name":"path","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"description":"Filter to path pattern, supports wildcards (*).","examples":["/api/v1/*"],"title":"Path"},"description":"Filter to path pattern, supports wildcards (*)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEndpointsResponse"}}}},"404":{"description":"App Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/apps/{app_id}/traffic":{"get":{"tags":["Metrics"],"summary":"Get Traffic","description":"Get API traffic data for an app. Grouped by hour or by day. With pagination. Traffic to endpoints that have been excluded in the dashboard is excluded here as well.","operationId":"get_traffic_v1_apps__app_id__traffic_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"App ID","title":"App Id"},"description":"App ID"},{"name":"app_env_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Filter to environment ID, if provided.","title":"App Env Id"},"description":"Filter to environment ID, if provided."},{"name":"consumer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Filter to consumer ID, if provided.","title":"Consumer Id"},"description":"Filter to consumer ID, if provided."},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Start date and time in ISO 8601 format. Defaults to 24 hours ago if `interval` is \"hour\", or 30 days ago if `interval` is \"day\". Will be rounded down to the beginning of the interval (hour or day).","examples":["2025-05-14T00:00:00Z"],"title":"Start"},"description":"Start date and time in ISO 8601 format. Defaults to 24 hours ago if `interval` is \"hour\", or 30 days ago if `interval` is \"day\". Will be rounded down to the beginning of the interval (hour or day)."},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"End date and time in ISO 8601 format. Defaults to now.","examples":["2025-05-15T00:00:00Z"],"title":"End"},"description":"End date and time in ISO 8601 format. Defaults to now."},{"name":"interval","in":"query","required":false,"schema":{"anyOf":[{"enum":["hour","day"],"type":"string"},{"type":"null"}],"description":"Whether to group by day or by hour.","default":"hour","title":"Interval"},"description":"Whether to group by day or by hour."},{"name":"timezone","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Timezone to use for intervals and to interpret `start` and `end` if given without offset. Defaults to UTC.","examples":["America/New_York"],"title":"Timezone"},"description":"Timezone to use for intervals and to interpret `start` and `end` if given without offset. Defaults to UTC."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Maximum number of records to return per page","default":100,"title":"Limit"},"description":"Maximum number of records to return per page"},{"name":"next_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"description":"Token to fetch the next page of records, as returned by a previous request.","title":"Next Token"},"description":"Token to fetch the next page of records, as returned by a previous request."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTrafficResponse"}}}},"404":{"description":"App Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/apps/{app_id}/request-logs":{"get":{"tags":["Request logs"],"summary":"Get Request Logs","description":"Get request log data for an app. With pagination. Requests to endpoints that have been excluded in the dashboard are excluded here as well.","operationId":"get_request_logs_v1_apps__app_id__request_logs_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"App ID","title":"App Id"},"description":"App ID"},{"name":"app_env_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Filter to environment ID, if provided.","title":"App Env Id"},"description":"Filter to environment ID, if provided."},{"name":"consumer_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Filter to consumer ID, if provided.","title":"Consumer Id"},"description":"Filter to consumer ID, if provided."},{"name":"method","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Filter to HTTP method(s), comma-separated.","examples":["GET,POST"],"title":"Method"},"description":"Filter to HTTP method(s), comma-separated."},{"name":"path","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"description":"Filter to path pattern, supports wildcards (*).","examples":["/api/v1/*"],"title":"Path"},"description":"Filter to path pattern, supports wildcards (*)."},{"name":"status_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128,"pattern":"^(?:\\d{3}|\\dxx)(?:,(?:\\d{3}|\\dxx))*$"},{"type":"null"}],"description":"Filter to HTTP status code(s), comma-separated. Can include code classes (e.g., '4xx').","examples":["2xx,400"],"title":"Status Code"},"description":"Filter to HTTP status code(s), comma-separated. Can include code classes (e.g., '4xx')."},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Start date and time in ISO 8601 format. Defaults to 24 hours ago.","examples":["2025-05-14T00:00:00Z"],"title":"Start"},"description":"Start date and time in ISO 8601 format. Defaults to 24 hours ago."},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"End date and time in ISO 8601 format. Defaults to now.","examples":["2025-05-15T00:00:00Z"],"title":"End"},"description":"End date and time in ISO 8601 format. Defaults to now."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Maximum number of records to return per page.","default":100,"title":"Limit"},"description":"Maximum number of records to return per page."},{"name":"next_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}],"description":"Token to fetch the next page of records, as returned by a previous request.","title":"Next Token"},"description":"Token to fetch the next page of records, as returned by a previous request."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRequestLogsResponse"}}}},"404":{"description":"App Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/apps/{app_id}/request-logs/{request_uuid}":{"get":{"tags":["Request logs"],"summary":"Get Request Details","description":"Get detailed information about a specific request, including headers, body, application logs, and spans.","operationId":"get_request_details_v1_apps__app_id__request_logs__request_uuid__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"App ID","title":"App Id"},"description":"App ID"},{"name":"request_uuid","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Request UUID","title":"Request Uuid"},"description":"Request UUID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRequestDetailsResponse"}}}},"404":{"description":"App or request log not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/team":{"get":{"tags":["Team"],"summary":"Get Team","description":"Get the authenticated team.","operationId":"get_team_v1_team_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTeamResponse"}}}}},"security":[{"APIKeyHeader":[]}]}}},"components":{"schemas":{"AppEnvItem":{"properties":{"id":{"type":"integer","title":"Id","description":"Environment ID","examples":[1,2]},"name":{"type":"string","title":"Name","description":"Environment name","examples":["prod","dev"]},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Date and time of environment creation."},"last_sync_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Sync At","description":"Date and time of the last sync of this environment."}},"type":"object","required":["id","name","created_at","last_sync_at"],"title":"AppEnvItem"},"AppItem":{"properties":{"id":{"type":"integer","title":"Id","description":"App ID","examples":[1,2]},"name":{"type":"string","title":"Name","description":"App name","examples":["My API"]},"framework":{"type":"string","title":"Framework","description":"Framework","examples":["FastAPI","Express"]},"client_id":{"type":"string","format":"uuid","title":"Client Id","description":"Client ID"},"envs":{"items":{"$ref":"#/components/schemas/AppEnvItem"},"type":"array","title":"Envs","description":"List of environments."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Date and time of app creation."}},"type":"object","required":["id","name","framework","client_id","envs","created_at"],"title":"AppItem"},"ApplicationLogItem":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"Timestamp of the log entry"},"message":{"type":"string","title":"Message","description":"Log message"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level","description":"Log level","examples":["INFO","ERROR"]},"logger":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logger","description":"Logger name"},"file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File","description":"Source file name"},"line":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Line","description":"Source file line number"}},"type":"object","required":["timestamp","message","level","logger","file","line"],"title":"ApplicationLogItem"},"ConsumerGroupItem":{"properties":{"id":{"type":"integer","title":"Id","description":"Consumer group ID","examples":[1,2]},"name":{"type":"string","title":"Name","description":"Consumer group name","examples":["Admin","User"]}},"type":"object","required":["id","name"],"title":"ConsumerGroupItem"},"ConsumerItem":{"properties":{"id":{"type":"integer","title":"Id","description":"Consumer ID","examples":[1]},"identifier":{"type":"string","title":"Identifier","description":"Consumer identifier","examples":["user-123"]},"name":{"type":"string","title":"Name","description":"Consumer name","examples":["John Doe"]},"group":{"anyOf":[{"$ref":"#/components/schemas/ConsumerGroupItem"},{"type":"null"}],"description":"Consumer group, if applicable."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Date and time of consumer creation, which is when they made their first request."},"last_request_at":{"type":"string","format":"date-time","title":"Last Request At","description":"Date and time of the last request made by the consumer."}},"type":"object","required":["id","identifier","name","group","created_at","last_request_at"],"title":"ConsumerItem"},"EndpointItem":{"properties":{"id":{"type":"integer","title":"Id","description":"Endpoint ID","examples":[1,2]},"method":{"type":"string","title":"Method","description":"HTTP method","examples":["GET","POST"]},"path":{"type":"string","title":"Path","description":"Endpoint path","examples":["/v1/users","/v1/users/{user_id}"]}},"type":"object","required":["id","method","path"],"title":"EndpointItem"},"ExceptionItem":{"properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"Exception type","examples":["KeyError","RuntimeError"]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Exception message"},"stacktrace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stacktrace","description":"Exception stacktrace"},"sentry_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sentry Event Id","description":"Sentry event ID, if captured"}},"type":"object","required":["type","message","stacktrace","sentry_event_id"],"title":"ExceptionItem"},"GetRequestDetailsResponse":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"Timestamp of the request"},"request_uuid":{"type":"string","format":"uuid","title":"Request Uuid","description":"Unique identifier for the request"},"env":{"type":"string","title":"Env","description":"Environment","examples":["prod"]},"consumer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consumer","description":"Consumer identifier","examples":["user-123"]},"method":{"type":"string","title":"Method","description":"HTTP method","examples":["GET"]},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path","description":"Request path","examples":["/v1/users/{user_id}"]},"url":{"type":"string","title":"Url","description":"Request URL","examples":["https://api.example.com/v1/users/1"]},"status_code":{"type":"integer","title":"Status Code","description":"HTTP response status code","examples":[200]},"request_size_bytes":{"type":"integer","title":"Request Size Bytes","description":"Size of the request in bytes"},"response_size_bytes":{"type":"integer","title":"Response Size Bytes","description":"Size of the response in bytes"},"response_time_ms":{"type":"integer","title":"Response Time Ms","description":"Response time in milliseconds"},"client_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Ip","description":"Client IP address","examples":["203.45.123.67"]},"client_country_iso_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Country Iso Code","description":"ISO code of the client's country based on the IP address","examples":["US"]},"request_headers":{"items":{"prefixItems":[{"type":"string"},{"type":"string"}],"type":"array","maxItems":2,"minItems":2},"type":"array","title":"Request Headers","description":"Request headers as name-value pairs"},"response_headers":{"items":{"prefixItems":[{"type":"string"},{"type":"string"}],"type":"array","maxItems":2,"minItems":2},"type":"array","title":"Response Headers","description":"Response headers as name-value pairs"},"request_body_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Body Json","description":"Request body as a JSON string, if applicable"},"response_body_json":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Body Json","description":"Response body as a JSON string, if applicable"},"trace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trace Id","description":"Trace ID as a 32-character hex string"},"exception":{"anyOf":[{"$ref":"#/components/schemas/ExceptionItem"},{"type":"null"}],"description":"Exception details, if an error occurred"},"logs":{"items":{"$ref":"#/components/schemas/ApplicationLogItem"},"type":"array","title":"Logs","description":"Application log entries associated with this request"},"spans":{"items":{"$ref":"#/components/schemas/SpanItem"},"type":"array","title":"Spans","description":"Spans associated with this request"}},"type":"object","required":["timestamp","request_uuid","env","consumer","method","path","url","status_code","request_size_bytes","response_size_bytes","response_time_ms","client_ip","client_country_iso_code","request_headers","response_headers","request_body_json","response_body_json","trace_id","exception","logs","spans"],"title":"GetRequestDetailsResponse"},"GetRequestLogsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/RequestLogItem"},"type":"array","title":"Data","description":"List of request log items."},"has_more":{"type":"boolean","title":"Has More","description":"Whether there are more records to fetch."},"next_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Token","description":"Token to fetch the next page of records, if there are more."}},"type":"object","required":["data","has_more","next_token"],"title":"GetRequestLogsResponse"},"GetTeamResponse":{"properties":{"id":{"type":"integer","title":"Id","description":"Team ID","examples":[1]},"name":{"type":"string","title":"Name","description":"Team name","examples":["My Team"]}},"type":"object","required":["id","name"],"title":"GetTeamResponse"},"GetTrafficResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TrafficItem"},"type":"array","title":"Data","description":"List of traffic data."},"has_more":{"type":"boolean","title":"Has More","description":"Whether there are more records to fetch."},"next_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Token","description":"Token to fetch the next page of records, if there are more."}},"type":"object","required":["data","has_more","next_token"],"title":"GetTrafficResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ListAppsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AppItem"},"type":"array","title":"Data","description":"List of apps"}},"type":"object","required":["data"],"title":"ListAppsResponse"},"ListConsumersResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ConsumerItem"},"type":"array","title":"Data","description":"List of consumers."},"has_more":{"type":"boolean","title":"Has More","description":"Whether there are more consumers to list."},"next_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Token","description":"Token to fetch the next page of consumers, if there are more."}},"type":"object","required":["data","has_more","next_token"],"title":"ListConsumersResponse"},"ListEndpointsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/EndpointItem"},"type":"array","title":"Data","description":"List of endpoints."}},"type":"object","required":["data"],"title":"ListEndpointsResponse"},"RequestLogItem":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"Timestamp of the request"},"request_uuid":{"type":"string","format":"uuid","title":"Request Uuid","description":"Unique identifier for the request"},"env":{"type":"string","title":"Env","description":"Environment","examples":["prod"]},"consumer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Consumer","description":"Consumer identifier","examples":["user-123"]},"method":{"type":"string","title":"Method","description":"HTTP method","examples":["GET"]},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path","description":"Request path","examples":["/v1/users/{user_id}"]},"url":{"type":"string","title":"Url","description":"Request URL","examples":["https://api.example.com/v1/users/1"]},"status_code":{"type":"integer","title":"Status Code","description":"HTTP response status code","examples":[200]},"request_size_bytes":{"type":"integer","title":"Request Size Bytes","description":"Size of the request in bytes"},"response_size_bytes":{"type":"integer","title":"Response Size Bytes","description":"Size of the response in bytes"},"response_time_ms":{"type":"integer","title":"Response Time Ms","description":"Response time in milliseconds"},"client_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Ip","description":"Client IP address","examples":["203.45.123.67"]},"client_country_iso_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Country Iso Code","description":"ISO code of the client's country based on the IP address","examples":["US"]}},"type":"object","required":["timestamp","request_uuid","env","consumer","method","path","url","status_code","request_size_bytes","response_size_bytes","response_time_ms","client_ip","client_country_iso_code"],"title":"RequestLogItem"},"SpanItem":{"properties":{"span_id":{"type":"string","title":"Span Id","description":"Span ID as a hex string"},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Parent span ID as a hex string"},"name":{"type":"string","title":"Name","description":"Span name"},"kind":{"type":"string","title":"Kind","description":"Span kind","examples":["CLIENT","SERVER"]},"start_time_ns":{"type":"integer","title":"Start Time Ns","description":"Start time as Unix timestamp in nanoseconds"},"end_time_ns":{"type":"integer","title":"End Time Ns","description":"End time as Unix timestamp in nanoseconds"},"duration_ns":{"type":"integer","title":"Duration Ns","description":"Duration in nanoseconds"},"status":{"type":"string","title":"Status","description":"Span status","examples":["OK","ERROR","UNSET"]},"attributes":{"additionalProperties":{"type":"string"},"type":"object","title":"Attributes","description":"Span attributes"}},"type":"object","required":["span_id","parent_span_id","name","kind","start_time_ns","end_time_ns","duration_ns","status","attributes"],"title":"SpanItem"},"TrafficItem":{"properties":{"period_start":{"type":"string","format":"date-time","title":"Period Start","description":"Start of the period in ISO 8601 format with timezone offset."},"period_end":{"type":"string","format":"date-time","title":"Period End","description":"End of the period in ISO 8601 format with timezone offset."},"requests":{"type":"integer","title":"Requests","description":"Number of requests.","examples":[123]},"bytes_received":{"type":"integer","title":"Bytes Received","description":"Number of bytes received."},"bytes_sent":{"type":"integer","title":"Bytes Sent","description":"Number of bytes sent."}},"type":"object","required":["period_start","period_end","requests","bytes_received","bytes_sent"],"title":"TrafficItem"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"Api-Key"}}}}