{"openapi":"3.1.0","info":{"title":"smplkit Logging API","description":"API for the smplkit logging service.","version":"0.1.0"},"paths":{"/api/v1/loggers":{"get":{"tags":["Loggers"],"summary":"List Loggers","description":"List all loggers for the authenticated account. Optionally filter by managed status,\nservice, or last-seen time window.","operationId":"list_loggers","security":[{"HTTPBearer":[]}],"parameters":[{"name":"filter[managed]","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Filter[Managed]"}},{"name":"filter[service]","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter[Service]"}},{"name":"filter[last_seen]","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter[Last Seen]"}}],"responses":{"200":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LoggerListResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/loggers/{id}":{"get":{"tags":["Loggers"],"summary":"Get Logger","description":"Return a logger by its key.","operationId":"get_logger","security":[{"HTTPBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LoggerResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"put":{"tags":["Loggers"],"summary":"Update or Create Logger","description":"Create or update a logger (upsert). If the logger does not exist it is created.\nFields absent from the body are preserved on update; explicit null clears them.","operationId":"update_logger","security":[{"HTTPBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LoggerResponse"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LoggerResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Loggers"],"summary":"Delete Logger","description":"Delete a logger by its key.","operationId":"delete_logger","security":[{"HTTPBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/loggers/bulk":{"post":{"tags":["Loggers"],"summary":"Bulk Register Loggers","description":"Register loggers discovered by an SDK. Creates new loggers or updates source observations on existing ones.","operationId":"bulk_register_loggers","requestBody":{"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LoggerBulkRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LoggerBulkResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/log_groups":{"get":{"tags":["Log Groups"],"summary":"List Log Groups","description":"List all log groups for the authenticated account.","operationId":"list_log_groups","responses":{"200":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LogGroupListResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["Log Groups"],"summary":"Create Log Group","description":"Create a new log group. The caller provides the key in data.id, or it is auto-generated from name.","operationId":"create_log_group","requestBody":{"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LogGroupResponse"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LogGroupResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/log_groups/{id}":{"get":{"tags":["Log Groups"],"summary":"Get Log Group","description":"Return a log group by its key.","operationId":"get_log_group","security":[{"HTTPBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LogGroupResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"put":{"tags":["Log Groups"],"summary":"Update Log Group","description":"Replace a log group entirely.","operationId":"update_log_group","security":[{"HTTPBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"requestBody":{"required":true,"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LogGroupResponse"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LogGroupResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["Log Groups"],"summary":"Delete Log Group","description":"Delete a log group by its key.","operationId":"delete_log_group","security":[{"HTTPBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/loggers/{id}/sources":{"get":{"tags":["Logger Sources"],"summary":"List Logger Sources","description":"List all sources (service/environment observations) for a specific logger.","operationId":"list_logger_sources","security":[{"HTTPBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LoggerSourceListResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/logger_sources":{"get":{"tags":["Logger Sources"],"summary":"List All Logger Sources","description":"List all logger sources across all loggers. Optionally filter by environment or service.","operationId":"list_all_logger_sources","security":[{"HTTPBearer":[]}],"parameters":[{"name":"filter[environment]","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter[Environment]"}},{"name":"filter[service]","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter[Service]"}}],"responses":{"200":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/LoggerSourceListResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/services":{"get":{"tags":["Services"],"summary":"List Services","description":"Return the distinct service names observed across all logger sources for the account.","operationId":"list_services","responses":{"200":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ServiceListResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/usage":{"get":{"tags":["Usage"],"summary":"List Logging Usage","description":"Return current resource usage counts for the authenticated account.","operationId":"list_logging_usage","security":[{"HTTPBearer":[]}],"parameters":[{"name":"filter[period]","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter[Period]"}}],"responses":{"200":{"description":"Successful Response","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/UsageListResponse"}}}},"400":{"description":"Validation error or malformed request","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid authentication","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Resource not found","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"Error":{"properties":{"status":{"type":"string","title":"Status"},"title":{"type":"string","title":"Title"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"source":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source"}},"type":"object","required":["status","title"],"title":"Error","description":"Single JSON:API error object."},"ErrorResponse":{"properties":{"errors":{"items":{"$ref":"#/components/schemas/Error"},"type":"array","title":"Errors"}},"type":"object","required":["errors"],"title":"ErrorResponse","description":"JSON:API error response envelope."},"LogGroup":{"properties":{"name":{"type":"string","maxLength":255,"title":"Name"},"level":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Level"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"environments":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Environments"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","readOnly":true},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","readOnly":true}},"type":"object","required":["name"],"title":"LogGroup","example":{"created_at":"2026-04-01T10:00:00Z","environments":{"production":{"level":"ERROR"}},"level":"WARN","name":"Database Loggers","updated_at":"2026-04-01T10:00:00Z"}},"LogGroupListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/LogGroupResource"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"LogGroupListResponse"},"LogGroupResource":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"type":{"type":"string","const":"log_group","title":"Type"},"attributes":{"$ref":"#/components/schemas/LogGroup"}},"type":"object","required":["type","attributes"],"title":"LogGroupResource","example":{"attributes":{"created_at":"2026-04-01T10:00:00Z","environments":{"production":{"level":"ERROR"}},"level":"WARN","name":"Database Loggers","updated_at":"2026-04-01T10:00:00Z"},"id":"database-loggers","type":"log_group"}},"LogGroupResponse":{"properties":{"data":{"$ref":"#/components/schemas/LogGroupResource"}},"type":"object","required":["data"],"title":"LogGroupResponse"},"Logger":{"properties":{"name":{"type":"string","maxLength":255,"title":"Name"},"level":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Level"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group"},"managed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Managed"},"sources":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Sources","readOnly":true},"environments":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Environments"},"effective_levels":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Effective Levels","readOnly":true},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","readOnly":true},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","readOnly":true}},"type":"object","required":["name"],"title":"Logger","example":{"created_at":"2026-04-01T10:00:00Z","environments":{"production":{"level":"WARN"},"staging":{"level":"DEBUG"}},"group":"database-loggers","level":"DEBUG","managed":true,"name":"SQL Logger","updated_at":"2026-04-01T10:00:00Z"}},"LoggerBulkItem":{"properties":{"id":{"type":"string","title":"Id","description":"Normalized logger name"},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level","description":"The explicitly-set level on this logger. Null if inherited."},"resolved_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved Level","description":"The effective level after framework inheritance. Never null in compliant SDKs."},"service":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service","description":"Service name that discovered this logger"},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment","description":"Environment where this logger was observed"}},"type":"object","required":["id"],"title":"LoggerBulkItem","example":{"environment":"production","id":"sqlalchemy.engine","level":"WARN","resolved_level":"WARN","service":"api-gateway"}},"LoggerBulkRequest":{"properties":{"loggers":{"items":{"$ref":"#/components/schemas/LoggerBulkItem"},"type":"array","title":"Loggers"}},"type":"object","required":["loggers"],"title":"LoggerBulkRequest","example":{"loggers":[{"environment":"production","id":"sqlalchemy.engine","level":"WARN","service":"api-gateway"},{"environment":"production","id":"stripe","level":"INFO","service":"api-gateway"}]}},"LoggerBulkResponse":{"properties":{"registered":{"type":"integer","title":"Registered"}},"type":"object","required":["registered"],"title":"LoggerBulkResponse","example":{"registered":5}},"LoggerListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/LoggerResource"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"LoggerListResponse"},"LoggerResource":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"type":{"type":"string","const":"logger","title":"Type"},"attributes":{"$ref":"#/components/schemas/Logger"}},"type":"object","required":["type","attributes"],"title":"LoggerResource","example":{"attributes":{"created_at":"2026-04-01T10:00:00Z","environments":{"production":{"level":"WARN"},"staging":{"level":"DEBUG"}},"group":"database-loggers","level":"DEBUG","managed":true,"name":"SQL Logger","updated_at":"2026-04-01T10:00:00Z"},"id":"com.example.sql","type":"logger"}},"LoggerResponse":{"properties":{"data":{"$ref":"#/components/schemas/LoggerResource"}},"type":"object","required":["data"],"title":"LoggerResponse"},"LoggerSource":{"properties":{"service":{"type":"string","title":"Service","readOnly":true},"environment":{"type":"string","title":"Environment","readOnly":true},"level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Level","readOnly":true},"resolved_level":{"type":"string","title":"Resolved Level","readOnly":true},"first_observed":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Observed","readOnly":true},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen","readOnly":true},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","readOnly":true},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At","readOnly":true}},"type":"object","title":"LoggerSource","example":{"created_at":"2026-04-01T10:00:00Z","environment":"production","first_observed":"2026-04-01T10:00:00Z","last_seen":"2026-04-11T15:30:00Z","resolved_level":"WARN","service":"api-gateway","updated_at":"2026-04-11T15:30:00Z"}},"LoggerSourceListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/LoggerSourceResource"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"LoggerSourceListResponse"},"LoggerSourceResource":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"type":{"type":"string","const":"logger_source","title":"Type"},"attributes":{"$ref":"#/components/schemas/LoggerSource"}},"type":"object","required":["type","attributes"],"title":"LoggerSourceResource","example":{"attributes":{"created_at":"2026-04-01T10:00:00Z","environment":"production","first_observed":"2026-04-01T10:00:00Z","last_seen":"2026-04-11T15:30:00Z","resolved_level":"WARN","service":"api-gateway","updated_at":"2026-04-11T15:30:00Z"},"id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","type":"logger_source"}},"ServiceAttributes":{"properties":{},"type":"object","title":"ServiceAttributes"},"ServiceListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ServiceResource"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"ServiceListResponse"},"ServiceResource":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","const":"service","title":"Type"},"attributes":{"$ref":"#/components/schemas/ServiceAttributes","default":{}}},"type":"object","required":["id","type"],"title":"ServiceResource","example":{"attributes":{},"id":"api-gateway","type":"service"}},"UsageAttributes":{"properties":{"limit_key":{"type":"string","title":"Limit Key"},"period":{"type":"string","title":"Period"},"value":{"type":"integer","title":"Value"}},"type":"object","required":["limit_key","period","value"],"title":"UsageAttributes"},"UsageListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UsageResource"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"UsageListResponse","example":{"data":[{"attributes":{"limit_key":"logging.managed_loggers","period":"current","value":8},"id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","type":"usage"},{"attributes":{"limit_key":"logging.groups","period":"current","value":2},"id":"b2c3d4e5-f6a7-8901-bcde-f12345678901","type":"usage"}]}},"UsageResource":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","const":"usage","title":"Type"},"attributes":{"$ref":"#/components/schemas/UsageAttributes"}},"type":"object","required":["id","type","attributes"],"title":"UsageResource","example":{"attributes":{"limit_key":"logging.managed_loggers","period":"current","value":8},"id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","type":"usage"}}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}},"tags":[{"name":"Log Groups"},{"name":"Logger Sources"},{"name":"Loggers"},{"name":"Services"}]}